Mitigar TCP Syn flood

17 07 2013

Si queremos proteger nuestro servidor linux de un ataque SYN flood, o al menos intentarlo, deberemos añadir las siguientes entradas en el archivo /etc/sysctl.conf:

# Protection SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

net.ipv4.tcp_syncookies
Habilitar el uso de SYN cookies. Sólo empezará a funcionar en el caso de que el sync_backlog se llene.

rp_filter
Habilita la comprobación del enrutado de la ip, es decir, no se puede hacer ip spoofing. No es específica para sync flood pero conviene tenerla también.
http://www.ifup.org/2011/02/03/reverse-path-filter-rp_filter-by-example/

tcp_max_syn_backlog
Define cuantas conexiones en proceso de apertura tienen que mantenerse en cola. Por defecto son 2048.
http://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html

tcp_synack_retries
Define cuantas veces se debe intentar el establecimiento de una conexión TCP establecida por otro equipo, por defecto es 5.
http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn-attacks

Detectar un ataque SYN Flood

Si queremos comprobar si el servidor esta teniendo problemas con las conexiónes TCP, se puede ver fácilmente con netstat:
# netstat -n -p TCP tcp | grep SYN_RECV

Más información:
http://blog.exceliance.fr/2012/02/27/use-a-load-balancer-as-a-first-row-of-defense-against-ddos/
http://lwn.net/Articles/277146/
http://labs.creativecommons.org/2010/12/08/tuning-tcp-on-ccs-servers/
http://lkml.indiana.edu/hypermail/linux/kernel/0802.0/2161.html
http://serverfault.com/questions/294209/possible-syn-flooding-in-log-despite-low-number-of-syn-recv-connections

Advertisements

Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: