Résoudre les problèmes liés à Google Cloud Armor

Suivez ces instructions pour résoudre les problèmes liés à vos stratégies de sécurité Google Cloud Armor.

Problèmes d'ordre général

Le trafic est autorisé malgré la configuration d'une règle de refus dans la stratégie de sécurité Google Cloud Armor

Pour régler ce problème, procédez comme suit :

  1. Assurez-vous que la stratégie de sécurité Google Cloud Armor est associée à un service de backend cible. Par exemple, la commande suivante décrit toutes les données associées au service de backend BACKEND. Les résultats renvoyés doivent inclure le nom de la stratégie de sécurité Google Cloud Armor associée à ce service de backend.

    gcloud compute backend-services describe BACKEND
    
  2. Consultez les journaux HTTP(S) pour déterminer la stratégie et la règle correspondant à votre trafic ainsi que l'action associée. Pour afficher les journaux, utilisez Cloud Logging.

    Vous trouverez ci-dessous un exemple de journal d'une requête autorisée avec les champs intéressants mis en surbrillance. Vérifiez les champs suivants et assurez-vous qu'ils correspondent à la règle que vous avez configurée pour refuser le trafic :

    • configuredAction doit correspondre à l'action configurée dans la règle.
    • name doit correspondre au nom de la stratégie de sécurité Google Cloud Armor associée à ce service de backend.
    • outcome doit correspondre à configuredAction.
    • priority doit correspondre au numéro de priorité de la règle.
      httpRequest:
       remoteIp: 104.133.0.95
       requestMethod: GET
       requestSize: '801'
       requestUrl: http://74.125.67.38/
       responseSize: '246'
       serverIp: 10.132.0.4
       status: 200
       userAgent: curl/7.35.0
         insertId: ajvis5ev4i60
         internalId:
           projectNumber: '895280006100'
         jsonPayload:
           '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry
           enforcedSecurityPolicy:
             configuredAction: ACCEPT
             name: mydev-policy-log-test1
             outcome: ACCEPT
             priority: 2147483647
           statusDetails: response_sent_by_backend
         logName: projects/mydev-staging/logs/requests
         resource:
           labels:
             backend_service_name: BACKEND_SERVICE_NAME
             forwarding_rule_name: FORWARDING_RULE_NAME
             project_id: PROJECT_ID
             target_proxy_name: TARGET_HTTP_PROXY_NAME
             url_map_name: URL_MAP_NAME
             zone: global
           type: http_load_balancer
         severity: INFO
         timestamp: '2017-04-18T18:57:05.845960288Z'
    
  3. Passez en revue la hiérarchie des règles pour vous assurer que la bonne règle est mise en correspondance. Il est possible qu'une règle d'une priorité plus élevée avec une action d'autorisation corresponde à votre trafic. Exécutez la commande describe sur security-policies dans l'outil de ligne de commande gcloud pour afficher le contenu de la stratégie de sécurité Google Cloud Armor.

    Ainsi, l'exemple suivant montre comment une règle d'autorisation d'une priorité plus élevée (de priorité 100) correspond au trafic provenant de l'adresse IP 1.2.3.4, ce qui empêche la règle de refus d'une priorité inférieure (de priorité 200) de se déclencher et de bloquer le trafic.

    gcloud compute security-policies describe POLICY_NAME
    

    Sortie :

      creationTimestamp: '2017-04-18T14:47:58.045-07:00
      description: ''
      fingerprint: Yu5spBjdoC0=
      id: '2560355463394441057'
      kind: compute#securityPolicy
      name: POLICY_NAME
      rules:
      -action: allow
       description: allow high priority rule
       kind: compute#securityPolicyRule
       match:
         srcIpRanges:
         -'1.2.3.4/32'
       preview: false
       priority: 100
      -action: deny
       description: deny lower priority rule
       kind: compute#securityPolicyRule
       match:
         srcIpRanges:
         -'1.2.3.0/24
       preview: false
       priority: 200
      -action: deny
       description: default rule
       kind: compute#securityPolicyRule
       match:
         srcIpRanges:
         -'*'
       preview: false
       priority: 2147483647
       selfLink: http://www.googleapis.com/compute/v1/projects/bigclustertestdev0-devconsole/global/securityPolicies/sp
    

La règle préconfigurée renvoie des faux positifs

La détection des attaques XSS et SQLi est basée sur la correspondance de signature statique sur les en-têtes de requête HTTP et d'autres paramètres L7. Ces modèles d'expression régulière sont sujets aux faux positifs. Vous pouvez utiliser la règle préconfigurée pour la détection XSS et SQLi en mode aperçu, puis rechercher d'éventuels faux positifs dans le journal.

Si vous en trouvez un, vous pouvez comparer le contenu du trafic avec les règles ModSecurity CRS. Si la règle n'est pas valide ou n'est pas pertinente, désactivez-la à l'aide de l'expression evaluatePreconfiguredExpr et spécifiez l'ID de la règle dans l'argument exclude ID list.

Après avoir examiné les journaux et supprimé tous les faux positifs, désactivez le mode aperçu.

Pour ajouter une règle préconfigurée en mode aperçu :

  1. Créez une stratégie de sécurité avec l'ensemble d'expressions préconfiguré en mode aperçu :

    gcloud compute security-policies rules create 1000
       --security-policy POLICY_NAME
       --expression "evaluatePreconfiguredExpr('xss-stable')"
       --action deny-403
       --preview
    
  2. Dans les journaux HTTP(S), recherchez des champs de requête HTTP tels que url et cookie. Par exemple, le champ requestUrl se compare positivement à l'ID de règle ModSecurity CRS 941180 :

    httpRequest:
      remoteIp: 104.133.0.95
      requestMethod: GET
      requestSize: '801'
      requestUrl: http://74.125.67.38/foo?document.cookie=1010"
      responseSize: '246'
      serverIp: 10.132.0.4
      status: 200
      userAgent: curl/7.35.0
    insertId: ajvis5ev4i60
    internalId:
      projectNumber: '895280006100'
    jsonPayload:
      '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry
      enforcedSecurityPolicy:
        configuredAction: ACCEPT
        name: POLICY_NAME
        outcome: ACCEPT
        priority: 2147483647
        preconfiguredExprIds: [ 'owasp-crs-v030001-id941180-xss' ]
      statusDetails: response_sent_by_backend
    logName: projects/mydev-staging/logs/requests
    resource:
      labels:
        backend_service_name: BACKEND_SERVICE
        forwarding_rule_name: mydev-forwarding-rule
        project_id: mydev-staging
        target_proxy_name: mydev-target-http-proxy
        url_map_name: mydev-url-map
        zone: global
      type: http_load_balancer
    severity: INFO
    timestamp: '2017-04-18T18:57:05.845960288Z'
    
  3. Excluez l'ID de règle ModSecurity CRS 941180 en mettant à jour la règle dans la stratégie de sécurité Google Cloud Armor :

    gcloud compute security-policies rules update 1000 \
        --security-policy POLICY_NAME \
        --expression "evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v030001-id941180-xss'])" \
        --action deny-403 \
        --preview
    
  4. Passez en revue les journaux, puis désactivez le mode aperçu pour mettre en œuvre la règle.

Les clients avec des signatures refusées ne sont ni bloqués, ni refusés

Si vous utilisez Google Cloud Armor avec Cloud CDN, les stratégies de sécurité ne sont appliquées que pour les requêtes de contenu dynamique, les défauts de cache (miss) ou d'autres requêtes destinées au serveur d'origine du CDN. Les succès de cache (hit) sont diffusés même si la stratégie de sécurité Google Cloud Armor en aval empêche cette requête d'atteindre le serveur d'origine du CDN.

Problèmes liés aux listes d'adresses IP nommées

Cette section fournit des informations sur la résolution des problèmes liés aux listes d'adresses IP nommées.

Adresses IP dans une liste d'adresses IP nommée

Les adresses IP dans les listes correspondent toujours aux adresses IP des sites Web des fournisseurs répertoriés dans le guide sur les listes d'adresses IP nommées Google Cloud Armor. Si vous avez des questions sur les listes, contactez l'équipe d'assistance Cloud.

Les adresses IP d'une liste d'adresses IP nommée sont obsolètes dans Google Cloud Armor.

Google Cloud Armor synchronise quotidiennement ses listes avec des fournisseurs de listes d'adresses IP. Il est possible que des données non actualisées soient différées de quelques heures ou d'une journée par rapport à celles d'un fournisseur. Toutefois, si vous pensez que le temps de retard de ces données est plus long que prévu (par exemple, plus d'une semaine), contactez l'équipe d'assistance Cloud.

Difficulté à créer une stratégie de sécurité faisant référence à une liste d'adresses IP nommée

Vous pouvez tenter de créer une stratégie de sécurité référençant une liste d'adresses IP nommée, à l'aide d'une commande telle que :

gcloud compute security-policies rules create 750 \
    --security-policy my \
    --expression "evaluatePreconfiguredExpr('sourceiplist-abc')" \
    --action "allow"

Si la commande échoue, l'erreur qui s'affiche ressemble à ceci :

ERROR: (gcloud.compute.security-policies.rules.create) Could not fetch resource:
 - Invalid value for field 'resource.match.expr': '{  "expression": "evaluatePreconfiguredExpr(\u0027sourceiplist-abc\u0027)"}'.
Error parsing Google Cloud Armor rule matcher expression: sourceiplist-abc
is not a valid preconfigured expression set.

Assurez-vous que le fournisseur en question est accepté et que le nom de la liste d'adresses IP est correctement renseigné. Vous pouvez le vérifier à l'aide de la commande gcloud suivante afin de répertorier les ensembles d'expressions préconfigurés actuels :

gcloud compute security-policies list-preconfigured-expression-sets

Le trafic est bloqué malgré une règle préconfigurée pour une liste d'autorisation d'adresses IP nommée.

Il se peut que le trafic soit bloqué à partir d'une adresse IP figurant sur une liste d'adresses IP nommée :

  1. Assurez-vous que le trafic provient d'une adresse IP figurant sur une liste d'autorisation d'adresses IP nommée.

  2. Vérifiez si d'autres règles de sécurité avec une priorité plus élevée peuvent bloquer le trafic. Si le problème persiste, contactez l'équipe d'assistance Cloud.

  3. Assurez-vous que la stratégie de sécurité est associée au service de backend approprié :

    gcloud compute backend-services describe BACKEND_SERVICE
    
  4. Vérifiez les règles figurant dans la stratégie de sécurité. Exemple :

     gcloud compute security-policies describe POLICY_NAME
    

    La commande renvoie des informations semblables à ce qui suit :

    ---
    …
    name: POLICY_NAME
    rules:
    -action: allow
     description: allow fastly ip addresses
     kind: compute#securityPolicyRule
     match:
        expr:
          expression: evaluatePreconfiguredExpr('sourceiplist-fastly')
     preview: false
     priority: 100
    -action: deny(403)
     description: Default rule, higher priority overrides it
     kind: compute#securityPolicyRule
     match:
        config:
          srcIpRanges:
          -'*'
        versionedExpr: SRC_IPS_V1
     preview: false
     priority: 2147483647
    -action: deny(404)
     description: deny xyz referer
     kind: compute#securityPolicyRule
     match:
        expr:
          expression: request.headers['Referer'].contains('xyz')
     preview: false
     priority: 50
    …
    

    La stratégie de sécurité ci-dessus contient trois règles : une règle de refus par défaut, une règle d'autorisation pour les adresses IP de Fastly et une règle de refus pour une URL de provenance contenant xyz. Leurs priorités respectives sont également répertoriées.

  5. Examinez les journaux pour déterminer quelle règle est mise en correspondance avec votre trafic et l'action associée. Pour plus d'informations sur la journalisation, consultez la page Afficher les journaux dans l'ancienne visionneuse de journaux pour l'API Cloud Logging.

    Voici un exemple de journal :

     httpRequest: {
        referer: "http://www.xyz.com/"
        remoteIp: "23.230.32.10"
        requestMethod: "HEAD"
        requestSize: "79"
        requestUrl: "http://www.abc.com/"
        responseSize: "258"
        status: 404
        userAgent: "Mozilla/5.0"
      }
      …
      jsonPayload: {
        @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
        enforcedSecurityPolicy: {
          configuredAction: "DENY"
          name: "POLICY_NAME"
          outcome: "DENY"
          priority: 50
        }
        statusDetails: "denied_by_security_policy"
      }
      …
    

    D'après le journal précédent, la requête provient de 23.230.32.10, qui est couvert par la liste d'adresses IP publiques de Fastly. Cependant, la requête est associée à une règle de refus dont la priorité est supérieure à 50. Si l'on compare cette valeur à celle figurant dans la stratégie de sécurité, la règle correspond à la règle de refus d'une URL de provenance contenant xyz. Comme la requête contient une URL de provenance http://www.xyz.com/, l'application des règles de sécurité fonctionne correctement.

Problèmes liés aux résultats générés par Security Command Center

Cette section contient des informations sur les problèmes liés aux résultats générés par Security Command Center.

La fiche Google Cloud Armor n'apparaît pas dans Security Command Center

Activez les résultats de Google Cloud Armor dans l'interface Security Command Center.

Les résultats de Google Cloud Armor n'apparaissent pas dans Security Command Center

Si les résultats de Google Cloud Armor n'apparaissent pas dans Security Command Center, le trafic vers les services de backend peut ne pas répondre aux critères d'obtention d'un résultat.

Pour toute question concernant le volume de trafic vers vos backends, consultez les statistiques des requêtes dans les tableaux de bord Cloud Monitoring sous Stratégies de sécurité réseau.

Les résultats sont trop bruyants

Pour obtenir de l'aide concernant ce problème, contactez l'équipe d'assistance Cloud.

Problèmes liés à Google Cloud Armor Adaptive Protection

Suivez ces instructions pour résoudre les problèmes liés à Adaptive Protection.

Adaptive Protection est activé pour une stratégie de sécurité, mais aucun journal n'est disponible dans Cloud Logging

Les journaux Adaptive Protection sont générés séparément des journaux de requêtes Google Cloud Armor et apparaissent dans une autre ressource dans Cloud Logging. Les journaux et les événements Adaptive Protection se trouvent sous la ressource Règle de sécurité du réseau dans Cloud Logging. Il faut compter une période d'entraînement d'au moins une heure après l'activation d'Adaptive Protection dans une stratégie de sécurité avant que cette fonctionnalité ne commence à générer des alertes concernant des attaques suspectes. Pendant la période d'entraînement, Adaptive Protection apprend à partir du trafic de requêtes entrantes et développe des références distinctes pour chaque service de backend protégé par cette stratégie de sécurité. Adaptive Protection peut ensuite identifier une activité suspecte.

Si vous activez Adaptive Protection pour une stratégie de sécurité et que vous n'observez aucune alerte après une période d'entraînement d'une heure, cela signifie qu'il n'y a aucune activité pouvant être identifiée comme un ciblage potentiellement malveillant sur un quelconque service de backend associé à cette stratégie de sécurité.

Si l'attaque potentielle ou le trafic anormal persistent sur des périodes plus longues, dépassant plusieurs heures, alors Adaptive Protection commence à considérer ce comportement comme un comportement de référence et ne continue pas à générer d'alertes sur des modèles de trafic similaires. Lorsque l'attaque potentielle s'estompe et les modèles de trafic sont revenus au comportement de référence d'origine, soit parce que l'attaque a pris fin, soit parce que vous l'avez bloquée avec les règles Google Cloud Armor appropriées, Adaptive Protection génère des alertes sur les comportements futurs du trafic qui vont être considérés comme des départs d'attaque par rapport au comportement de référence.

Adaptive Protection analyse le trafic qui serait autorisé par une stratégie de sécurité Google Cloud Armor. Si vous définissez la règle par défaut pour refuser l'accès, avec une liste blanche restreinte de trafic autorisé, Adaptive Protection ne va détecter d'activités malveillantes que sur le trafic soumis à évaluation, selon la liste blanche.

Adaptive Protection a généré un trop grand nombre d'alertes ou de journaux dans Cloud Logging

Une alerte Adaptive Protection fournit un score de confiance, qui indique dans quelle mesure les modèles Adaptive Protection identifient l'activité détectée comme étant anormale et représentant potentiellement une attaque. Vous pouvez filtrer l'entrée spécifique du journal via Cloud Logging pour n'afficher (ou ne transférer en aval) que les alertes dont le score de confiance est supérieur à un seuil particulier.

Adaptive Protection fournit un mécanisme pour signaler les alertes constituant des faux positifs, comme décrit dans la section Surveiller, envoyer des commentaires et signaler les erreurs d'événements. Notez que le signalement de faux positifs peut ne pas entraîner de modifications immédiates sur les éléments déclenchant une alerte Adaptive Protection. Au fil du temps, les modèles Adaptive Protection apprennent à détecter que ces modèles de trafic sont normaux et acceptables, et Adaptive Protection cesse de déclencher des alertes sur ces modèles.

Si les alertes Adaptive Protection sont trop fréquentes sur un sous-ensemble de services de backend dans une stratégie de sécurité, elles peuvent suggérer que le trafic normal de ces services de backend présente des fluctuations significatives qui sont constamment identifiées par Adaptive Protection comme des comportements anormaux. Vous pouvez créer une stratégie de sécurité distincte, sans activer Adaptive Protection, et associer ces services de backend à la nouvelle stratégie de sécurité.

Un incident spécifique signalé par Adaptive Protection est considéré comme un faux positif ou n'est pas pertinent

Adaptive Protection fournit un mécanisme permettant de signaler les fausses alertes. Suivez la procédure décrite à la section Surveiller, envoyer des commentaires et signaler les erreurs d'événements. Notez que le signalement de faux positifs peut ne pas entraîner de modifications immédiates sur les éléments déclenchant une alerte Adaptive Protection. Au fil du temps, les modèles Adaptive Protection apprennent à détecter que ces modèles de trafic sont normaux et acceptables, et Adaptive Protection cesse de déclencher des alertes sur ces modèles.

Étape suivante