Este cap�tulo se centra en las bases del filtrado esencial de paquetes, define las diferencias entre ipchains e iptables, explica las diferentes opciones disponibles con comandos iptables y muestra c�mo se pueden preservar las reglas de filtrado durante reinicios del sistema.
18.1. Filtrado de paquetes
El kernel de Linux tiene incorporado la caracter�stica interna de filtrar paquetes, permitiendo aceptar algunos de ellos en el sistema mientras que intercepta y para a otros. El netfilter del kernel tiene tres tablas o listas de reglas incorporadas. Son las siguientes:
filter — La tabla por defecto para el manejo de paquetes de red.
nat — Usada para alterar paquetes que crean una nueva conexi�n y utilizada para la Traducci�n de direcciones de red (Network Address Translation, NAT).
mangle — Usada por tipos espec�ficos de alteraci�n de paquetes.
| Sugerencia |
---|
| Adem�s de estas tablas incorporadas, se pueden crear tablas especializadas y almacenarlas en el directorio /lib/modules/<kernel-version>/kernel/net/ipv4/netfilter/, donde <kernel-version> corresponde al n�mero de la versi�n del kernel. |
Cada una de estas tablas tiene un grupo de cadenas incorporadas que corresponden a las acciones llevadas a cabo por el filtro de la red.
Las cadenas internas para la tabla filtro son las siguientes:
INPUT — Aplica a los paquetes recibidos a trav�s de una interfaz de red.
OUTPUT — Esta cadena sirve para paquetes enviados por medio de la misma interfaz de red que recibi� los paquetes.
FORWARD — Esta cadena sirve para paquetes recibidos en una interfaz de red y enviados en otra.
Las cadenas internas para la tabla nat son las siguientes:
PREROUTING — Altera los paquetes de red cuando estos llegan.
POSTROUTING — Esta cadena altera paquetes antes de que sean enviados por medio de una interfaz de red.
POSTROUTING — Altera los paquetes de red cuando estos son enviados.
PREROUTING — Esta cadena altera paquetes recibidos por medio de una interfaz de red cuando llegan.
OUTPUT — Esta cadena altera paquetes generados localmente antes de que sean dirigidos por medio de una interfaz de red.
POSTROUTING — Esta cadena altera paquetes antes de que sean enviados por medio de una interfaz de red.
Las cadenas internas para la tabla mangle son las siguientes:
PREROUTING — Esta cadena altera paquetes recibidos por medio de una interfaz de red antes de que sean dirigidos.
POSTROUTING — Altera los paquetes de red cuando estos son enviados.
Cada paquete de red recibido o enviado desde un sistema Linux est� sujeto a al menos una tabla. Sin embargo, un paquete puede estar sometido a m�ltiples reglas dentro de cada tabla antes de emerger al final de la cadena. La estructura y prop�sito de estas reglas puede variar, pero normalmente buscan identificar un paquete que viene de o se dirige hacia una direccci�n IP en particular, o un conjunto de direcciones, cuando utiliza un determinado protocolo y servicio de red.
| Nota |
---|
| No utilice nombres de dominio completos en las reglas del cortafuegos que se guardan en los archivos /etc/sysconfig/iptables o /etc/sysconfig/ip6tables. En el ejemplo siguiente: iptables -A FORWARD -s example.com -i eth0 -j DROP example.com no es v�lido porque el servicio iptables comienza antes de cualquier servicio DNS relacionado, lo que produce un error. Solamente las direcciones IP son v�lidas para la creaci�n de reglas de cortafuegos. |
Independientemente de su destino, cuando un paquete cumple una regla en particular en una de las tablas, se les aplica un objetivo (target) o acci�n a ellos. Si la regla especifica un objetivo ACCEPT para un paquete que coincida, el paquete se salta el resto de las verificaciones de la regla y se permite que contin�e hacia su destino. Si una regla especifica un objetivo DROP, a ese paquete se le niega el acceso al sistema y no se env�a nada de vuelta al servidor que envi� el paquete. Si una regla especifica un objetivo QUEUE, el paquete se pasa al espacio del usuario. Si una regla especifica el objetivo opcional REJECT, el paquete es descartado, pero se env�a un paquete de error al que envi� el paquete.
Cada cadena tiene una pol�tica por defecto de ACCEPT, DROP, REJECT, o QUEUE. Si ninguna de estas reglas en la cadena se aplican al paquete, entonces el paquete es tratado de acuerdo a la pol�tica por defecto.
El comando iptables configura estas tablas, as� como tambi�n configura nuevas tablas si es necesario.