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
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