20 de marzo de 2009

Nuevo firewall habemus: adios iptables, bienvenido nftables

Parece ser que Patrick McHardy, uno de los desarrolladores de iptables, ha sacado a la luz la primera versión de nftables, un sustituto de iptables reescrito desde cero y en fase muy alpha. El anuncio original da aun más detalles que la anterior noticia.

Francamente, despues de leer varias veces el anuncio original, no soy capaz de averiguar exactamente qué mejoras tiene respecto a iptables (además los temas de redes me producen sopor y soy un cateto en estas cuestiones). Parece tratarse de una gran mejora en cuanto a como se implementa internamente este tipo de mecanismos, pero exteriormente (en lo que viene a ser lo que el usuario puede hacer con esta herramienta) es lo mismo, exceptuando que desparecen algunas restricciones presentes en iptables, que el "lenguaje" de la línea de comandos parece ser mucho más intuitiva, y que el sistema es, en general, mejor.

La principal mejora a ojos del usuario parece ser que se rompe la relación "una regla, una acción", lo cual a veces obliga a encadenar varias reglas en iptables para ejecutar varias acciones simultaneas sobre un mismo paquete, en nftables parece que se podrían tener varias acciones en una sola regla. El ejemplo que ponen de esto es el de al detectar un determinado paquete, informar de su presencia a los logs, contarlo y posteriormente drop-earlo. En iptables esto parece requerir por narices de tres reglas, en nftables puede hacerse en una (y no se trata de una cuestión del interprete que pueda solucionarse en iptables con algún tipo de comando "wrapper", como han hecho muchos proyectos con propósito de hacer "más fácil" el uso de uptables)

Por lo demás, la descripción indica que el diseño de este nuevo juguetito se ha hecho siguiendo la tradición unixera de separar estríctamente los mecanismos de las políticas, lo cual tiene como resultado una implementación del lado del kernel mucho más pequeña que la de iptables, más simple y muy escalable, y una mayor participación de la herramienta de espacio de usuario en el proceso de la "política" introducida por el usuario. El programa "construye" de algún modo las reglas, crea una representación interna de las reglas que el kernel entiende, se envía al kernel mediante netlink y éste se encargaría de hacer lo que esa representación ordena que se haga. Siento no poder ser más específico, pero parece un tema más apropiado para desarrolladores de compiladores (es decir, un coñazo). Y perdonenme, pero es sábado y es la hora a la que la gente suele empezar a salir a los bares.

2 comentarios:

  1. Pues si podemos poner tres acciones en una misma regla sería muy bueno, pero no veo cómo una línea así sería más intuitiva.
    Pero bueno, siempre y cuando sea mejor que el anterior bienvenido sea.

    ResponderEliminar
  2. Te explico! La principal ventaja desde el punto de vista del programador es que podrán manejarse las reglas de nftables mediante la API de libnl. De esa manera será mucho más fácil crear un firewall para linux, porque no habrá que estar invocando a iptables y parseando la salida del comando como hasta ahora.

    ResponderEliminar