1 de marzo de 2010

Bloquear ataques Syn flood en Linux

Hace poco mencioné como protegerse contra ataques Syn flood en Windows.

Hoy toca protegerse en Linux :-) Recordemos que si queremos entender cómo funciona un ataque syn flood y cómo se lleva a cabo, leemos los siguentes tutoriales:

- Protección contra Syn Flood en Windows XP
- Tutorial Syn flood -- Windows y Linux



A continuación explico los parámetros básicos de configuración para protegerse contra éstos ataques, asi como el funcionamiento de cada parámetro.

Seguir leyendo 'Bloquear ataques Syn flood en Linux'





Probar los parámetros


Antes de modificar valores en el sistema, probamos cada línea que a continuación vamos a escribir. Aprovecho para explicar cada línea en ésta parte del tutorial.

Lo primero que tendremos que hacer es activar los "cookies de SYN". En particular, el uso de "SYN cookies" permiten a un equipo rechazar conexiones entrantes y mantener las ya estables cuando la cola esté llena. Para ello, escribimos:

   sudo sysctl -w net.ipv4.tcp_syncookies=1


Una vez hecho esto, pasamos a aumentar el ‘backlog queue’, es decir, dar mas holgura al sistema para procesar peticiones entre-abiertas.

   sudo sysctl -w net.ipv4.tcp_max_syn_backlog=2048


Ahora, disminuimos el tiempo de espera a la respuesta SYN-ACK.

   sudo sysctl -w net.ipv4.tcp_synack_retries=2



Puesta en práctica


Para dejar fijo los cambios, entramos en el sistema como superusiaro. En este ejemplo, he usado ubuntu, por lo tanto, navegamos en nautilus como superusuario.

   gksudo nautilus

Tendremos que navegar a la carpeta /etc y abrir el archivo sysctl.conf
Una vez abierto el archivo, buscamos algo similar a

# Uncomment the next line to enable TCP/IP SYN cookies".

A la cadena de texto que está tres líneas más abajo, le quitaremos el "#".
Ahora, debajo de "Log martian packets" copiaremos todo lo que acabamos de probar:


   net.ipv4.tcp_syncookies= 1
   net.ipv4.tcp_max_syn_backlog= 2048
   net.ipv4.tcp_synack_retries= 2

Guardamos y listo, nuestro sistema es inmune a los ataques SYN flood.


1 De marzo de 2010
Última actualización el 12 de Noviembre de 2010




2 comentarios:

  1. Lo de copiar toda esa basura debajo en el sysctl.conf no funcionará. Primero porque al ponerlo todo con # estará comentado y nunca se ejecutará. Si usted lo probó verá que aunque no le da error no estará evitando nada de nada.

    Ni siquiera funcionará quitando las # en las lineas:
    #sysctl -w net.ipv4.tcp_syncookies= 1
    #sysctl -w net.ipv4.tcp_max_syn_backlog= 2048
    #sysctl -w net.ipv4.tcp_synack_retries= 2

    Al quitar las # dará un error como una casa ya que el formato de ese archivo no incluye la posibilidad de que se ponga la orden sysctl -w.

    Lo correcto sería poner dentro del archivo /etc/sysctl.conf las siguientes líneas como se puede ver en muchos manuales de Internet:

    net.ipv4.tcp_syncookies= 1
    net.ipv4.tcp_max_syn_backlog= 2048
    net.ipv4.tcp_synack_retries= 2

    Además debe asegurarse de que ya esas variables no estan definidas ya en el fichero. De ser así podría dar problemas.
    Corríjalo y sea más riguroso por favor.

    Que le vaya bien con su blog.

    ResponderEliminar
  2. Interesante. Una cosa más.

    Saludos!!

    ResponderEliminar