OVH Community, votre nouvel espace communautaire.

[How-To] - Gestion des SYN flood avec Shorewall


TBC_Ly0n
25/07/2009, 16h46
Bonjour,

Hier, SYN flood + Spoofing IP...
Pendant une petite journée, j'ai bloqué des millions de paquets à tour de bras.

Si vous utilisez Shorewall, l'idée d'utiliser les commandes iptables directement peut vous déplaire. Du coup, voila un petit script qui vous permettra de résister à un SYN flood en utilisant les fonctionnalités de Shorewall

Code:
while [ true ]
do
  BL=`shorewall show dynamic`
  LISTE_IPS=`netstat -tanpu | awk '/SYN_RECV/ {print $5}' | cut -f1 -d':' | sort | uniq -c | awk '{if ($1 > 10) {print $2}}'`
  if [ ! -z "$LISTE_IPS" ]
  then
    echo "$LISTE_IPS" | while read IP
    do
      echo "$BL" | grep "$IP" > /dev/null 2>&1
      if [ $? -ne 0 ]
      then
        shorewall drop $IP
      fi
    done
    /etc/init.d/apache stop > /dev/null 2>&1
    /etc/init.d/pure-ftpd stop > /dev/null 2>&1
    sleep 10
    /etc/init.d/apache start > /dev/null 2>&1
    /etc/init.d/pure-ftpd start > /dev/null 2>&1
  fi
  sleep 2
done
Les services redémarrés sont à modifier en fonction du SYN flood auquel vous avez droit. Hier, c'était une attaque sur le port FTP et HTTP... (en même temps, il n'y avait que trois ports d'ouverts sur la machine !)

Pour détailler le fonctionnement :
- je blackliste une fois chaque IP (les connexions peuvent ne pas être fermées immédiatement)
- je redémarre les services impactés s'il y a encore trop de requêtes SYN.

Comme on dit : HTH