implementado como parte del proyecto Netfilter. El término iptables también se usa
comúnmente para referirse a dicho cortafuegos del kernel. Puede configurarse directamente
con iptables, o usando uno de los muchos frontend existentes de consola y gráficos. El
término iptables se usa para IPv4, y el término ip6tables para IPv6.
Tanto iptables como ip6tables tienen la misma sintaxis, pero algunas opciones son específicas
de IPv4 o de IPv6.
nftables está programada para ser liberada con el kernel de Linux 3.13, y vendrá a sustituir
definitivamente iptables como la principal utilidad del cortafuegos de Linux.
Contents
[hide]
1Instalación
o 1.1Frontend
1.1.1De consola
1.1.2Gráficos
2Conceptos básicos
o 2.1Tablas
o 2.2Cadenas
o 2.3Reglas
o 2.4Cadenas transversales
o 2.5Módulos
3Configuración y utilización
o 3.1Desde la línea de órdenes
3.1.1Mostrar las reglas vigentes
3.1.2Restablecer las reglas
3.1.3Modificar las reglas
o 3.2Guías
4Registro
o 4.1Limitar el tamaño del registro
o 4.2Visualizar los paquetes registrados
o 4.3syslog-ng
o 4.4ulogd
5Véase también
Instalación
Todos los kernels de serie de Arch Linux son compatibles con iptables. Solo
necesita instalar las herramientas en el espacio de usuario, que son proporcionadas por el
paquete iptables. El paquete iproute2 presente en el grupo base depende de iptables,
por lo que el paquete iptables debe estar instalado en su sistema por defecto.
Frontend
De consola
Arno's firewall — Es un cortafuegos seguro, útil tanto para uno como para varios
equipos. Muy fácil de configurar, de administrar y altamente personalizable. Admite: NAT y
SNAT, reenvío de puertos, gestión de asignación de IP tanto estáticas como
dinámicamente para módems ADSL ethernet, filtrado de direcciones MAC, detección de
escaneo sigiloso de puertos, desvío DMZ y DMZ-2-LAN, protección contra saturación
SYN/ICMP, amplio registro definible por el usuario con limitación de velocidad para evitar
desbordamiento de registros, todos los protocolos IP y VPN tales como IPsec,
compatibilidad con complementos para agregar funciones adicionales.
http://rocky.eld.leidenuniv.nl/ || arno-iptables-firewallAUR
Conceptos básicos
iptables se usa para inspeccionar,
modificar, reenviar, redirigir y/o eliminar
paquetes de red de IP. El código para
filtrar paquetes de IP ya está integrado
en el kernel y está organizado en una
colección de tablas, cada una con un
propósito específico. Las tablas están
formadas por un conjunto
de cadenas predefinidas, y las cadenas
contienen reglas que se recorren en
orden consecutivo. Cada regla consiste
en una condición asociada a una
eventual acción (llamada target) que si
se cumple, se ejecuta la regla; esto es,
se aplican las reglas si las condiciones
coinciden. iptables es la utilidad de
usuario que le permite trabajar con estas
cadenas/reglas. La mayoría de los
usuarios nuevos consideran que las
complejidades del enrutamiento IP de
linux son bastante desalentadoras, pero,
en la práctica, los casos de uso más
comunes (NAT y/o cortafuegos básico
de Internet) son considerablemente
menos complejos.
La clave para entender cómo funciona
iptables es este gráfico. La palabra
minúscula en la parte superior es
la tabla y la palabra en mayúscula
siguiente es la cadena. Cada paquete de
IP que viene en «cualquier interfaz de
red» pasa a través de este diagrama de
flujo de arriba hacia abajo. Una
confusión muy común es creer que los
paquetes que ingresan desde, (digamos,
para entendernos), una interfaz interna
para consumo interno, se manejan de
forma diferente a los paquetes desde
una interfaz orientada a Internet. Todas
las interfaces se manejan de la misma
manera. Depende de uno definir las
reglas que las traten de manera
diferente. Por supuesto, algunos
paquetes están destinados a procesos
locales, por lo tanto, vienen desde la
parte superior del gráfico y se detienen
en <Proceso local>; mientras que otros
paquetes son generados por procesos
locales; por lo tanto, comienzan en
<Proceso local> y continúan hacia abajo
a través del diagrama de flujo. Puede
encontrar una explicación detallada de
cómo funciona este diagrama de
flujo aquí.
En la gran mayoría de los casos, no será
necesario utilizar las
tablas raw, mangle, o security a la vez.
En consecuencia, el siguiente cuadro
muestra un flujo simplificado de
paquetes de red a través de iptables:
X
XXXXXXXXXXXXXXXXX
X
XX Red XXX
X
XXXXXXXXXXXXXXXXX
v
+--------------+ +-
------------------+
|tabla: filter| <---+ |
tabla: nat |
|cadena: INPUT | | |
cadena: PREROUTING|
+-----+--------+ | +-
-------+----------+
| |
|
v |
v
[proceso local] | ****
******************** +----
-----------+
| +---+ Deci
sión de enrutamiento +---> |tabl
a: filter |
v ****
******************** |cade
na: FORWARD|
************************
+------+--------+
Decisión de enrutamiento
|
************************
|
|
|
v ****
********************
|
+--------------+ +---+ Deci
sión de enrutamiento <----------
--+
|tabla: nat | | ****
********************
|cadena: OUTPUT| |
+
+-----+--------+ |
|
| |
v
v | +--
------------------+
+---------------+ | | t
abla: nat |
|tabla: filter | +---+ | c
adena: POSTROUTING|
|cadena: OUTPUT | +--
------+-----------+
+---------------+
|
v
X
XXXXXXXXXXXXXXXXX
X
XX Red XXX
X
XXXXXXXXXXXXXXXXX
Tablas
iptables cuenta con cinco tablas:
Cadenas
Las tablas contienen cadenas, que son
listas de reglas que se siguen
consecutivamente. Por defecto, la
tabla filter contiene tres cadenas
integradas: INPUT, OUTPUT y FORWARD q
ue se activan en diferentes puntos del
proceso de filtrado de paquetes de red,
como se ilustra en el diagrama de flujo.
La tabla nat incluye las
cadenas PREROUTING, POSTROUTING,
y OUTPUT.
Véase iptables(8) para obtener una
descripción de las cadenas integradas
en otras tablas.
Por defecto, ninguna de las cadenas
contiene ninguna regla. Depende de uno
agregar reglas a las cadenas que quiera
usar. Las cadenas hacen lo definido en
su política predeterminada, que
generalmente se establece en ACCEPT,
pero se puede restablecer a DROP, si
quiere asegurarse de que nada se
desliza a través de su conjunto de
reglas. La política predeterminada
siempre se aplica al final de una cadena
solamente. Por lo tanto, el paquete de
red debe pasar por todas las reglas
existentes en la cadena antes de aplicar
la política predeterminada.
El usuario puede definir las reglas de las
cadenas para hacerlas más eficientes o
más fácilmente modificable.
Consulte Simple stateful firewall
(Español) para ver un ejemplo de cómo
se usan las cadenas definidas por el
usuario.
Reglas
El filtrado de los paquetes de red se
basa en rules —«reglas»—, que se
especifican por diversos matches —
«coincidencias»— (condiciones que el
paquete de red debe satisfacer para que
la regla se puede aplicar), y un target—
«objetivo»— (acción a tomar cuando el
paquete coincide con la condición
plenamente). The typical things a rule
might match on are what interface the
packet came in on (e.g eth0 or eth1),
what type of packet it is (ICMP, TCP, or
UDP), or the destination port of the
packet.
Los targets se especifican mediante la
opción -j o --jump —«salto»—. Los
targets pueden ser bien cadenas
definidas por el usuario, bien uno de los
targets integrados especiales, o bien una
extensión de target. Los targets
integrados
son ACCEPT, DROP, QUEUE y RETURN ; las
extensiones de target son, por
ejemplo, REJECT y LOG. Si el objetivo es
un target integrado, el destino del
paquete es decidido inmediatamente y el
procesamiento del paquete de red en la
tabla actual se detiene. Si el objetivo
(«target») es una cadena definida por el
usuario y el paquete supera con éxito
esta segunda cadena, se moverá a la
siguiente regla de la cadena original. Las
extensiones de target pueden ser
tanto terminating (como los targets
integrados) como non-terminating (como
las cadenas especificadas por el
usuario), Véase iptables-
extensions(8) para obtener más
detalles
Cadenas transversales
Un paquete de red recibido en cualquier
interfaz atraviesa las cadenas de control
de tráfico de las tablas en el orden que
se muestra en el diagrama de flujo. La
primera decisión de enrutamiento implica
decidir si el destino final del paquete es
el equipo local (en cuyo caso el paquete
atraviesa las cadenas INPUT) o va a otro
lugar (en cuyo caso el paquete atraviesa
las cademas FORWARD cadenas). Las
decisiones de enrutamiento posteriores
implican decidir qué interfaz asignar a un
paquete saliente. En cada cadena
subsiguiente, cada regla de esa cadena
se atraviesa en el orden fijado, y siempre
que una regla coincida, se ejecuta la
acción, target/jump, correspondiente.
Los 3 objetivos (targets) más
comúnmente utilizados
son ACCEPT, DROP y jump para una
cadena definida por el usuario. Mientras
que las cadenas integradas pueden
tener políticas predeterminadas, las
cadenas definidas por el usuario no
pueden. Si todas las reglas de una
cadena no proporcionan una
coincidencia completa que permita
ejecutarla, el paquete se devuelve a la
cadena de llamadas como se
ilustra aquí. Si en algún momento se
logra una coincidencia completa para
una regla con un objetivo DROP, el
paquete se descarta y no se realiza
ningún otro procesamiento. Si un
paquete está ACCEPT dentro de una
cadena, también estará ACCEPT en
todas las cadenas del superconjunto y
no atravesará ninguna cadena más de
ese superconjunto. Sin embargo, tenga
en cuenta que el paquete continuará
atravesando todas las demás cadenas
en otras tablas de la manera descrita.
Módulos
Hay muchos módulos que pueden ser
utilizados para reforzar iptables, como
connlimit, conntrack, limit y recent. Estos
módulos añaden funcionalidad extra al
permitir reglas de filtrado avanzadas.
Configuración y
utilización
iptables es un servicio de systemd
(Español) y estará predispuesto
a iniciarse adecuadamente. Sin
embargo, el servicio no se iniciará a
menos que encuentre un
archivo /etc/iptables/iptables.ru
les, que no es proporcionado por el
paquete iptables de Arch. Por tanto,
para iniciar el servicio por primera vez,
ejecute:
# touch /etc/iptables/iptables.r
ules
# cp /etc/iptables/empty.rules /
etc/iptables/iptables.rules
Luego, inicie la
unidad iptables.service. Al igual que
con otros servicios, si desea que iptables
se cargue automáticamente en el
arranque, debe activarlo.
Las reglas de iptables para IPv6 se
almacenan de manera predeterminada
en el
archivo /etc/iptables/ip6tables.r
ules, que es leído
por ip6tables.service. Puede
iniciarlo de la misma manera que hemos
visto arriba.
Después de añadir reglas a través de la
línea de órdenes como se muestra en
las siguientes secciones, el archivo de
configuración no guarda los cambios
automáticamente —tiene que guardarlos
manualmente—, así:
# iptables-save > /etc/iptables/
iptables.rules
# iptables -nvL
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -t raw -F
# iptables -t raw -X
# iptables -t security -F
# iptables -t security -X
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT