Si una IP te molesta… mándala a null

por | septiembre 13, 2015

Y donde digo una IP también podemos incluir un grupo de IPs. La cuestión es que crear una ruta null/blackhole puede resultar muy útil para evitar ataques individuales o DDoS que impliquen más de un atacante.

De hecho, si echamos un vistazo a fail2ban, por defecto suele utilizar la opción más común para realizar un baneo de IP, que no es otra que inyectar una regla en iptables para denegarle las conexiones al host infractor. Este comportamiento puede cambiarse en el mismo fail2ban para que los baneos los haga con route como podemos ver.

Mandando una IP a una ruta blackhole/null

Como su nombre indica, es una ruta “a ninguna parte”. Un host remoto al que se le aplique una ruta de este tipo y que intente conectarse con nuestra máquina nunca recibirá una respuesta SYN/ACK por nuestra parte.

Supongamos que la IP 192.168.2.124 está tocándonos las narices. Procedemos a banearla de una manera muy sencilla, con una sintaxis más simple que la que utilizaríamos con iptables:

ip route add blackhole 192.168.2.124

Después comprobamos el estado de las rutas con:

ip route show

Veremos una entrada con:

blackhole 192.168.2.124

Otras formas de banearla igualmente válidas:

route add -host 192.168.2.124 reject
route add 192.168.2.124 gw 127.0.0.1 lo

Como idea o tip: con un poco de scripting se podría crear una lista de servidores (e incluso que esa lista se generara de forma dinámica leyendo logs de un servidor Nginx o Apache) y después proceder a banear a los hosts infractores aplicándoles rutas blackhole. Me lo pongo como tarea pendiente para subir un script al respecto a GitHub cuando tenga algo más de tiempo.

Si queremos quitar el baneo…

Supongamos que le hemos cerrado la puerta al visitante equivocado. O que por el contrario se tratara de un servidor comprometido que nos lanzaba ataques pero ya se encuentra “arreglado”. Podemos levantar un baneo de una forma igualmente sencilla:

ip route delete 192.168.2.124

Podemos comprobar con ip route show que efectivamente no hay ninguna entrada blackhole/null para esa IP.

Conclusión: banear una IP con route y aplicando rutas null/blackhole es más fácil que cocinarse un sándwich de jamón y queso.