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.
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 .
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 .
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_cadenasignifica “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 ”.
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]
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 .
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=2La utilidad conntrack le permite controlar el mecanismo de detección de estado.
nftables es un proyecto diseñado para reemplazar el paquete de tablas {ip, ip6, arp, eb} existentes.
cortafuegos | ||
---|---|---|
Libre | ||
Libre |
| |
Comercial |
| |
Hardware |