PDA

Ver la versión completa : Syn Flood, que es y como mitigarlo



LUK
07-09-2010, 09:47
Hoy día es sorprendente ver como ataques que fueron descritos a principios de los 90 perduran y siguen siendo efectivos en un buen numero de situaciones.


Uno de ellos, tal vez de los más clásicos, es el Syn Flood (http://en.wikipedia.org/wiki/SYN_flood). Este tipo de ataque es posible debido a la forma en la que funcionan las conexiones TCP. Cuando un extremo desea iniciar una conexión contra otro equipo, inicia la conversación con un 'SYN', el otro extremo ve el SYN y responde con un SYN+ACK, finalmente el extremo que empezó la conexión contesta con un ACK y ya pueden empezar a transmitir datos.


http://1.bp.blogspot.com/_Ot9DEZXsUg4/S4Vf7vjDiAI/AAAAAAAAA3I/W4OfB-looyM/s200/Tcp-handshake.png (http://1.bp.blogspot.com/_Ot9DEZXsUg4/S4Vf7vjDiAI/AAAAAAAAA3I/W4OfB-looyM/s1600-h/Tcp-handshake.png)

Un ataque de tipo Syn Flood lo que hace es empezar un numero especialmente alto de inicios de conexión que nunca son finalizados, dejando al servidor a la espera del ack final, y por tanto consumiendo recursos de forma desproporcionada. Existen muchas herramientas (http://www2.packetstormsecurity.org/cgi-bin/search/search.cgi?searchvalue=syn+flood&type=archives&[search].x=0&[search].y=0) escritas en todo tipo de lenguajes para hacer un ataque de tipo Syn Flood y no se requiere especial habilidad para llevar acabo un ataque de ese tipo.


Mitigando un ataque Syn Flood

A la hora de fortificar un sistema para contrarrestar un ataque de tipo Syn Flood existenparámetros que se pueden configurar en el sistema operativo para hacerlo mas resistente.


En sistemas Linux:
Primer paso, activar las syn cookies (mas información sobre que es y como se construye una syn cookie aquí (http://cr.yp.to/syncookies.html))


# sysctl -w net.ipv4.tcp_syncookies="1"


Segundo paso, aumentar el 'backlog queue' (es decir, dar mas holgura al sistema para procesar peticiones entre-abiertas)


# sysctl -w net.ipv4.tcp_max_syn_backlog="2048"


Tercer paso, hacer que el sistema minimice el tiempo de espera en la respuesta al SYN+ACK. En principio un sistema Linux 'por defecto' esperará 3 minutos, nosotros lo vamos a dejar en 21 segundos


#sysctl -w net.ipv4.tcp_synack_retries=2



(una vez probados los cambios, hay que hacerlos permanentes en /etc/sysctl.conf)



En sistemas Windows :

Activación de la protección anti Syn Flood:



C:\>reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Param eters /v SynAttackProtect /t REG_DWORD /d 1



Aumentamos el 'backlog queue'



C:\>reg add HKLM\System\CurrentControlSet\Services\AFD\Paramet ers /v EnableDynamicBacklog /t REG_DWORD /d 1



C:\>reg add HKLM\System\CurrentControlSet\Services\AFD\Paramet ers /v MinimumDynamicBacklog /t REG_DWORD /d 20



C:\>reg add HKLM\System\CurrentControlSet\Services\AFD\Paramet ers /v MaximumDynamicBacklog /t REG_DWORD /d 20000



C:\>reg add HKLM\System\CurrentControlSet\Services\AFD\Paramet ers /v DynamicBacklogGrowthDelta /t REG_DWORD /d 10

Decrementamos el tiempo de espera en conexiones 'Half Open'


C:\>reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Param eters /v TcpMaxConnectResponseRetransmissions /t REG_DWORD /d 2




Ya solo queda rebootar Windows para que los cambios tengan efecto




[+] Las configuraciones han sido extraídas de este magnífico artículo (http://www.securityfocus.com/infocus/1729)



Publicado por Yago Jesus en http://www.securitybydefault.com/2010/02/syn-flood-que-es-y-como-mitigarlo.html

killerdelic
03-10-2010, 13:53
Para evitar este tipo de ataques es obvio que con un FIREWALL bien configurado. es suficiente para detener este tipo de ataques.

Cuando tienes el firewall en modo interactivo, te muestra toda las conexiones que establecen conexion con tu conexion. Osea al momento de enviar el SYN del otro lado el firewall lo detecta y se podria Denegar el acceso y rechazar todo ataque.