IPTABLES en el Linux Kernel 2.6 +

Introducción

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 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.

Descripciones de mesa

Tabla filter

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.

Tabla nat

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.

Tabla mangle

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 o el campo TOS, o marcar los paquetes para el filtrado posterior.

Ruta de acceso de paquetes

Los Paquetes Reenviados

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.

Paquetes Recibidos

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 Enviados

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.

Firewall Generador

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.

Instrucciones de Instalación RedHat

  1. Asegúrese de que ipchains no se iniciará de forma automática:

    chkconfig --level 0123456 ipchains off

    Esto se asegurará de que el guión ipchains init.d no está vinculado a un archivo S en cualquiera de los directorios rc.
  2. Deje de ipchains si se está ejecutando:

    service ipchains stop
  3. Ejecutar lsmod para ver si todavía se carga el módulo del kernel ipchains. Si lo es, el uso rmmod para descargarlo.
  4. Revise el sistema de vincular los init.d script de inicio de iptables en estados de ejecución 2, 3 y 5:

    chkconfig --level 235 iptables on
  5. Guarde este script y ejecutarlo para cargar el conjunto de reglas de este archivo. Es posible que tenga que ejecutar el comando dos2unix en él para eliminar los retornos carraige.
  6. Guarde el conjunto de reglas en /etc/sysconfig/iptables. Esto puede hacerse de dos maneras:

    service iptables save
    iptables-save > /etc/sysconfig/iptables
  7. El conjunto de reglas será restaurado por /etc/init.d/iptables script en el arranque.

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.

Cerrar Ventana