Comment bloquer les adresses IP dans HAProxy?


Réponses:


21

Vous pouvez supprimer une adresse IP au niveau tcp en créant une liste de contrôle d'accès, puis en utilisant le rejet de connexion si la liste de contrôle d'accès correspond:

    acl bad_ip src 10.10.10.0
    tcp-request connection reject if bad_ip

Vous pouvez également configurer un backend 403 et les y envoyer si vous voulez le faire au niveau HTTP:

frontend foo
        ...
        acl bad_ip src 10.10.10.0
        use_backend bad_guy if bad_ip
...

backend bad_guy
        mode http
        errorfile 403 /etc/haproxy/errors/403.http

Ces ACL peuvent être assez flexibles, et vous pouvez faire en sorte que plusieurs conditions dans une ACL, ou plusieurs ACL dans l'action doivent être remplies. Plus sur http://haproxy.1wt.eu/download/1.5/doc/configuration.txt .


4
Vous n'avez besoin d'un backend séparé que si vous souhaitez utiliser une page d'erreur 403 personnalisée. Sinon, vous pouvez vous en tirer avec "http-request deny if bad_ip"
sh-beta

1
Connaissez-vous un moyen de lire les ips à partir d'un magasin plus flexible, comme db ou fichier plat séparé?
UpTheCreek

1
Ce backend bad_guy ne fonctionne pas comme prévu, car il n'a pas de serveurs définis, il est considéré comme "en panne" et retournera toujours 503 - service non disponible. Je pense que vous pouvez simplement écrire "block if bad_ip" dans la configuration frontale et cela lancera correctement la page 403. EDIT: http-request nie si bad_ip fonctionne comme annoncé par @ sh-beta - fait essentiellement la même chose, mais peut-être juste pour les requêtes http?
Dalibor Filus

Il y a une autre légère différence entre le blocage et le refus de requête http et c'est la suivante: "une règle" bloc "placée après une règle" use_backend "sera toujours traitée avant."
Dalibor Filus

2
Si vous donnez un "méchant" 403, il sait qu'il est bloqué et cherchera un autre vecteur. Si vous donnez à un "méchant" un 503 ... alors il pense qu'il a réussi à provoquer un DOS et arrête l'attaque. Bien sûr, il peut le comprendre mais cela lui prendra beaucoup plus de temps.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.