Comment autoriser explicitement les télé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 télé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, choisissez Web ACLs.
**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 cette règle.
Pour Type, choisissez Règle normale.
Pour Si une demande, choisissez correspond à l'instruction.
Pour Inspecter, choisissez Corps.
Pour le type de contenu, choisissez JSON.
Pour l'étendue de la correspondance JSON, choisissez 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.
Pour le contenu à inspecter, choisissez Contenu JSON complet.
Pour le type de correspondance, choisissez Correspond à l'expression régulière.
Pour une 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.
Pour la gestion des surtailles, choisissez l'option adaptée à votre configuration. Pour plus d'informations, consultez Gestion des composants de requêtes Web surdimensionnés dans AWS WAF.
Pour Action, choisissez Autoriser. Pour plus d'informations, consultez la section Action sur les règles.

6.    Choisissez Ajouter une règle.

7.    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, choisissez Web ACLs.
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.
Pour Type, choisissez Règle normale.
Pour Si une demande, choisissez correspond à l'instruction.
Pour Inspecter, choisissez En-tête unique.
Pour le nom du champ d'en-tête, entrez Type de contenu.
Pour le type de correspondance, choisissez Correspond à l'expression régulière.
Pour une 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.
Pour Action, choisissez Autoriser. Pour plus d'informations, consultez la section Action sur les règles.

6.    Choisissez Ajouter une règle.

7.    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 OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois