En bref. Utiliser le mécanisme d’en-tête à secret partagé et d’instruction de restriction de portée documenté dans l’exemple Bot Control d’AWS WAF.
Définition : AWS WAF documente l’utilisation d’un en-tête de requête contenant un secret partagé pour exclure un bot de supervision de site ou un bot personnalisé de l’inspection par Bot Control. Cette exception repose sur une instruction de restriction de portée (scope-down statement) appliquée au groupe de règles géré Bot Control.
Points clés
- L’exemple de bot personnalisé d’AWS configure un bot de supervision ou un bot personnalisé pour qu’il envoie un secret partagé dans un en-tête, puis exclut de l’inspection par Bot Control les requêtes porteuses de cet en-tête.
- Une instruction de restriction de portée limite les requêtes évaluées par le groupe de règles géré qui la contient. Les requêtes qui ne correspondent pas à cette instruction sont considérées comme ne correspondant pas au groupe de règles.
- L’exemple utilise le groupe de règles géré par AWS nommé
AWSManagedRulesBotControlRuleSetet définit son niveau d’inspection surCOMMON, comme le montre l’exemple Bot Control. - La référence des groupes de règles gérés d’AWS répertorie
CategoryMonitoringpour les bots qui surveillent les performances ou la disponibilité et décrit une action de règle qui s’applique aux bots non vérifiés.
Comment fonctionne l’exception documentée ?
Le bot envoie un secret partagé dans un en-tête de requête personnalisé. Dans l’exemple d’AWS, cet en-tête se nomme x-bypass-secret et fait l’objet d’une comparaison par une instruction de correspondance d’octets (byte-match statement). L’instruction utilise EXACTLY comme contrainte de position et n’applique aucune transformation de texte. L’instruction englobante NotStatement inverse le résultat de la comparaison d’octets : une requête contenant le secret de l’exemple sort ainsi du périmètre des requêtes transmises à Bot Control, tandis que les requêtes qui échouent à la comparaison exacte restent dans ce périmètre.
AWS définit une instruction de restriction de portée comme une instruction de règle imbriquable, ajoutée à l’intérieur d’une instruction de groupe de règles géré ou d’une instruction fondée sur le débit de requêtes (rate-based statement). La règle englobante évalue les requêtes qui correspondent à l’instruction de restriction de portée, et AWS WAF considère les autres comme ne correspondant pas au groupe de règles géré.
Que contient l’exemple d’AWS ?
L’exemple source est une règle JSON nommée AWS-AWSBotControl-Example, de priorité 5. Son groupe de règles géré indique AWS comme fournisseur, utilise AWSManagedRulesBotControlRuleSet et définit InspectionLevel sur COMMON. La comparaison de l’en-tête utilise la chaîne de recherche encodée YSBzZWNyZXQ=, le nom d’en-tête unique x-bypass-secret, une transformation de texte de priorité 0 et de type NONE, ainsi que la contrainte de position EXACTLY.
{
"Name": "AWS-AWSBotControl-Example",
"Priority": 5,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesBotControlRuleSet",
"ManagedRuleGroupConfigs": [
{
"AWSManagedRulesBotControlRuleSet": {
"InspectionLevel": "COMMON"
}
}
],
"RuleActionOverrides": [],
"ExcludedRules": []
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "AWS-AWSBotControl-Example"
},
"ScopeDownStatement": {
"NotStatement": {
"Statement": {
"ByteMatchStatement": {
"SearchString": "YSBzZWNyZXQ=",
"FieldToMatch": {
"SingleHeader": {
"Name": "x-bypass-secret"
}
},
"TextTransformations": [
{
"Priority": 0,
"Type": "NONE"
}
],
"PositionalConstraint": "EXACTLY"
}
}
}
}
}
}
Que faut-il vérifier avant de l’utiliser ?
Le nom de l’en-tête et le secret doivent être identiques dans la requête du bot et dans la condition de correspondance de l’instruction de restriction de portée. La comparaison exacte de l’exemple implique qu’une valeur différente ne satisfait pas l’instruction interne de correspondance d’octets. AWS précise qu’une instruction de restriction de portée peut utiliser toute règle imbriquable et que ses transformations de texte et ses paramètres d’adresse IP transmise s’appliquent à cette instruction elle-même ; le groupe de règles géré qui la contient n’en hérite pas.
L’exemple sélectionne le niveau d’inspection COMMON. AWS indique que COMMON détecte les bots qui s’identifient comme tels et les signatures de bots à haut niveau de confiance, tandis que TARGETED inclut les protections communes et ajoute la détection des bots sophistiqués qui ne s’identifient pas comme tels. La référence des règles gérées précise aussi que les bots vérifiés ne sont pas bloqués par le groupe de règles géré Bot Control, tandis que la règle CategoryMonitoring applique son action de blocage aux bots non vérifiés.
Termes associés
- Quelles différences entre les niveaux d’inspection d’AWS WAF Bot Control ?
- Comment les règles AWS WAF Bot Control traitent-elles les robots vérifiés ?
- Quand une règle AWS WAF exécutée plus tard peut-elle reconnaître une étiquette ajoutée par une autre règle ?
Questions fréquentes
L’exception par en-tête utilise-t-elle robots.txt ?
Non. L’exemple d’AWS est une règle AWS WAF au format JSON, avec une instruction de restriction de portée rattachée à la configuration de Bot Control. Elle porte sur un en-tête de requête.
Que se passe-t-il pour une requête sans le secret partagé ?
L’instruction interne de correspondance d’octets ne trouve pas la valeur requise ; l’instruction englobante NotStatement maintient donc cette requête dans le périmètre évalué par Bot Control. AWS décrit ce même fonctionnement de restriction de portée comme l’évaluation des seules requêtes qui correspondent à l’instruction de restriction de portée.
Le même mécanisme peut-il utiliser l’inspection ciblée ?
L’exemple d’AWS définit InspectionLevel sur COMMON. La référence des règles gérées présente TARGETED comme l’autre niveau de protection, avec une détection supplémentaire des bots sophistiqués qui ne s’identifient pas comme tels.
Sources
- AWS, « Bot Control example: Allowing traffic from a bot that you control », sans date
- AWS, « Using scope-down statements in AWS WAF », sans date
- AWS, « AWS WAF Bot Control rule group », sans date
Vérifiez comment une page se lit pour les moteurs de réponse. Ouvrir l’analyseur de score GEO