Suivez ces instructions pour configurer et ajuster les règles de pare-feu d'application Web (WAF) préconfigurées de Google Cloud Armor afin de protéger votre application contre les attaques. Si vous ne connaissez pas les règles WAF préconfigurées, consultez la présentation.
Configurer une règle WAF préconfigurée
Cette section fournit des modèles de règles WAF préconfigurées que vous pouvez copier dans la console Google Cloud et personnaliser pour les adapter à votre cas d'utilisation. Dans chaque exemple de commande Google Cloud CLI, vous configurez une stratégie de sécurité avec le nom POLICY_NAME
et la priorité PRIORITY
.
Le premier exemple configure une règle avec le nom RULE_NAME
et un niveau de sensibilité SENSITIVITY
, ce qui active toutes les signatures dont la sensibilité est inférieure ou égale à SENSITIVITY
. Pour en savoir plus sur la sensibilité des règles, consultez Choisir un niveau de sensibilité.
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurerRULE_NAME
: nom de la règle WAF que vous souhaitez configurerSENSITIVITY
: niveau de sensibilité de la règle WAF
Le deuxième exemple est semblable au premier, mais il désactive les signatures de règles SIGNATURE_1
et SIGNATURE_2
. Cela signifie que ces deux signatures ne sont pas évaluées lorsque la règle WAF est évaluée :
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurerRULE_NAME
: nom de la règle WAF que vous souhaitez configurerSENSITIVITY
: niveau de sensibilité de la règle WAFSIGNATURE_1
: nom de la signature WAF que vous souhaitez désactiverSIGNATURE_2
: nom de la signature WAF que vous souhaitez désactiver.
Le troisième exemple est semblable au deuxième, mais au lieu de désactiver deux signatures, vous en activez deux. Notez que vous ne pouvez activer les signatures de règle que lorsque vous définissez le niveau de sensibilité sur 0
:
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurerRULE_NAME
: nom de la règle WAF que vous souhaitez configurerSIGNATURE_1
: nom de la signature WAF que vous souhaitez désactiverSIGNATURE_2
: nom de la signature WAF que vous souhaitez désactiver
Dans tous les exemples précédents, vous n'utilisez qu'une seule expression par règle. Bien que vous puissiez combiner des expressions à l'aide de l'opérateur logique OR (||
), nous vous recommandons de n'utiliser qu'une seule expression par règle. Cela vous permettra d'éviter de dépasser la taille maximale des expressions.
Mettre à jour la limite d'inspection pour les règles WAF préconfigurées
Les règles WAF préconfigurées de Google Cloud Armor ne peuvent inspecter que les 64 premiers ko (8 ko, 16 ko, 32 ko, 48 ko ou 64 ko) d'un corps de requête. Vous pouvez configurer manuellement une stratégie de sécurité pour utiliser l'une de ces limites d'inspection pour vos règles WAF préconfigurées.
La commande suivante définit la limite d'inspection de toutes les règles WAF préconfigurées disponibles dans la stratégie POLICY_NAME
sur 8 ko à l'aide de l'indicateur --request-body-inspection-size
. Pour en savoir plus sur les limites d'inspection des règles WAF préconfigurées, consultez Limites d'inspection du corps POST et PATCH.
gcloud compute security-policies update POLICY_NAME \ --request-body-inspection-size = 8 kB
Remplacez POLICY_NAME
par le nom de la règle de sécurité que vous souhaitez configurer.
De même, vous pouvez utiliser l'indicateur --request-body-inspection-size
pour définir la limite d'inspection de toutes les règles WAF préconfigurées disponibles dans la règle POLICY_NAME
sur 16 ko, 32 ko, 48 ko ou 64 ko.
Atténuer les risques liés au corps de la requête qui dépasse la limite d'inspection configurée
Lorsqu'une règle WAF préconfigurée est évaluée dans une règle de sécurité Google Cloud Armor, jusqu'aux 64 premiers Ko (8 Ko, 16 Ko, 32 Ko, 48 Ko ou 64 Ko) du corps d'une requête sont inspectés afin de détecter des correspondances de signature par rapport aux règles WAF.
Vous pouvez limiter le risque lié aux requêtes plus importantes en créant une règle dans vos règles de sécurité pour vous assurer qu'aucun contenu non inspecté n'atteint les backends. Par exemple, créez une règle pour refuser le trafic qui dépasse la limite d'inspection configurée de 8 Ko (8 192 octets) dans la taille du corps de la requête. La commande suivante montre comment créer cette règle :
gcloud compute security-policies rules create 10 \ --security-policy my-policy \ --expression "int(request.headers['content-length']) > 8192" \ --action deny-403 \ --description "Block requests greater than 8 kB"
De même, vous pouvez créer une règle pour refuser le trafic qui dépasse les limites d'inspection configurées de 16 Ko, 32 Ko, 48 Ko ou 64 Ko dans la taille du corps de la requête. Par exemple, la commande suivante montre comment créer cette règle pour la limite d'inspection de 64 ko (65 536 octets).
gcloud compute security-policies rules create 10 \ --security-policy my-policy \ --expression "int(request.headers['content-length']) > 65536" \ --action deny-403 \ --description "Block requests greater than 64 kB"
Exemples
Les exemples de cette section mettent en évidence des aspects importants de la création et de l'ajustement des règles WAF préconfigurées, y compris le niveau de sensibilité et les exceptions de signature.
Dans tous les exemples de commandes gcloud CLI, vous créez une stratégie de sécurité nommée POLICY_NAME
avec la priorité PRIORITY
.
Créer une règle à un niveau de sensibilité donné
Dans cet exemple, vous utilisez toutes les signatures de la règle WAF sqli-v33-stable
avec un niveau de sensibilité inférieur à 4. Par conséquent, vous créez la règle au niveau de sensibilité 3, qui inclut toutes les signatures dont le niveau de sensibilité est inférieur ou égal à trois :
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurer
Créer une règle pour désactiver une ou plusieurs signatures
Dans cet exemple, vous utilisez presque toutes les signatures de niveau de sensibilité 1 et 2 dans la règle WAF xss-v33-stable
, mais vous souhaitez exclure la signature owasp-crs-v030301-id941370-xss
, qui recherche les variables globales JavaScript.
Par conséquent, vous créez la règle au niveau de sensibilité 2 et utilisez l'argument opt_out_rule_ids
pour désactiver la signature owasp-crs-v030301-id941370-xss
:
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurer
Pour exclure deux signatures ou plus d'une règle, fournissez une liste de signatures séparées par une virgule avec l'argument opt_out_rule_ids
, comme suit :
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurer
Créer une règle pour activer une ou plusieurs signatures
Cet exemple n'utilise que la signature owasp-crs-v030001-id941150-xss
de la règle WAF xss-v33-stable
. La signature recherche les attributs HTML non autorisés et est au niveau de sensibilité 2.
Par conséquent, vous créez la règle au niveau de sensibilité 0 et utilisez l'argument opt_in_rule_ids
pour activer la signature owasp-crs-v030001-id941150-xss
. Notez que vous ne pouvez activer les signatures de règle que lorsque vous définissez le niveau de sensibilité sur 0
:
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurer
Si vous souhaitez inclure plusieurs signatures à partir d'une règle, fournissez une liste de signatures séparées par une virgule avec l'argument opt_in_rule_ids
, comme suit :
Console
Sélectionnez Mode avancé, puis utilisez l'exemple d'expression suivant dans le champ Correspondance :
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})" \ --action deny-403
Remplacez les éléments suivants :
PRIORITY
: priorité de la stratégie de sécuritéPOLICY_NAME
: nom de la règle de sécurité que vous souhaitez configurer
Étapes suivantes
- Pour en savoir plus sur l'ajustement des règles WAF, consultez Ajuster les règles WAF préconfigurées de Google Cloud Armor.