Filtre anti-DDoS générique

On le sait tous, le DDoS c’est une plaie ! Il y a en même temps mille et aucune manière de s’en prémunir réellement, et finalement, de la même manière que la meilleur prévention contre le SIDA est l’abstinence, la meilleure prévention contre le DDoS, est de n’être pas connecté au réseau… facile à dire.

On a déjà vu que Fail2Ban apporte quelques solutions contre ce type d’attaque, mais ce n’est pas forcément suffisant. Je vous propose donc ici une configuration de iptables qui tachera de filtrer et de bloquer les DDoS.

#! /bin/bash

MAXHIT=30
BURST=40

# créé une nouvelle chaine iptables
iptables -N seuil

# definir les limites de trafic au delà desquelles on vire les paquets
# vérifie que le paquet entre dans les limites et l'accepte
# puis stocke l'ip dans une table de hash pendant 1mn pour comparaison ultérieure
iptables -A seuilattaque -m hashlimit \
 --hashlimit-name seuil \
 --hashlimit-upto $MAXHIT/minute \
 --hashlimit-mode srcip \
 --hashlimit-burst $BURST \
 --hashlimit-htable-expire 60000 \
-j ACCEPT

# si le paquet est hors limite, il est dropé 
iptables -A seuil -j DROP

# passer tout le trafic dans le chaine seuil
iptables -A INPUT -p -tcp --dport 80 -j seuil

Il ne vous reste plus ensuite qu’à lancer ce script au démarrage en renseignant son path dans /etc/rc.local. Et n’oubliez pas de le rendre exécutable ;)

Déjà 4 réponses, rejoignez la discussion !

  • MagiCrazy

    dit :

    Super intéressant, je ne connaissais pas les hashlimit d’iptables, je pense que je vais y jeter un oeil pour le coup =)
    Ca reste pas évident à doser le seuil au-delà duquel on jette tout le monde. Un petit peu de tweaking pour renvoyer sur une page statique, quelque part, indiquant que le serveur est surchargé ? :)

    • Buzut

      dit :

      c’est pas bien facile de doser tout ça ! J’avais vu l’astuce dans je ne sais plus quel magazine, et j’avais trouvé bien intéressant. Mais il faudrait que je regarde tout cela de plus près aussi.

      Après un tweak pour faire ce que tu dis… hum, à part un truc pas bien propre via un petit script bash et un cron qui pourrait aller modifier ton .htaccess, je ne vois pas trop.

      • Magic.Crazy

        dit :

        De mémoire, il est possible de rediriger la demande d’iptables vers, une autre machine par exemple. Mais peut-être que ça n’empêchera pas le DDoS, sur la machine cible, ou celle vers laquelle on redirige la demande. C’était juste une idée, peut-être idiote :)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *