D'après la documentation iproute d'Alexey adaptée à netfilter. Si vous utilisez ceci, prenez garde d'ajuster les nombres avec des valeurs raisonnables pour votre système.
Si vous voulez protéger tout un réseau, oubliez ce script, qui est plus adapté à un hôte seul.
Il apparaît que la toute dernière version de l'outil iproute2 est nécessaire pour que ceci fonctionne avec le noyau 2.4.0.
#! /bin/sh -x # # script simple utilisant les capacités de Ingress. # Ce script montre comment on peut limiter le flux entrant des SYN. # Utile pour la protection des TCP-SYN. Vous pouvez utiliser IPchains # pour bénéficier de puissantes fonctionnalités sur les SYN. # # chemins vers les divers utilitaires # À changer en fonction des vôtres # TC=/sbin/tc IP=/sbin/ip IPTABLES=/sbin/iptables INDEV=eth2 # # marque tous les paquets SYN entrant à travers $INDEV avec la valeur 1 ############################################################ $iptables -A PREROUTING -i $INDEV -t mangle -p tcp --syn \ -j MARK --set-mark 1 ############################################################ # # installe la file d'attente ingress sur l'interface associée ############################################################ $TC qdisc add dev $INDEV handle ffff: ingress ############################################################ # # Les paquets SYN ont une taille de 40 octets (320 bits), donc trois SYN # ont une taille de 960 bits (approximativement 1Kbit) ; nous limitons donc # les SYNs entrants à 3 par seconde (pas vraiment utile, mais sert à # montrer ce point -JHS ############################################################ $TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 1 fw \ police rate 1kbit burst 40 mtu 9k drop flowid :1 ############################################################ # echo "---- qdisc parameters Ingress ----------" $TC qdisc ls dev $INDEV echo "---- Class parameters Ingress ----------" $TC class ls dev $INDEV echo "---- filter parameters Ingress ----------" $TC filter ls dev $INDEV parent ffff: #supprime la file d'attente ingress #$TC qdisc del $INDEV ingress