Una mejor forma de defender tu servidor SSH contra ataques de fuerza bruta

publicado 11/08/2010, Última modificación 26/06/2013

Hay en la Internet muchos sitios con reglas IPTables útiles. Esta es una versión mejorada

-A INPUT -i eth0.103 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
-A INPUT -i eth0.103 -p tcp -m tcp --dport 22 -m recent --rcheck --seconds 30 --hitcount 4 --rttl --name SSH --rsource -j REJECT --reject-with tcp-reset
-A INPUT -i eth0.103 -p tcp -m tcp --dport 22 -m recent --rcheck --seconds 30 --hitcount 3 --rttl --name SSH --rsource -j LOG --log-prefix "SSH brute force "
-A INPUT -i eth0.103 -p tcp -m tcp --dport 22 -m recent --update --seconds 30 --hitcount 3 --rttl --name SSH --rsource -j REJECT --reject-with tcp-reset
-A INPUT -i eth0.103 -p tcp -m tcp --dport 22 -j ACCEPT

Eso es todo

Pero ¿cómo funciona?

OK, en español.  Tú programas estas cinco reglas en tu tabla iptables llamada filter (la tabla por defecto).

  1. La primera regla le dice al sistema:
    Datagramas TCP van a llegar, que intentarán establecer conecciones SSH.  Márcalos.  Ten en cuenta la dirección de origen de cada paquete.
  2. La segunda dice:
    Si un datagrama intenta conectarse por SSH, y es el cuarto o más en 30 segundos, recházalo y olvídate de él.
  3. La tercera y la cuarta significan:
    Si un datagrama intenta conectarse por SSH, y es el tercer intento en 30 segundos, haz una nota en la bitácora y recházalo.
  4. La quinta regla dice
    El resto de datagramas SSH, acéptalos.

Y eso es todo.  Probablemente querrás cambiar la interfaz de red en las reglas (-i eth0.103) para que describa la interfaz de red conectada a la Internet en tu computador.  También puedes querer ajustar el número de segundos y el contador de hits.  Recuerda que la segunda regla tiene un contador de hits un número más alto que las demás -- es una precaución para que la detección de ataques no te replete las bitácoras del equipo.  Puede que ello no sea un problema para tí, pero lo es para mí porque mi computador me dice en voz alta cuando estoy siendo atacado.