Este documento tiene como objetivo proporcionar un breve resumen de iptables, los conceptos involucrados, y la manera en que esos conceptos son implementados en este generador de Firewall.
IPTables reemplazados IPChains como el servidor de seguridad de la opción en el kernel 2.4 de Linux.
IPChains strong> es un apátrida firewall. Se examina cada paquete como una entidad separada, por lo que cada paquete debe tener una regla asociada a ella.
IPTables es un stateful firewall. Se rastrea el estado de una conexión durante su vida. Por lo tanto cada paquete puede estar asociado con un estado. O bien se trata de establecer una NEW conexión, que es parte de una conexión ESTABLISHED o RELATED con una conexión, o el paquete está en un estado INVALID. Un cortafuegos sin estado pueden ser anuladas si un protocolo permitió se discierne. Un cortafuegos de estado, en comparación, detecta que el paquete no es parte de una sesión en curso y se puede configurar para evitar la entrada al paquete. Por tanto, un servidor de seguridad con estado es más seguro que un cortafuegos sin estado. Dado que muchas de las normas se puede confiar en el estado del paquete, un servidor de seguridad con estado general, requiere menos reglas que un cortafuegos sin estado. Esto reduce las posibilidades de error humano también.
Un firewall iptables se compone de varias tablas, cada una con una política predeterminada y cadenas de orden interna de reglas. Otras cadenas de reglas opcionalmente se pueden crear en cada mesa. Diferentes tablas y cadenas son atravesadas según el origen y el destino del paquete. Un paquete que se recibe a través de una interfaz de red en el sistema pasa a través de una secuencia de pasos antes de que se maneja localmente o se reenvía a otro host.
La tabla de filter es la tabla por defecto para cualquier regla. Es el lugar donde se produce la mayor parte del trabajo en un firewall iptables. Evitar el filtrado en cualquier otra mesa, ya que puede que no funcione. Cuenta con tres cadenas de orden interna de uso común. Esas cadenas son INPUT, OUTPUT y FORWARD. Los paquetes destinados para el anfitrión atraviesan la cadena INPUT. Los paquetes creados por el host para enviar a otro sistema atraviesan la cadena OUTPUT. Los paquetes recibidos por el anfitrión que están destinadas a otro anfitrión atraviesan la cadena FORWARD.
El Network Address Translation o tabla nat se utiliza para traducir el origen o el campo de destino en los paquetes. Un sistema con una dirección IP estática debería utilizar la traducción de direcciones de red de origen (SNAT), ya que utiliza menos recursos del sistema. Sin embargo, iptables también es compatible con los anfitriones con una conexión dinámica con el Internet con una mascarada característica. Masquerade utiliza la dirección actual en la interfaz para la dirección traducción.
La tabla mangle se utiliza para modificar ciertos campos en las cabeceras de los paquetes IP. Se puede utilizar para cambiar el Tiempo to Live o TTL, cambio el Tipo de Servicio i> o el campo TOS, o marcar los paquetes para el filtrado posterior.
Un paquete que está destinado a otro host se llama un paquete reenviado. En primer lugar, pasa a través de la cadena PREROUTING de la tabla mangle. Luego atraviesa la cadena PREROUTING de la tabla nat. Aquí es donde se aplican las reglas DNAT. Luego el paquete atraviesa la cadena FORWARD en la tabla filter. Esta es la única cadena en la que las reglas de filtrado se debe aplicar al paquete. Luego el paquete pasa a la POSTROUTING cadena de la tabla nat. En esta cadena, se aplican las reglas de SNAT y enmascaramiento. Luego el paquete pasa por la interfaz de salida.
Los paquetes dirigidos al localhost primero atravesar la cadena PREROUTING de la tabla mangle. A continuación se pasan a través de la cadena PREROUTING en la tabla nat. Aquí es donde se aplican las reglas DNAT. Después de que las reglas DNAT, debe tomarse una decisión de enrutamiento. Si el paquete es realmente diseñado para el host local, se recorre la cadena INPUT en la tabla de filtros. Todo el filtrado se realiza en esta cadena. Los paquetes que se aceptan se pasan entonces al proceso local o aplicación para la que está destinado.
Los paquetes que se generan en el host local primero atraviesan la cadena OUTPUT de la tabla mangle. A continuación pasan por la cadena OUTPUT de la tabla nat. A continuación, se pasan a través de la cadena de salida de la tabla de filtros. Una vez que el paquete ha pasado esas cadenas, el sistema debe determinar dónde está el paquete debe ser encaminado. Una vez tomada esta decisión, el paquete atraviesa la cadena POSTROUTING de la tabla nat. Aquí es donde se aplican las reglas de SNAT y enmascaramiento. Luego el paquete pasa a través de la interfaz de red adecuada.
Los scripts de servidor de seguridad generados por este programa utilizan varios convenios. Reglas de la tabla Filtro se dividen principalmente entre varias cadenas de reglas definidas por el usuario. Esto está destinado a hacer que el servidor de seguridad más fácil de seguir y para reducir al mínimo el número de reglas cada paquete individual debe atravesar. Paquetes dudosos se definen como paquetes en un estado INVALID o cualquier paquete que no sean paquetes SYN que se encuentran en un NEW estado. Se aceptan los paquetes que se encuentran en un estado ESTABLISHED o RELATED. Son parte de una sesión en curso. Entrante TCP, UDP, e ICMP paquetes se pasan a una cadenas separadas para determinar si se deben aceptar. De forma predeterminada, se aceptan desde la interfaz interna y eliminados de la interfaz externa. Solicitudes TCP desde la red interna para el reenvío se pasa a través de una cadena de salida para ver si debe ser rechazada. De forma predeterminada, se aceptan esas solicitudes.
NOTA: /etc/init.d/iptables script puede ser modificado para ejecutar este script en su lugar. Si lo hace, guarde una copia para que pueda volver a aplicar las modificaciones después de actualizar el paquete iptables. La ventaja de usar este script para la operación continua del servidor de seguridad se le da un mayor control sobre los módulos y conjuntos de reglas utilizadas. Sin embargo, el anterior es más simple.