Ajuster les règles WAF Google Cloud Armor

Règles préconfigurées

Les règles préconfigurées Google Cloud Armor sont des règles complexes de pare-feu d'application Web (WAF, web application firewall) composées de dizaines de signatures, qui sont compilées à partir des normes Open Source. Google propose ces règles en l'état. Elles permettent à Google Cloud Armor d'évaluer des dizaines de signatures de trafic distinctes en se référant à des règles bien nommées, plutôt que de vous obliger à définir chaque signature manuellement.

Le tableau suivant contient une liste complète des règles WAF préconfigurées pouvant être utilisées dans une stratégie de sécurité Google Cloud Armor. La source des règles est l'ensemble de règles de base ModSecurity 3.0.2 (CRS).

Nom de la règle Google Cloud Armor Nom de la règle ModSecurity État actuel
sqli-stable Injection SQL Synchronisée avec sqli-canary
sqli-canary Injection SQL Le plus récent
xss-stable Script intersites Synchronisée avec xss-canary
xss-canary Script intersites Le plus récent
lfi-stable Inclusion de fichiers locaux Synchronisée avec lfi-canary
lfi-canary Inclusion de fichiers locaux Le plus récent
rfi-stable Inclusion de fichiers distants Synchronisée avec rfi-canary
rfi-canary Inclusion de fichiers distants Le plus récent
rce-stable Exécution de code à distance Synchronisée avec rce-canary
rce-canary Exécution de code à distance Le plus récent
methodenforcement-stable Application de la méthode (aperçu public) Synchronisée avec methodenforcement-canary
methodenforcement-canary Application de la méthode (aperçu public) Le plus récent
scannerdetection-stable Détection du scanner Synchronisée avec scannerdetection-canary
scannerdetection-canary Détection du scanner Le plus récent
protocolattack-stable Attaque de protocole Synchronisée avec protocolattack-canary
protocolattack-canary Attaque de protocole Le plus récent
php-stable Attaque par injection PHP Synchronisée avec php-canary
php-canary Attaque par injection PHP Le plus récent
sessionfixation-stable Attaque de réparation de session Synchronisée avec sessionfixation-canary
sessionfixation-canary Attaque de réparation de session Le plus récent

Chaque règle préconfigurée se compose de plusieurs signatures. Les requêtes entrantes sont évaluées par rapport aux règles préconfigurées. Une requête correspond à une règle préconfigurée si elle correspond à l'une des signatures associées à la règle préconfigurée. Une correspondance est établie lorsque la commande evaluatePreconfiguredExpr() renvoie la valeur true.

Si vous décidez qu'une règle préconfigurée correspond à plus de trafic que nécessaire ou si la règle bloque le trafic qui doit être autorisé, la règle peut être ajustée afin de désactiver les signatures bruyantes ou autrement inutiles. Pour désactiver des signatures dans une règle préconfigurée particulière, fournissez une liste d'ID des signatures indésirables à la commande evaluatePreconfiguredExpr().

L'exemple suivant exclut deux ID de règle CRS de la règle WAF xss-stable préconfigurée :

evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v020901-id981136-xss', 'owasp-crs-v020901-id981138-xss'])

L'exemple précédent est une expression dans le langage de règles personnalisées. La syntaxe générale est la suivante :

evaluatePreconfiguredExpr(RULE, ['SIGNATURE1', 'SIGNATURE2', 'SIGNATURE3'])

Règles ModSecurity préconfigurées

Chaque règle préconfigurée possède un niveau de sensibilité qui correspond à un niveau ModSecurity. Un niveau de sensibilité faible indique une signature avec un niveau de confiance plus élevé, qui a moins de chances de générer un faux positif. Un niveau de sensibilité plus élevé augmente la sécurité, mais augmente également le risque de générer un faux positif.

Injection SQL (SQLi)

ID de signature (ID de règle CRS) Niveau de sensibilité Description
owasp-crs-v030001-id942140-sqli 1 Attaque par injection SQL : noms de base de données courants détectés
owasp-crs-v030001-id942160-sqli 1 Détecte les tests SQLi à l'aveugle à l'aide de la méthode sleep() ou benchmark()
owasp-crs-v030001-id942170-sqli 1 Détecte les tentatives d'injection SQL par les méthodes benchmark et sleep, y compris les requêtes conditionnelles
owasp-crs-v030001-id942190-sqli 1 Détecte les tentatives de collecte d'informations et d'exécution de code MSSQL
owasp-crs-v030001-id942220-sqli 1 Recherche les attaques par dépassement de capacité d'entiers
owasp-crs-v030001-id942230-sqli 1 Détecte les tentatives d'injection de code SQL conditionnel
owasp-crs-v030001-id942240-sqli 1 Détecte les tentatives de basculement de charset MySQL et d'attaque DoS MSSQL
owasp-crs-v030001-id942250-sqli 1 Détecte les injections de code MATCH AGAINST
owasp-crs-v030001-id942270-sqli 1 Recherche l'injection SQL de base, chaîne d'attaque courante pour MySql
owasp-crs-v030001-id942280-sqli 1 Détecte l'injection de Postgres pg_sleep
owasp-crs-v030001-id942290-sqli 1 Recherche les tentatives d'injection SQL MongoDB de base
owasp-crs-v030001-id942320-sqli 1 Détecte les injections de fonctions/procédures stockées MySQL et PostgreSQL
owasp-crs-v030001-id942350-sqli 1 Détecte l'injection de code UDF MySQL et d'autres tentatives de manipulation de données/structures
owasp-crs-v030001-id942360-sqli 1 Détecte l'injection SQL de base concaténée et les tentatives SQLLFI
owasp-crs-v030001-id942110-sqli 2 Attaque par injection SQL : test d'injection commune détecté
owasp-crs-v030001-id942120-sqli 2 Attaque par injection SQL : opérateur SQL détecté
owasp-crs-v030001-id942150-sqli 2 Attaque par injection SQL
owasp-crs-v030001-id942180-sqli 2 Détecte les tentatives de contournement de l'authentification SQL de base 1/3
owasp-crs-v030001-id942200-sqli 2 Détecte les injections MySQL de type comment-/space-obfuscated et d'accent grave
owasp-crs-v030001-id942210-sqli 2 Détecte les tentatives d'injection de code SQL en chaîne 1/2
owasp-crs-v030001-id942260-sqli 2 Détecte les tentatives de contournement de l'authentification SQL de base 2/3
owasp-crs-v030001-id942300-sqli 2 Détecte les commentaires MySQL
owasp-crs-v030001-id942310-sqli 2 Détecte les tentatives d'injection de code SQL en chaîne 2/2
owasp-crs-v030001-id942330-sqli 2 Détecte les sondes d'injection SQL classiques 1/2
owasp-crs-v030001-id942340-sqli 2 Détecte les tentatives de contournement de l'authentification SQL de base 3/3
owasp-crs-v030001-id942380-sqli 2 Attaque par injection SQL
owasp-crs-v030001-id942390-sqli 2 Attaque par injection SQL
owasp-crs-v030001-id942400-sqli 2 Attaque par injection SQL
owasp-crs-v030001-id942410-sqli 2 Attaque par injection SQL
owasp-crs-v030001-id942430-sqli 2 Détection d'anomalies liées à la limite de caractères SQL (args) : nombre de caractères spéciaux dépassé (12)
owasp-crs-v030001-id942440-sqli 2 Séquence de commentaire SQL détectée
owasp-crs-v030001-id942450-sqli 2 Encodage hexadécimal SQL identifié
owasp-crs-v030001-id942251-sqli 3 Détecte les injections de code HAVING
owasp-crs-v030001-id942420-sqli 3 Détection d'anomalies liées à la limite de caractères SQL (cookies) : nombre de caractères spéciaux dépassé (8)
owasp-crs-v030001-id942431-sqli 3 Détection d'anomalies liées à la limite de caractères SQL (args) : nombre de caractères spéciaux dépassé (6)
owasp-crs-v030001-id942460-sqli 3 Alerte de détection d'anomalies liées aux métacaractères – Caractères non textuels répétitifs
owasp-crs-v030001-id942421-sqli 4 Détection d'anomalies liées à la limite de caractères SQL (cookies) : nombre de caractères spéciaux dépassé (3)
owasp-crs-v030001-id942432-sqli 4 Détection d'anomalies liées à la limite de caractères SQL (args) : nombre de caractères spéciaux dépassé (2)


Pour configurer une règle à un niveau de sensibilité particulier, désactivez les signatures à des niveaux de sensibilité supérieurs.

Niveau de sensibilité SQLi 1


evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942110-sqli',
  'owasp-crs-v030001-id942120-sqli',
  'owasp-crs-v030001-id942150-sqli',
  'owasp-crs-v030001-id942180-sqli',
  'owasp-crs-v030001-id942200-sqli',
  'owasp-crs-v030001-id942210-sqli',
  'owasp-crs-v030001-id942260-sqli',
  'owasp-crs-v030001-id942300-sqli',
  'owasp-crs-v030001-id942310-sqli',
  'owasp-crs-v030001-id942330-sqli',
  'owasp-crs-v030001-id942340-sqli',
  'owasp-crs-v030001-id942380-sqli',
  'owasp-crs-v030001-id942390-sqli',
  'owasp-crs-v030001-id942400-sqli',
  'owasp-crs-v030001-id942410-sqli',
  'owasp-crs-v030001-id942430-sqli',
  'owasp-crs-v030001-id942440-sqli',
  'owasp-crs-v030001-id942450-sqli',
  'owasp-crs-v030001-id942251-sqli',
  'owasp-crs-v030001-id942420-sqli',
  'owasp-crs-v030001-id942431-sqli',
  'owasp-crs-v030001-id942460-sqli',
  'owasp-crs-v030001-id942421-sqli',
  'owasp-crs-v030001-id942432-sqli']
)
          
Niveau de sensibilité SQLi 2


evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942251-sqli',
 'owasp-crs-v030001-id942420-sqli',
 'owasp-crs-v030001-id942431-sqli',
 'owasp-crs-v030001-id942460-sqli',
 'owasp-crs-v030001-id942421-sqli',
 'owasp-crs-v030001-id942432-sqli']
)
Niveau de sensibilité SQLi 3


evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942421-sqli',
         'owasp-crs-v030001-id942432-sqli']
         )
Niveau de sensibilité SQLi 4


evaluatePreconfiguredExpr('sqli-stable')

Script intersites (XSS)

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id941110-xss 1 Filtre XSS – Catégorie 1 : vecteur de balise de script
owasp-crs-v030001-id941120-xss 1 Filtre XSS – Catégorie 2 : vecteur de gestionnaire d'événements
owasp-crs-v030001-id941130-xss 1 Filtre XSS – Catégorie 3 : vecteur d'attribut
owasp-crs-v030001-id941140-xss 1 Filtre XSS – Catégorie 4 : vecteur d'URI JavaScript
owasp-crs-v030001-id941160-xss 1 NoScript XSS InjectionChecker : injection de code HTML
owasp-crs-v030001-id941170-xss 1 NoScript XSS InjectionChecker : injection d'attribut
owasp-crs-v030001-id941180-xss 1 Mots clés de la liste noire du valideur de nœuds
owasp-crs-v030001-id941190-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941200-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941210-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941220-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941230-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941240-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941250-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941260-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941270-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941280-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941290-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941300-xss 1 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941310-xss 1 Filtre XSS d'encodage incorrectement formé US-ASCII – Attaque détectée
owasp-crs-v030001-id941350-xss 1 XSS IE d'encodage UTF-7 – Attaque détectée
owasp-crs-v030001-id941150-xss 2 Filtre XSS – Catégorie 5 : attributs HTML non autorisés
owasp-crs-v030001-id941320-xss 2 Possible attaque XSS détectée – Gestionnaire de balises HTML
owasp-crs-v030001-id941330-xss 2 Filtres XSS IE – Attaque détectée
owasp-crs-v030001-id941340-xss 2 Filtres XSS IE – Attaque détectée


Pour configurer une règle à un niveau de sensibilité particulier, désactivez les signatures à des niveaux de sensibilité supérieurs.

Niveau de sensibilité XSS 1


evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v030001-id941150-xss',
  'owasp-crs-v030001-id941320-xss',
  'owasp-crs-v030001-id941330-xss',
  'owasp-crs-v030001-id941340-xss'])
          


Toutes les signatures pour XSS sont inférieures au niveau de sensibilité 2. La configuration suivante fonctionne pour d'autres niveaux de sensibilité :

Niveaux de sensibilité XSS 2/3/4


evaluatePreconfiguredExpr('xss-stable')

Inclusion de fichiers locaux (LFI)

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id930100-lfi 1 Attaque par balayage de chemin (/../)
owasp-crs-v030001-id930110-lfi 1 Attaque par balayage de chemin (/../)
owasp-crs-v030001-id930120-lfi 1 Tentative d'accès à un fichier du système d'exploitation
owasp-crs-v030001-id930130-lfi 1 Tentative d'accès à un fichier non autorisé


Toutes les signatures pour LFI sont au niveau de sensibilité 1. La configuration suivante fonctionne pour tous les niveaux de sensibilité :

Niveaux de sensibilité LFI 1/2/3/4


evaluatePreconfiguredExpr('lfi-canary')

Exécution de code à distance (RCE)

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id932100-rce 1 Injection de commande UNIX
owasp-crs-v030001-id932105-rce 1 Injection de commande UNIX
owasp-crs-v030001-id932110-rce 1 Injection de commande Windows
owasp-crs-v030001-id932115-rce 1 Injection de commande Windows
owasp-crs-v030001-id932120-rce 1 Commande Windows PowerShell trouvée
owasp-crs-v030001-id932130-rce 1 Expression d'interface système Unix trouvée
owasp-crs-v030001-id932140-rce 1 Commande Windows FOR/IF trouvée
owasp-crs-v030001-id932150-rce 1 Exécution directe de commande UNIX
owasp-crs-v030001-id932160-rce 1 Code d'interface système UNIX trouvé
owasp-crs-v030001-id932170-rce 1 Shellshock (CVE-2014-6271)
owasp-crs-v030001-id932171-rce 1 Shellshock (CVE-2014-6271)


Toutes les signatures pour le RCE sont au niveau de sensibilité 1. La configuration suivante fonctionne pour tous les niveaux de sensibilité :

RCE – Niveaux de sensibilité 1/2/3/4


evaluatePreconfiguredExpr('rce-canary')

Inclusion de fichiers à distance (RFI)

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id931100-rfi 1 Paramètre d'URL utilisant une adresse IP
owasp-crs-v030001-id931110-rfi 1 Nom commun du paramètre vulnérable RFI utilisé avec la charge utile d'URL
owasp-crs-v030001-id931120-rfi 1 Charge utile d'URL utilisée avec le caractère de point d'interrogation de fin (?)
owasp-crs-v030001-id931130-rfi 2 Référence/Lien externe


Pour configurer une règle à un niveau de sensibilité particulier, désactivez les signatures à des niveaux de sensibilité supérieurs.

Niveau de sensibilité RFI 1


evaluatePreconfiguredExpr('rfi-canary', ['owasp-crs-v030001-id931130-rfi'])

Toutes les signatures pour RFI sont inférieures au niveau de sensibilité 2. La configuration suivante fonctionne pour d'autres niveaux de sensibilité :

Niveaux de sensibilité RFI 2/3/4


evaluatePreconfiguredExpr('rfi-canary')

Application de la méthode

Cette règle est disponible dans la version bêta publique.

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id911100-methodenforcement 1 La méthode n'est pas autorisée par la règle

Toutes les signatures de l'application de la méthode sont inférieures au niveau de sensibilité 2. La configuration suivante fonctionne pour d'autres niveaux de sensibilité :

Niveaux de sensibilité 2/3/4 de l'application de la méthode


evaluatePreconfiguredExpr('methodenforcement-canary')

Détection du scanner

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id913100-scannerdetection 1 User-agent associé à un scanner de sécurité
owasp-crs-v030001-id913110-scannerdetection 1 En-tête de requête associé à un scanner de sécurité
owasp-crs-v030001-id913120-scannerdetection 1 Nom de fichier ou un argument de requête associé à un scanner de sécurité
owasp-crs-v030001-id913101-scannerdetection 2 User-agent associé au client HTTP script/générique
owasp-crs-v030001-id913102-scannerdetection 2 User-agent associé au robot d'exploration/bot

Pour configurer une règle à un niveau de sensibilité particulier, désactivez les signatures à des niveaux de sensibilité supérieurs.

Niveau de sensibilité de détection du scanner 1


evaluatePreconfiguredExpr('scannerdetection-stable',
  ['owasp-crs-v030001-id913101-scannerdetection',
  'owasp-crs-v030001-id913102-scannerdetection']
)
          
Niveau de sensibilité de détection du scanner 2


evaluatePreconfiguredExpr('scannerdetection-stable')
          

Attaque de protocole

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id921100-protocolattack 1 Attaque de contrebande de requête HTTP
owasp-crs-v030001-id921110-protocolattack 1 Attaque de contrebande de requête HTTP
owasp-crs-v030001-id921120-protocolattack 1 Attaque de division de réponse HTTP
owasp-crs-v030001-id921130-protocolattack 1 Attaque de division de réponse HTTP
owasp-crs-v030001-id921140-protocolattack 1 Attaque d'injection d'en-tête HTTP via des en-têtes
owasp-crs-v030001-id921150-protocolattack 1 Attaque d'injection d'en-tête HTTP via la charge utile (CR/LF détecté)
owasp-crs-v030001-id921160-protocolattack 1 Attaque d'injection d'en-tête HTTP via la charge utile (CR/LF et nom de l'en-tête détectés)
owasp-crs-v030001-id921151-protocolattack 2 Attaque d'injection d'en-tête HTTP via la charge utile (CR/LF détecté)
owasp-crs-v030001-id921170-protocolattack 3 Pollution des paramètres HTTP

Pour configurer une règle à un niveau de sensibilité particulier, désactivez les signatures à des niveaux de sensibilité supérieurs.

Niveau de sensibilité du protocole d'attaque 1


evaluatePreconfiguredExpr('protocolattack-stable',
  ['owasp-crs-v030001-id921151-protocolattack',
  'owasp-crs-v030001-id921170-protocolattack']
)
          
Niveau de sensibilité du protocole d'attaque 2


evaluatePreconfiguredExpr('protocolattack-stable',
  ['owasp-crs-v030001-id921170-protocolattack']
)
          
Niveau de sensibilité du protocole d'attaque 3


evaluatePreconfiguredExpr('protocolattack-stable')
          

PHP

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id933100-php 1 Attaque par injection PHP : tag PHP ouvert trouvé
owasp-crs-v030001-id933110-php 1 Attaque par injection PHP : importation du fichier de script PHP
owasp-crs-v030001-id933120-php 1 Attaque par injection PHP : directive de configuration trouvée
owasp-crs-v030001-id933130-php 1 Attaque par injection PHP : variables trouvées
owasp-crs-v030001-id933140-php 1 Attaque par injection PHP : flux d'E/S trouvé
owasp-crs-v030001-id933150-php 1 Attaque par injection PHP : nom de fonction PHP à haut risque détecté
owasp-crs-v030001-id933160-php 1 Attaque par injection PHP : appel de fonction PHP à haut risque détecté
owasp-crs-v030001-id933170-php 1 Attaque par injection PHP : injection d'objets en série
owasp-crs-v030001-id933180-php 1 Attaque par injection PHP : appel de fonction variable détecté
owasp-crs-v030001-id933151-php 2 Attaque par injection PHP : nom de fonction PHP à risque moyen détecté
owasp-crs-v030001-id933131-php 3 Attaque par injection PHP : variables trouvées
owasp-crs-v030001-id933161-php 3 Attaque par injection PHP : appel de fonction PHP à valeur faible détecté
owasp-crs-v030001-id933111-php 3 Attaque par injection PHP : importation du fichier de script PHP

Pour configurer une règle à un niveau de sensibilité particulier, désactivez les signatures à des niveaux de sensibilité supérieurs.

Niveau de sensibilité de l'attaque par injection PHP 1


evaluatePreconfiguredExpr('php-stable', ['owasp-crs-v030001-id933151-php',
  'owasp-crs-v030001-id933131-php',
  'owasp-crs-v030001-id933161-php',
  'owasp-crs-v030001-id933111-php']
)
          
Niveau de sensibilité de l'attaque par injection PHP 2


evaluatePreconfiguredExpr('php-stable', ['owasp-crs-v030001-id933131-php',
  'owasp-crs-v030001-id933161-php',
  'owasp-crs-v030001-id933111-php']
)
          
Niveau de sensibilité de l'attaque par injection PHP 3


evaluatePreconfiguredExpr('php-stable')
          

Réparation des sessions

ID de signature (ID de règle) Niveau de sensibilité Description
owasp-crs-v030001-id943100-sessionfixation 1 Possible attaque de réparation de session : définition de valeurs de cookie en HTML
owasp-crs-v030001-id943110-sessionfixation 1 Possible attaque de réparation de session : nom du paramètre SessionID avec référent hors domaine
owasp-crs-v030001-id943120-sessionfixation 1 Possible attaque de réparation de session : nom du paramètre SessionID sans référent

Toutes les signatures pour la réparation des sessions sont inférieures au niveau de sensibilité 2. La configuration suivante fonctionne pour d'autres niveaux de sensibilité :

Niveaux de sensibilité à la réparation de session 2/3/4


evaluatePreconfiguredExpr('sessionfixation-canary')

Étape suivante