Note :

Modification du billet de 2015.

Attack Detection kézako :

L’attack detection est une fonctionnalité disponible sur les ProxySG, cette dernière permet de protéger l’appliance et d’alerter l’administrateur qu’une machine de son réseau a un soucis. Il faut savoir que chaque modèle d’appliance a un nombre de connexion HTTP max. Au dela d’un certains nombre de connexions ou connexions échouées sur une période donnée, l’IP est blacklistée pour une durée spécifiée par l’administrateur

Limites de connexions :

Legacy Current ASG Virutal Appliance
Connexions limits Connexions limits Connexions limits Connexions limits

Source

Voir les connexions max que supporte son proxy, aller dans Management Console>Statistics>Advanced>HTTP>Show HTTP Statistics>HTTP Worker Statistics>Maximum Acceptable Concurrent Client Connections.

Configuration :

ProxySG# conf t
ProxySG#(config)attack-detection
ProxySG#(config attack-detection)client
ProxySG#(config client)enable-limits
ProxySG#(config client)view
Client limits enabled:          true
Client interval:                10 minutes

Default client limits:
    Client connection limit:          500
    Client failure limit:             250
    Client warning limit:             100
    Blocked client action:            Drop
    Client connection unblock time:   unlimited

ProxySG#(config client)create 1.1.1.1
ok
ProxySG#(config client)edit 1.1.1.1
ProxySG#(config client 1.1.1.1)no connection-limit
ok
ProxySG#(config client 1.1.1.1)no failure-limit
ok
ProxySG#(config client 1.1.1.1)no warning-limit
ok
ProxySG#(config client 1.1.1.1) ctrl-Z
ProxySG#(config client) ctrl-Z
ProxySG#(config attack-detection) ctrl-Z
ProxySG#(config) ctrl-Z

Visualisation de la configuration :

ProxySG#show attack-detection client
Client limits enabled:            true
Client interval:                  10 minutes

Default client limits:
    Client connection limit:          500
    Client failure limit:             250
    Client warning limit:             100
    Blocked client action:            Drop
    Client connection unblock time:   unlimited

Client limits for 1.1.1.1/32:
    Client connection limit:          unlimited
    Client failure limit:             unlimited
    Client warning limit:             unlimited
    Blocked client action:            Drop
    Client connection unblock time:   unlimited

Dans cette configuration, tout le monde est limité à 500 connexions HTTP ou 250 “mauvaises connexions” sur une période de 10 minutes avec un warning à 100 connexions puis sont bloqués indéfiniment. Ce qui necessite une intervention de l’administrateur. Mais on fait une exception pour la machine 1.1.1.1 qui n’a pas de limite.

Visualisation de la configuration :
ADP

failed requests :

SGOS 6.4.X - failure limit par défaut

  • Connection failures (DNS lookup errors, connection refused, connection timed out, host unreachable, …)
  • Code HTTP retourné au client : 501, 502, 503 ou 504

SGOS 6.5.X - failure limit par défaut

  • Connection failures (DNS lookup errors, connection refused, connection timed out, host unreachable, …)
  • Erreurs status codes HTTP 4xx (excluant 401 et 407) et 5xx HTTP répondu par le ProxySG ou l’OCS.

Voir les clients bloqués :

ProxySG#show attack-detection client blocked
Client               Unblock time
1.2.2.2              Never
2.2.2.2              Never

Via un navigateur : https://URL:8082/ADP/blocked-clients

Si vous avez activé la notification par e-mail (syslog aussi), vou recevrez un mail ayant pour objet “ProxySG Appliance Event 580000” et comme contenu :

2014-12-25 10:01:01+01:00CET "Blocking client IP address 2.2.2.2, exceeded request failure limit " 0 580000:1 Mailed logging.cpp:52

En Syslog :

Oct 14 05:55:01 10.10.10.10 ProxySG: 580000 Client 2.2.2.2 has exceeded failure limit (0) SEVERE_ERROR logging.cpp 52  
Oct 14 05:55:02 10.10.10.10 ProxySG: 580000 Client 2.2.2.2, has exceeded warning limit and is now blocked (0) SEVERE_ERROR logging.cpp 52

Débloqué une IP :

ProxySG# conf t
Enter configuration commands, one per line.  End with CTRL-Z.
ProxySG#(config)attack-detection
ProxySG#(config attack-detection)client
ProxySG#(config client)unblock 2.2.2.2
ok

Afficher le nombre de connexions par clients :

ProxySG#show attack-detection client connections
Client IP           Connection Count
3.3.3.3             1
4.4.4.4             1
5.5.5.5             22

Afficher les statistiques de requests failure :

ProxySG#show attack-detection client statistics
Client IP            Failure Count     Warning Count
6.6.6.6              2                 0

Infos en GUI interessantes :

https://@IP_SWG:PORT/ADP/clients
https://@IP_SWG:PORT/tcpcc/show

Désactivation de l’attack detection :

ProxySG# conf t
ProxySG#(config)attack-detection
ProxySG#(config attack-detection)client
ProxySG#(config client)disable-limits

Désactiver certains code HTTP :

Il est parfois nécessaire de ne pas compter certains code HTTP, je vais prendre l’exemple de la mise à jour d’un serveur Linux, si pour une raison quelconque le mirroir lui envoie des 404 (page introuvable).
Le proxy va lancer sont compteur et risque de bloquer l’IP du serveur.

Code CPL :

<Proxy>
http.response.code=403 attack_detection.failure_weight(0)
http.response.code=503 attack_detection.failure_weight(0)
http.response.code=400 attack_detection.failure_weight(0)
;;;exclusion des failures pour les status http venant du proxy

<Exception>
exception.id=policy_denied attack_detection.failure_weight(0)
exception.id=user_defined.user-defined.Categorie_denied attack_detection.failure_weight(0)
exception.id=invalid_request attack_detection.failure_weight(0)

Dans le premier block on désactive les codes HTTP 403, 503 et 400 venant du proxy.
Dans le second, on désactive pour les pages custom de blocage.