Passer au contenu

Comment autoriser explicitement les chargements de fichiers qu'une règle AWS WAF bloque sans exclure la règle ?

Lecture de 6 minute(s)
0

Je souhaite permettre aux utilisateurs de charger des fichiers en utilisant des extensions de fichier spécifiques sans avoir à bloquer la règle de configuration AWS WAF actuelle.

Brève description

Le contenu du téléchargement de fichiers HTTP est généralement de l'un des types suivants :

  • Données du formulaire : Données envoyées à partir de formulaires de sites Web vers des API dans le cadre de données de formulaire en plusieurs parties.
  • Données binaires : Un fichier qui n'est pas une charge utile de texte. Le fichier binaire peut être un fichier JPEG, un fichier GZip ou un fichier PDF.

Pour découvrir pourquoi AWS WAF bloque une requête POST, consultez les règles courantes qui bloquent les téléchargements de fichiers. Si aucune règle courante ne bloque le téléchargement, passez en revue les options supplémentaires permettant d'autoriser les fichiers bloqués.

Les règles suivantes bloquent généralement les téléchargements de fichiers :

  • CrossSiteScripting_BODY
  • SQLi_BODY
  • SizeRestrictions_BODY
  • Règles personnalisées qui évaluent le BODY de la requête

Résolution

Déterminez quelle règle bloque les téléchargements de fichiers

Procédez comme suit pour déterminer la règle qui bloque le téléchargement du fichier :

1.    Ouvrez la console AWS WAF.

2.    Passez en revue les exemples de requêtes Web. Les requêtes échantillonnées contiennent à la fois des informations sur la règle qui bloque la demande et les composants de la requête HTTP.

3.    Sur la page Vue d'ensemble, sous Règle à l'intérieur du groupe de règles, recherchez les composants de la requête HTTP. Les composants ressemblent aux exemples suivants :

Règle à l'intérieur du groupe de règles

awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body

Demande

`POST /upload`  
`User-Agent: PostmanRuntime/7.30.0 Accept: */* Host: example.amazonaws.com Connection: keep-alive Content-Type: multipart/form-data; boundary=--------------------------421232031360350156757252 Content-Length: 4060737 `

4.    Consultez les journaux complets d'AWS WAF pour terminatingRuleMatchDetails.

Remarque : Le champ terminatingRuleMatchDetails est renseigné uniquement pour les attaques SQLi_BODY et CrossSiteScripting_BODY.

Identifier le type de contenu des données POST

Pour identifier le type de contenu, consultez l'en-tête HTTP dans vos données POST pour connaître le type de contenu. Dans l'exemple précédent, le type de contenu est plusieurs parties/données de formulaire.

Contenu des données de formulaire 

Pour le contenu de données de formulaire dont la valeur d'en-tête est composée de plusieurs parties/données de formulaire, procédez comme suit :

1.    Ouvrez la console AWS WAF.

2.    Dans le volet de navigation, sous AWS WAF, sélectionnez ACL Web.
**Remarque :**La sélection par défaut pour la région est USA Est (Virginie du Nord). Choisissez la région AWS dans laquelle vous avez créé votre ACL Web. Choisissez Global si votre ACL Web est configurée pour Amazon CloudFront.

3.    Choisissez votre ACL Web.

4.    Dans l’onglet Règles, choisissez Ajouter des règles, puis choisissez Ajouter mes propres règles et groupes de règles.

5.    Sur l'écran Ajouter une règle, sous Type de règle, choisissez Générateur de règles.
Dans Nom, saisissez un nom pour identifier cette règle.
Dans Type, sélectionnez Règle régulière.
Dans S’il s’agit d’une requête, sélectionnez correspond à l'instruction.
Dans Inspecter, sélectionnez Corps.
Dans Type de contenu, sélectionnez JSON.
Dans Étendue de la correspondance JSON, sélectionnez Valeurs.
Pour savoir comment AWS WAF doit traiter la demande si le code JSON dans le corps de la demande n'est pas valide, choisissez l'option qui vous convient.
Dans Contenu à inspecter, sélectionnez Contenu JSON complet.
Dans Type de correspondance, sélectionnez Correspond à l'expression régulière.
Dans Expression régulière, collez l'exemple de modèle regex suivant :

(?:.pdf|.doc|.docx|.ppt)

(Facultatif) Pour la transformation de ** texte**, choisissez une transformation de texte ou ** Aucune**. Pour plus d'informations, consultez la section Transformations de texte.
Dans Gestion des surtailles, choisissez l'option adaptée à votre configuration. Pour plus d'informations, consultez la section Gestion des composants de requêtes Web surdimensionnés dans AWS WAF.
Dans Action, sélectionnez Autoriser. Pour plus d'informations, consultez la section Action sur les règles.

6.    Choisissez Ajouter une règle.

  1. Pour ** Définir la priorité de la règle**, sélectionnez votre règle et déplacez-la vers un niveau de priorité supérieur à celui de la règle qui bloque la demande. AWS WAF évalue les règles en fonction de la priorité définie. Pour plus d'informations, voir Ordre de traitement des règles et des groupes de règles dans une ACL Web.

8.    Choisissez Enregistrer. Assurez-vous que les règles fonctionnent comme prévu.

Contenu de données binaires

Pour le contenu de données binaires dont la valeur d'en-tête est similaire à application/pdf ou à application/ppt, procédez comme suit :

1.    Ouvrez la console AWS WAF.

2.    Dans le volet de navigation, sous AWS WAF, sélectionnez ACL Web.
Remarque : La sélection par défaut pour la région est USA Est (Virginie du Nord). Choisissez la région AWS dans laquelle vous avez créé votre ACL Web. Choisissez Global si votre ACL Web est configurée pour Amazon CloudFront.

3.    Choisissez votre ACL Web.

4.    Dans l'onglet Règles, choisissez Ajouter des règles, puis choisissez Ajouter mes propres règles et groupes de règles.

5.    Sur l'écran Ajouter une règle, sous Type de règle, choisissez Générateur de règles.
Dans Nom, entrez un nom pour identifier la règle.
Dans Type, sélectionnez Règle régulière.
Dans S’il s’agit d’une requête, sélectionnez correspond à l'instruction.
Dans Inspecter, sélectionnez En-tête unique.
Dans Nom du champ d'en-tête, entrez Type de contenu.
Dans Type de correspondance, sélectionnez Correspond à l'expression régulière.
Dans Expression régulière, collez l'exemple de modèle regex suivant :

(?:pdf|jpeg)

(Facultatif) Pour la transformation de ** texte**, choisissez une transformation de texte ou Aucune. Pour plus d'informations, consultez la section Transformations de texte.
Dans Action, sélectionnez Autoriser. Pour plus d'informations, consultez la section Action sur les règles.

6.    Choisissez Ajouter une règle.

  1. Pour ** Définir la priorité de la règle**, sélectionnez votre règle et déplacez-la vers un niveau de priorité supérieur à celui de la règle qui bloque la demande. AWS WAF évalue les règles en fonction de la priorité définie. Pour plus d'informations, voir Ordre de traitement des règles et des groupes de règles dans une ACL Web.

8.    Choisissez Enregistrer. Assurez-vous que la règle fonctionne comme prévu.

Remarque : Pour restreindre la règle à un chemin d'URI de téléchargement spécifique, utilisez une instruction AND dans la règle Web ACL.

Informations connexes

Comment activer la journalisation AWS WAF et envoyer des journaux à CloudWatch, Amazon S3 ou Kinesis Data Firehose ?

AWS OFFICIELA mis à jour il y a 3 ans