Configurando un firewall anti DDoS en Linux

Bueno lo prometido es deuda hace unos dias prometi explicar en cierta forma como evitar un DDoS, pues bien hay formas sencillas como hay formas mas complicadas aqui pongo el ejemplo:

iptables -A INPUT -p tcp -d IP -m length –length 40:48 -j DROP //este comando nos ayuda para botar los paquetes de cierta longitud
iptables -A INPUT -p tcp -s 0.0.0.0/0 -d IP -m ttl –ttl 111 -j DROP //este comando bloqueara automaticamente todos los paquetes entrantes con cierto valor TTL (otra forma comun de ataque DDOS)

Estos comandos son algo digamos sencillos como para detener un DDoS algo novato, ahora que tal si nos atacan de una manera menos novata.

echo "Bloquea escaneos TCP-CONNECT (SYN bit packets)"
iptables -A INPUT -p tcp --syn -j DROP
echo "Bloquea escaneos TCP-SYN (only SYN bit packets)"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP
echo "Bloquea escaneos TCP-FIN (only FIN bit packets)"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP
echo "Bloquea escaneos TCP-ACK (only ACK bit packets)"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP
echo "Bloquea escaneos TCP-NULL (packets without flag)"
iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j DROP
echo "Bloquea escaneos "Christmas Tree" TCP-XMAS (packets with FIN, URG, PSH bits)"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP
echo "Bloquea DOS - Ping of Death(ping de la muerte)"
iptables -A INPUT -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT
echo "Bloquea DOS - Teardrop"
iptables -A INPUT -p UDP -f -j DROP
echo "Bloquea DDOS - SYN-flood"
iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 9 -j DROP
echo "Bloquea DDOS - Smurf"
iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkttype broadcast -j DROP
iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT
echo "Bloquea DDOS - UDP-flood (Pepsi)"
iptables -A INPUT -p UDP --dport 7 -j DROP
iptables -A INPUT -p UDP --dport 19 -j DROP
echo "Bloquea DDOS - SMBnuke"
iptables -A INPUT -p UDP --dport 135:139 -j DROP
iptables -A INPUT -p TCP --dport 135:139 -j DROP
echo "Bloquea DDOS - Connection-flood"
iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 3 -j DROP
echo "Bloquea DDOS - Fraggle"
iptables -A INPUT -p UDP -m pkttype --pkt-type broadcast -j DROP
iptables -A INPUT -p UDP -m limit --limit 3/s -j ACCEPT
echo "Bloquea DDOS - Jolt"
iptables -A INPUT -p ICMP -f -j DROP

Bueno no digo que con esto esten 100% seguros y que la seguridad de sus servidores estara al pelo para eso deben tambien actualizar su servidor constantemente las denegaciones de servicio provienen de las fallas de seguridad y/o bugs, muchas veces y casi siempre es bueno tener un firewall hardware dedicado 100% a su funcion FIREWALL, mientras pueden tener este firewall de aca asi mismo en bash script, lo he probado y si protege en cierta forma

wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

Bueno solo con un poco mas de conocimientos podran desarrollar algo mas robusto y estable, recuerden todo es posible tanto como por el lado del administrador y por el lado de atacante!!!

Comentarios

Entradas populares