Denegar tráfico con rutas nulas

No siempre es necesario establecer una regla de firewall para denegar tráfico, también podemos hacerlo desviándolo por una ruta nula (null or blackhole route)

Por lo general podríamos decir que una ruta nula será más eficiente en sistemas con muchas reglas de filtrado y una regla de filtrado será más eficiente en sistemas con muchas rutas.
 
Por ejemplo esto podría ser bastante interesante en sistemas donde existen numerosas reglas de iptables y queremos evitar un DoS de forma sencilla y rápida. 

Otro ejemplo idóneo para ver su funcionamiento sería bloquear la ip 192.168.0.195 que está intentando establecer continuamente una sesión ssh contra nuestra máquina. Si queremos denegar el tráfico desde esa ip con una ruta nula simplemente añadiremos con el comando ip:

 root@server:~# ip route add blackhole 192.168.0.195/32 
 

Para verificar si la ruta se ha añadido correctamente:

 root@server:~# ip route show
 default via 192.168.0.1 dev eth0 metric 100
 blackhole 192.168.0.195


A partir de ese momento nuestro sistema ya no enviará respuestas SYN/ACK a la ip especificada y cuando vuelva a intentar conectarse recibirá el siguiente error:

 baduser@attacker:~$ ssh 192.168.0.197
 ssh: connect to host 192.168.0.197 port 22: No route to host


Finalmente si queremos desbloquear la IP borraremos la ruta añadida:

 root@server:~# ip route del 192.168.0.195
 root@server:~# ip route show
 default via 192.168.0.1 dev eth0 metric 100

 
Fuentes:
- Mitigating DoS Attacks with a null (or Blackhole) Route on Linux
- Null route
- How do I Drop or block attackers IP with null routes?

Comentarios