Filtro de red

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 15 de octubre de 2018; las comprobaciones requieren 8 ediciones .
filtro de red
Tipo de cortafuegos
Desarrollador Equipo central de Netfilter
Escrito en xi
Sistema operativo en el núcleo de Linux
Licencia GNU GPL
Sitio web netfilter.org
 Archivos multimedia en Wikimedia Commons

netfilter  es un cortafuegos (cortafuegos) integrado en el kernel de Linux desde la versión 2.4.

Título

iptables es el nombre de una utilidad  de usuario(que se ejecuta desde la línea de comandos) diseñada para administrar el sistema netfilter. Los administradores lo utilizan para crear y modificar reglas que controlan el filtrado y el reenvío de paquetes . Para trabajar con la familia de protocolos IPv6 , existe una versión separada de la utilidad iptables: ip6tables .

Algunos autores bajo la palabra netfilter se refieren solo a aquellos elementos del firewall que son directamente parte de la pila de protocolos del núcleo , y todo lo demás (el sistema de tablas y cadenas) se llama iptables [1] . Debido a que la terminología no es del todo clara [2] , a veces todo el proyecto (cortafuegos dentro del kernel junto con la utilidad de usuario) se denomina simplemente netfilter/iptables .

Historia

El proyecto netfilter/iptables fue fundado en 1998 por Rusty Russell ( en:Rusty Russell ); también es el autor del proyecto predecesor de ipchains . A medida que se desarrollaba el proyecto, en 1999 se formó el equipo central de Netfilter (abreviado como coreteam). El cortafuegos desarrollado se denominó oficialmente netfilter. En marzo de 2000, se incluyó en el kernel de Linux 2.3. En agosto de 2003, Harald Welte se convirtió en el jefe del equipo central . En 2004, Welte inició y ganó una demanda contra Sitecom GmbH, que usaba netfilter en sus productos pero se negaba a seguir la GPL de GNU [3] .

Antes de la llegada de iptables , los proyectos Linux 2.2 ipchains y Linux 2.0 ipfwadm , que a su vez se basan en ipfw del sistema BSD , se usaban para proporcionar capacidades de firewall en Linux . Los proyectos ipchains e ipfwadm cambiaron la forma en que funcionaba la pila de protocolos del kernel de Linux, porque antes de la llegada de netfilter, no había forma en la arquitectura del kernel de conectar módulos de administración de paquetes adicionales. iptables retuvo la idea básica de ipfwadm: una lista de reglas que consta de criterios y una acción que se debe tomar si un paquete coincide con los criterios. Se introdujo un nuevo concepto en ipchains: la capacidad de crear nuevas cadenas de reglas y la transición de paquetes entre cadenas, y en iptables el concepto se amplió a cuatro tablas que delimitan cadenas de reglas por tarea: filtrado, NAT y modificación de paquetes. Además, iptables ha ampliado el estado de Linux, lo que le permite crear cortafuegos que funcionan a nivel de sesión .

Arquitectura

En el sistema netfilter, los paquetes pasan a través de cadenas . Una cadena es una lista ordenada de reglas , y cada regla puede contener criterios y una acción o transición . Cuando un paquete pasa a través de la cadena, el sistema netfilter verifica a su vez si el paquete cumple con todos los criterios de la siguiente regla y, de ser así, realiza una acción (si no hay criterios en la regla, entonces la acción se realiza para todos los paquetes que pasan por la regla). Hay muchos criterios posibles. Por ejemplo, un paquete coincide con --source 192.168.1.1 si el encabezado del paquete especifica que el remitente es 192.168.1.1. El tipo de transición más simple --jump, simplemente reenvía el paquete al comienzo de otra cadena. También puede especificar una acción con --jump . Las acciones estándar disponibles en todas las cadenas son ACEPTAR (omitir), DROP (eliminar), COLA (transferir a un programa externo para análisis) y RETURN (regresar a la cadena anterior para análisis). Por ejemplo, comandos

iptables -A ENTRADA --fuente 192.168.1.1 --jump ACEPTAR iptables -A INPUT --saltar otra_cadena

significa “agregar las siguientes reglas al final de la cadena INPUT : omitir paquetes de 192.168.1.1, y enviar todo lo que queda por enviar a la otra_cadena para su análisis ”.

Cadenas

Hay 5 tipos de cadenas estándar integradas en el sistema:

También puede crear y destruir sus propias cadenas utilizando la utilidad iptables. [cuatro]

Tablas

Las cadenas se organizan en 4 tablas:

Las cadenas con el mismo nombre pero en diferentes tablas son objetos completamente independientes. Por ejemplo, PREROUTING raw y mangle PREROUTING generalmente contienen un conjunto diferente de reglas; los paquetes pasan primero por la cadena PREROUTING sin procesar y luego por la cadena PREROUTING mangle .

Mecanismo estatal

La máquina de estado (seguimiento de conexiones) es un sistema de seguimiento de conexiones, una parte importante de netfilter, que implementa un cortafuegos con estado a nivel de sesión. El sistema le permite determinar a qué conexión o sesión pertenece un paquete. El motor de estado analiza todos los paquetes excepto aquellos marcados como NOTRACK en la tabla sin procesar .

En el sistema netfilter, cada paquete que pasa por el mecanismo de estado puede tener uno de cuatro estados posibles:

Esta clasificación de paquetes difiere en muchos casos de la descripción oficial de los protocolos de red. Por ejemplo, según netfilter, un paquete TCP SYN ACK es parte de una sesión existente, mientras que, según la definición de TCP, dicho paquete es solo un elemento de apertura de sesión.

Definir sesiones para algunos protocolos es muy sencillo; por ejemplo, una señal de una sesión UDP  : un cliente del puerto X envía paquetes al servidor en el puerto Y (o viceversa) al menos una vez cada 30 segundos. Para otros protocolos ( FTP , SIP , H.323 , etc.), la sesión es más difícil de determinar y netfilter debe analizar el contenido de los paquetes para determinar correctamente su estado.

Puede ver los atributos de las conexiones activas en el pseudoarchivo /proc/net/nf_conntrack (o /proc/net/ip_conntrack) . Para cada conexión, se indica la siguiente información:

tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [SIN RESPONDER] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 [ASEGURADO] use=2

La utilidad conntrack le permite controlar el mecanismo de detección de estado.

Véase también

nftables es un proyecto diseñado para reemplazar el paquete de tablas {ip, ip6, arp, eb} existentes.

Notas

  1. Coulson, David Mastering IPTables  (inglés)  (enlace no disponible) . www.linuxformat.co.uk (4 de abril de 2001). Consultado el 14 de julio de 2007. Archivado desde el original el 13 de febrero de 2007.
  2. Chris Kaspersky "Técnicas para ataques a la red. Contramedidas. Capítulo 'Qué es Internet' (Arquitectura de Internet. Árbol de protocolos. Paquetes en Internet. Asignación de puertos.)"
  3. Urteil Harald Welte gegen Sitecom Deutschland GmbH  (alemán)  (enlace inaccesible) . Tribunal de Múnich (19 de mayo de 2004). Archivado desde el original el 24 de febrero de 2012.
  4. Denis Kolisnichenko. Aplicación de servidor Linux. 3ra edición. Capítulo "Configurar el cortafuegos", página 372.
  5. iptables: ¿cadena INPUT integrada en la tabla nat? - Fallo del servidor . Consultado el 22 de abril de 2014. Archivado desde el original el 11 de marzo de 2014.
  6. kernel/git/torvalds/linux.git - Árbol de fuentes del kernel de Linux

Enlaces

administración de netfilter