Difference between revisions of "Iptables (Español)"

From ArchWiki
Jump to: navigation, search
(syslog-ng)
(Véase también)
Line 158: Line 158:
  
 
{{wikipedia (Español)|iptables}}
 
{{wikipedia (Español)|iptables}}
 +
* [[Simple Stateful Firewall]]
 
* [http://www.netfilter.org/projects/iptables/index.html Sitio web oficial de iptables]
 
* [http://www.netfilter.org/projects/iptables/index.html Sitio web oficial de iptables]
 
* [http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html Tutorial de iptables 1.2.2] por Oskar Andreasson
 
* [http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html Tutorial de iptables 1.2.2] por Oskar Andreasson
 
* [http://wiki.debian.org/iptables iptables Debian] Wiki de Debian
 
* [http://wiki.debian.org/iptables iptables Debian] Wiki de Debian

Revision as of 19:07, 17 July 2013

Sumario help replacing me
Información relativa a la instalación y configuración de iptables.
Relacionado
Firewalls (Español)
Sysctl#TCP/IP stack hardening

Iptables es un poderoso firewall compilado en el kernel de Linux y que forma parte del proyecto netfilter. Iptables puede ser configurado directamente, como también por medio de un frontend o una GUI. iptables es usado por IPv4, en tanto que ip6tables es usado para IPv6.

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 presente en los repositorios oficiales.

Para instalar el servicio que cargue los datos de las reglas desde iptables.rules al arrancar:

# nano /etc/conf.d/iptables
IPTABLES_CONF=/etc/iptables/iptables.rules
# systemctl enable iptables.service

Conceptos básicos

tablas

iptables cuenta con cuatro tablas: raw, filter, nat y mangle.

cadenas

Las cadenas son usadas para especificar rulesets1. Un paquete de red comienza su recorrido en una cadena y va avanzando progresivamente hasta alcanzar una regla con la que se corresponde. Existen tres cadenas predefinidas: INPUT, OUTPUT y FORWARD. Todo el tráfico saliente, generado localmente, pasa a través de la cadena OUTPUT; todo el tráfico entrante, dirigido a la máquina, se hace pasar a través de la cadena INPUT; y todo el tráfico enrutado, que no se ha suministrado localmente, pasa a través de la cadena FORWARD. Las tres cadenas predefinidas tienen objetivos («targets») predeterminados que se utilizan para el caso de que algún paquete no se corresponda con ninguna regla. El usuario puede definir las reglas de las cadenas para hacerlas más eficientes.

1. Los «rulesets» son una agrupación de conjuntos de reglas que funcionan a modo de «subrutina» de cualquier lenguaje de programación.

objetivos

Un «objetivo» (target) es el resultado que se produce cuando un paquete de red se corresponde o satisface una regla. Los objetivos se especifican mediante el uso de «jump» (-j) («salto»). Los objetivos más comunes son ACCEPT, DROP, REJECT y LOG.

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

Desde la linea de comandos

Puede comprobar el ruleset en uso y el número de paquetes de red que han satisfecho cada regla usando la orden::

# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination   
     
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination    
    
Chain OUTPUT (policy ACCEPT 0K packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Si la salida se parece a lo anterior, significa que no hay reglas establecidas.

Puede vaciar y restablecer la configuración de iptables por defecto, utilizando las siguientes órdenes:

# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -F
# iptables -X

Archivo de configuración

En el archivo /etc/conf.d/iptables se establece la ubicación de los archivos de configuración de iptables. El ruleset se carga cuando el demonio se ha iniciado.

/etc/conf.d/iptables
# Configuración de las reglas iptables
IPTABLES_CONF=/etc/iptables/iptables.rules
IP6TABLES_CONF=/etc/iptables/ip6tables.rules

# Activar redireccionamiento IP (tanto IPv4 como IPv6)
# NOTA: Esta no es la forma recomendada para hacer esto, y es proporcionado solamente para
# dar compatibilidad a versiones antiguas. En su lugar, utilice /etc/sysctl.conf y ajuste el redireccionamiento
# opciones:
# * net.ipv4.ip_forward=1
# * net.ipv6.conf.default.forwarding=1
# * net.ipv6.conf.all.forwarding=1
#IPTABLES_FORWARD=0

Después añada las reglas a través de línea de órdemes:

# iptables-save > /etc/iptables/iptables.rules

Por último:

# systemctl reload iptables

Guías

Registro

El objetivo LOG se puede utilizar para registrar los paquetes que satisfacen una regla. A diferencia de otros objetivos, como ACCEPT o DROP, el paquete continuará moviéndose a través de la cadena después de alcanzar un objetivo LOG. Esto significa que, para habilitar el registro de todos los paquetes perdidos, se tendría que agregar una regla LOG duplicada antes de cada regla DROP. Como esto reduce la eficiencia y hace que las cosas sean menos simples, se puede crear, en su lugar, una cadena logdrop.

Cree la cadena con:

# iptables -N logdrop

Después, defínalo:

## /etc/iptables/iptables.rules

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

... other user defined chains ..

## logdrop chain
:logdrop - [0:0]

-A logdrop -m limit --limit 5/m --limit-burst 10 -j LOG
-A logdrop -j DROP

... reglas ...

## log AND drop packets that hit this rule:
-A INPUT -m state --state INVALID -j logdrop

... más reglas ...

Limitar el tamaño del registro

El módulo limit se debe usar para prevenir que el registro de iptables se haga demasiado grande o haga que el disco duro se escriba innecesariamente. Sin limitación, un atacante podría llenar el disco (o al menos la partición /var) causando la saturación del registro de iptables.

-m limit se utiliza para llamar al módulo limit. Puede usar --limit para utilizar una tasa promedio y --limit-burst para establecer una tasa de ráfaga («limit burst») inicial. Por ejemplo:

-A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG

Esto agrega una regla a la cadena LOGDROP que registrar todos los paquetes que pasan a través de ella. Los primeros 10 paquetes serán registrados, y de ahí en adelante únicamente 5 paquetes por minuto quedarán registrados. El «limit burst» es restaurado cada vez que la «tasa límite» no se supera.

syslog-ng

Aumiendo que usa syslog-ng, puede controlar donde será guardada la salida del registro de iptables de este modo:

filter f_everything { level(debug..emerg) and not facility(auth, authpriv); };

a

filter f_everything { level(debug..emerg) and not facility(auth, authpriv) and not filter(f_iptables); };

Esto concluirá la salida del registro de iptables en el archivo /var/log/everything.log.

Si quiere que el registro de iptables se produzca en un archivo distinto de /var/log/iptables.log, basta con cambiar el valor de destino de d_iptables aquí (siempre en el archivo syslog-ng.conf)

destination d_iptables { file("/var/log/iptables.log"); };

ulogd

ulogd es un demonio especializado en el registro de los paquetes de red ejecutado en el espacio de usuario para netfilter que puede sustituir el target LOG predeterminado. El paquete ulogd está disponible en el repositorio [community].

Véase también

Template:Wikipedia (Español)