Avr 022012
 

Pour se protéger des attaques SYN FLOOD :

Limiter le nombre de connexions parallèles par IP :

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP

Pour se protéger des attaques par SYN FLOOD et QUERY FLOOD :

Limiter le nombre de connexions par seconde par IP (exemple 20 maximum sur 10 secondes sur le port 80):
Le Hitcount ne doit pas être supérieur à 20

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 20 -j DROP

Plus radical, limiter le nombre de paquet syn par seconde :

iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 13 -j DROP

Ou limiter le nombre de paquet syn par seconde par range d’ip (exemple /28) :

iptables -A INPUT -p tcp --dport 80 --tcp-flags SYN SYN -m hashlimit --hashlimit-name Web \
--hashlimit-above 10/second --hashlimit-mode srcip --hashlimit-burst 13 --hashlimit-srcmask 28 -j DROP

Pour bloquer une requête HTTP :

iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t' -j DROP

Pour log les IPs qui flood ajouter :

iptables -N flood
iptables -A flood -j LOG --log-prefix "FLOOD "
iptables -A flood -j DROP

et remplacer DROP par flood aux règles précédentes

Mar 062012
 

Si votre routeur a un cache arp trop long, il est possible d’envoyer une trame ARP en broadcast ou ciblant directement le routeur où on déclare une IP et la MAC correspondante, et ainsi rafraîchir le cache.

Un inconvénient, la plupart des équipements réseau sécurise leur cache ARP pour éviter du ARP spoofing. Ils refusent les paquets de réponse ARP qui ne correspondent pas à une demande.

Un petit script pour envoyer ces paquets automatiquement en récupérant les adresses définis et la passerelle du système :

#!/bin/bash
 
TEST_IP=8.8.8.8
if [ ! -x /sbin/ip ] ; then
        apt-get install iproute -y
fi
if [ ! -x /bin/grep ] ; then
        apt-get install grep -y
fi
 
GW=`/sbin/ip route list | /bin/grep default | /usr/bin/awk '{print $3}'`
DEV=`/sbin/ip route list | /bin/grep default | /usr/bin/awk '{print $5}'`
 
if [ ! -x /usr/sbin/arping ] ; then
        apt-get install arping -y
fi
 
if [ ! -x /usr/bin/fping ] ; then
        apt-get install fping -y
fi
 
for ip in `/sbin/ip address list $DEV | /bin/grep "inet " | /usr/bin/awk '{print $2}' | /usr/bin/cut -d'/' -f1` ; do
        if [ `/usr/bin/fping -S $ip -c 1 $TEST_IP 2>&1 | /bin/grep "0% loss" | /usr/bin/wc -l` -eq 0 ] ; then
                echo "ARPING from $ip"
                /usr/sbin/arping -S $ip -c 1 -w 2 -i $DEV $GW &> /dev/null
        fi
done
 Posted by at 13 h 27 min  Tagged with:
Fév 192012
 

TCPDUMP

Tout sauf le ssh :

tcpdump -n port not 22

Tout sauf moi :

tcpdump -n host not <IP>

Les paquets syn et ack sur le port 80 :

tcpdump -n tcp and port 80 and 'tcp[tcpflags] & tcp-syn == tcp-syn'

Les paquets syn sur le port 80 :

tcpdump -n tcp and port 80 and 'tcp[tcpflags] == tcp-syn'

Les paquets arp ou ping :

tcpdump -enqti eth0 \( arp or icmp \)

NETSTAT

Le nombre de connexions sur le port 80 :

netstat -nt | grep ":80" | awk '{print $5}' | cut -d':' -f1 | sort | uniq -c

Port qui écoute :

netstat -tulpn

Nomre de connexions :

netstat -nt | wc -l