Underc0de

Foros Generales => Noticias Informáticas => Mensaje iniciado por: Lokomotion en Mayo 26, 2017, 04:50:48 PM

Título: El reemplazo de las iptables: nftables
Publicado por: Lokomotion en Mayo 26, 2017, 04:50:48 PM
(https://i2.wp.com/aprendizdesysadmin.com/wp-content/uploads/2017/05/logo_debian.png?w=635&ssl=1)
Welcome nftables!

Este mes de Mayo el proyecto Debian anuncio, que incluirá oficialmente el framework nftables en su próxima versión estable (Debian Strech), por lo que si todavía no has empezado a familiarizarte con nftables deberías ir haciéndolo ya.

Diferencias entre IPtables y nftables.
Estas serian algunas de la mejoras/diferencias básicas que incluye nftables, además según nuestras necesidades, y según a que niveles, nftables es una herramienta mucho más útil que nuestro viejo conocido iptables, y esto es debido a que el nuevo código evita la duplicación de código existente en iptables y sus extensiones, que generalmente eran especificas para un protocolo, esto hinchaba la base de código con un código muy similar para realizar una tarea similar, coincidencia de carga.

Como podemos ver las mejoras internas son sustanciosas y extensas, y ahora nos toca a nosotros adaptarnos a estos cambios y sacarle todo el provecho que podamos a nftables, al igual que hacíamos con iptables.
Al final de este post dejare unos cuantos enlaces de interés, en el que se amplían todas estas diferencias y mejoras, mientras tanto nosotros veremos unas cuantas operaciones básicas con nftables, y en el siguiente post haremos una migración de iptables a nftables.

Operaciones básicas.

Tablas
Tenemos que ver las tablas como meros contenedores para las cadenas. En nftables no hay tablas predefinidas  (filter, raw, mangle...) y aunque podemos seguir recreando el estilo de iptables, somos libres de crearlas como queramos.
Otro punto a tener en cuenta son las familias de tablas:
Agregar Tablas

# nft add table ip filter

Eliminar tablas

% nft delete table ip filter

Cadenas

Las cadenas se utilizan para agrupar reglas, y al igual que las tablas no hay ninguna predefinida y se diferencian entre Cadenas Base y Cadenas Non-Base, la diferencia entre ambas es la siguiente:
Disponemos de 3 tipos de cadenas filter, route y NAT, y 5 tipos de hooks, si conoces iptables ya los conocerás: prerouting, input, forward, output, postrouting.

Esta seria la sintaxis habitual:

% nft add chain [<family>] <table-name> <chain-name> { type <type> hook <hook> priority <value> \; }

Agregar cadenas

% nft add chain ip filter input { type filter hook input priority 0 \; }

Eliminar cadenas

# nft delete chain ip filter input

Reglas

Las reglas especifican qué acción se debe tomar para los paquetes, y dichas reglas pueden tener una expresión para hacer coincidir paquetes y una o más acciones a realizar cuando se emparejan. Esta es una de las diferencias principales respecto a iptables,  es posible especificar varias acciones y por defecto los contadores están desactivados, además se debe especificar explícitamente en las reglas, si desea habilitar los contadores de paquetes y bytes para una regla. Cada regla tiene un número de identificador diferente y único para poder diferenciarlas.
Los siguientes partidos están disponibles:
Agregar regla

# nft add rule ip filter input tcp dport 80 drop

Eliminar regla, es necesario obtener el "handle" de la regla.

# nft rule ip filter input tcp dport 80 drop
table ip filter {
        chain input {
                 type filter hook input priority 0;
                 tcp dport http drop # handle 2
        }
}


En nuestro caso sería el número 2.

# nft delete rule ip filter input handle 2

Como se puede ver, con un conocimiento previo de iptables y un mínimo de ingles, la creación de tablas, cadenas y reglas es un tarea sencilla, y en nuestro primer acercamiento no queremos "liaros" mas de lo necesario.

Fuente: aprendizdesysadmin.com