Publicado el 8 de Abril del 2019
1.282 visualizaciones desde el 8 de Abril del 2019
756,8 KB
71 paginas
Creado hace 8a (17/06/2016)
NFTABLES
Autor: Manuel Luna Pérez
Fecha: 17/06/2016
NFTABLES
Índice
1. Documentación ........................................................................................................ 3
1.1 Introducción ....................................................................................................... 3
1.1.1 ¿QUÉ ES? ................................................................................................... 3
1.1.2 ¿Por qué utilizar nftables? .......................................................................... 3
1.1.3 Principales diferencias con iptables ............................................................ 4
1.1.4 Hooks netfilter ............................................................................................ 6
1.2 Empezando ........................................................................................................ 7
1.2.1 Construcción e instalación de nftables desde código fuente. ..................... 7
1.2.2 Nftables desde las distribuciones .............................................................. 10
1.3 Operaciones básicas ......................................................................................... 11
1.3.1 Configuración de tablas ............................................................................ 11
1.3.2 Configuración de cadenas ......................................................................... 13
1.3.3 Gestión sencilla de reglas ......................................................................... 18
1.3.4 Reemplazo masivo de reglas .................................................................... 22
1.3.5 Informe de errores desde línea de comandos ........................................... 23
1.3.6 Construcción de reglas con expresiones ................................................... 24
1.3.7 Operaciones a nivel de ruleset .................................................................. 24
1.3.8 Monitorización de actualizaciones del ruleset .......................................... 26
1.3.9 Scripting .................................................................................................... 27
1.3.10 Depuración/rastreo de ruleset ................................................................. 28
1.4. Selectores de coincidencia de paquetes soportados ........................................ 30
1.4.1 Coincidencia de campos según cabecera de paquetes. ............................. 30
1.4.2 Coincidencia de paquetes según metainformacion................................... 32
1.4.3 Coincidencia según estado de conexión ................................................... 34
1
NFTABLES
1.4.4 Coincidencia según límites ....................................................................... 35
1.5 Acciones posibles sobre paquetes.................................................................... 36
1.5.1 Aceptando y descartando paquetes ........................................................... 36
1.5.2 Saltando a cadena ..................................................................................... 36
1.5.3 Rechazando tráfico ................................................................................... 38
1.5.4 Registrando el tráfico ................................................................................ 39
1.5.5 Traducción de direcciones de red (NAT) ................................................. 40
1.5.6 Configuración de metainformación de paquetes ...................................... 42
1.5.7 Duplicación de paquetes ........................................................................... 43
1.5.8 Contadores ................................................................................................ 44
1.6 Estructura de datos avanzadas para la de clasificación de paquetes ............... 44
1.6.1 Conjuntos .................................................................................................. 44
1.6.2 Diccionarios .............................................................................................. 46
1.6.3 Intervalos .................................................................................................. 48
1.6.4 Mapas ........................................................................................................ 48
1.6.5 Concatenaciones ....................................................................................... 49
1.7 Ejemplos .......................................................................................................... 50
1.7.1 Ruleset simple para un workstation .......................................................... 50
fw.basic .............................................................................................................. 50
fw6.basic ............................................................................................................ 51
fw.inet.basic ....................................................................................................... 51
1.7.2 Filtrado de bridge ...................................................................................... 52
1.7.3 Múltiples NAT’s utilizando mapas nftables ............................................. 52
2. Instalación de cortafuegos nftables con control de versiones mediante git. ......... 53
3. Referencias ............................................................................................................ 70
2
NFTABLES
1. Documentación
1.1 Introducción
1.1.1 ¿QUÉ ES?
Nftables es una nueva infraestructura de clasificación de paquetes cuya intención es
reemplazar la infraestructura actual {ip,ip6,arp,eb}_tables.
● Está disponible en los kernels de linux >= 3.13.
● Tiene una nueva línea de comandos (nft) cuya sintaxis es diferente de la de
iptables.
● Viene con una capa de compatibilidad que permite ejecutar comandos de
iptables sobre la nueva infraestructura de nftables
● Proporciona una
infraestructura que permite
construir mapas y
concatenaciones. Se puede utilizar esta nueva característica para organizar un
ruleset en árbol multidimensional, que hace que se reduzca drásticamente el
número de reglas que necesitan consultarse hasta que se encuentre qué acción
realizar sobre el paquete.
1.1.2 ¿Por qué utilizar nftables?
Iptables nos ha servido (y probablemente seguirá sirviendo aún durante un tiempo en
muchas implementaciones) para filtrar el tráfico tanto por paquete como por flujo,
registrar actividades sospechosas en el tráfico, realizar NAT y otras muchas cosas.
Viene con más de un centenar de extensiones que han sido presentadas a lo largo de
los últimos 15 años. Sin embargo, la infraestructura de iptables sufre de limitaciones
que no pueden trabajar fácilmente en torno a:
3
NFTABLES
● Evitar la duplicación de código y las incoherencias: Muchas de las
extensiones de iptables son de protocolo específico, por lo que no es una
forma consolidada para que coincida con los campos de paquetes, en su lugar
tenemos una extensión para que cada protocolo sea soportado. Esto incha el
código base con un código muy similar para realizar una tarea similar.
Coincidencia de carga útil.
● Clasificación de paquetes más rápida a través de un conjunto genérico
mejorado e infraestructura de mapeo de datos.
● Simplificada la administración dual de IPv4/IPv6, a través de la nueva familia
inet que permite registrar cadenas base que vean el tráfico tanto de IPv4
como IPv6.
● Soporte de actualizaciones dinámicas a un ruleset.
● Proporcionar una API Netlink para aplicaciones de terceros, al igual que otras
redes linux y el subsistema netfilter hace.
● Inconsistencias en la sintaxis de direcciones y proporcionar la sintaxis más
agradable y más compacta.
1.1.3 Principales diferencias con iptables
Las principales diferencias entre nftables e iptables desde el punto de vista del
usuario son:
● La sintaxis. La herramienta de línea de comandos iptables utiliza un
analizador basado en getopt_long(), donde las claves son siempres precedidas
por doble guión, (ej. --key) o un solo guión (ej. -p tcp). En ese sentido,
nftables es más agradable, más intuitivo y más compacto respecto a la
sintaxis que se inspira en la de tcpdump.
● Las tablas y las cadenas son totalmente configurables. En nftables, las tablas
son contenedores de cadenas sin una semántica determinada. Iptables viene
con tablas y con un número predefinido de cadenas, que son registradas en el
sistema independientemente de si van a ser usadas o no. Se han generado
informes en los que se dice que las cadenas no realizadas perjudican el
4
NFTABLES
rendimiento, incluso si no añadimos ninguna regla. Con este nuevo enfoque,
se pueden registrar las cadenas necesarias que necesitamos dependiendo de su
configuración. Por otra parte, también se puede modelar la canalización
mediante las prioridades de cadenas en la forma que necesitemos y
seleccionar cualquier nombre para las tablas y cadenas.
● No hay más distinciones entre “matches” y “targets”. En nftables, las
expresiones son el componente básico de una regla, por lo tanto, una regla es
básicamente una composición de expresiones que se evalúan de forma lineal
de izquierda a derecha: si la primera expresión coincide, entonces la
siguiente expresión será evaluada y así sucesivamente hasta llegar a la última
expresión al final de la regla.
● Podemos especificar varias acciones en una sola regla. En iptables sólo puede
especificarse un solo targe
Comentarios de: Proyecto NFTables (0)
No hay comentarios