Académique Documents
Professionnel Documents
Culture Documents
Qu es iptables?
Iptables es un sistema de firewall vinculado al kernel de Linux. La ventaja es que se encuentra integrado con el sistema operativo por lo que, en general, es muy utilizado por
los profesionales de seguridad.
Al igual que otros tipos de firewalls, iptables funciona a travs de reglas. De esta manera, es posible definir a que tipos de paquetes se les permite el paso, sobre que
puerto, protocolos, etc.
Iptables es una herramienta compleja que posee un alto ndice de granularidad. En esta ocasin analizaremos algunas de las funcionalidades de las que dispone y en futuras
publicaciones, profundizaremos su comportamiento.
En entornos corporativos, suelen exponerse equipos a Internet con determinado fin. En estos casos, es importante contar con una configuracin adecuada a nivel de
red ya que este puede ser el punto de entrada para un potencial atacante.
En ciertos casos, tambin se suelen combinar firewalls fsicos con iptables para lograr una configuracin ms segura.
Reglas de filtrado: Esto se logra a partir de las reglas INPUT, OUTPUT y FORWARD. Permite determinar que tipos de paquetes pueden ingresar a la red y
redireccionarlos al destino de inters.
NAT: Son el grupo de reglas que permiten aplicarse a partir de la direccin ip desource (origen) y destination (destino), y realizar la traslacin al puerto
adecuado.
Mangle: Este tipo de reglas aplica sobre los flags de los paquetes.
La sintaxis para utilizar iptables es la siguiente:
Primera aproximacin
Para poder visualizar las reglas existentes solo hace falta ejecutar el comando iptables -L.
Esto permite comprobar que tipos de reglas estn vigentes sobre el firewall en el sistema.
Es conocido como una buena medida de seguridad deshabilitar la respuesta al ping en caso de no ser estrictamente necesario. Esto permite dificultar la etapa de
descubrimiento de un determinado sistema en caso de un potencial atacante fije el inters sobre este objetivo.
Esta tarea es muy sencilla de realizar con iptables. Solo basta con fijar una regla para realizar undrop (eliminar) sobre los paquetes especficos. En el caso del ping estndar,
el paquete es de tipo ICMP 8. Por lo tanto, se debe filtrar el paquete con la siguiente regla:
Para comprobar que la regla realmente funciona, realizamos un ping al sistema objetivo antes y despus de aplicar la regla.
Resumen: Iptables es la aplicacin estndar de Linux para crear un firewall. Es fcil de configurar y mantener al mismo tiempo que es lo suficientemente potente
como para proporcionar el control de un aparato de gama alta. Aprenda cmo empezar con iptables, recuperarse de los problemas comunes, y simular un escenario
de uso de pequea oficina.
Introduccin
Iptables es una aplicacin que permite la administracin de las tablas en el servidor de seguridad del kernel de Linux. No es necesario conocimientos previos sobre el
ncleo, o sobre las tablas del mismo, ni tampoco sobre las modificaciones del cortafuegos y tareas comunes de administracin del sistema.
En algunas distribuciones de Linux, iptables viene activado por defecto. Es comn que los usuarios sin experiencia utilicen aplicaciones que definen las reglas para
evitar problemas de red. Este artculo le ayudar a empezar rpidamente y manipular iptables segn sus necesidades.
A veces, iptables se utiliza para referirse a la del kernel de Linux a nivel de componente. En este artculo, todo lo relacionado con iptablesse referir especficamente a
la aplicacin que controla los protocolos en una distribucin de Linux, como IPv4, IPv6, y las tablas ARP.
Al igual que otras aplicaciones de Linux, se puede configurar iptables en la interfaz de lnea de comandos o en un archivo de texto plano, lo que permite la edicin con
cualquier editor de texto. Aunque es fcil de modificar, podra sentirse incmodo desde el dispositivo de cortafuegos, donde la mayor parte de la interaccin con los
ajustes y configuraciones que se hace en una interfaz grfica. Hay aplicaciones que utilizan iptables para gestionar un servidor de seguridad a travs de interfaces
grficas, pero este artculo cubrir la interaccin con iptables en su ambiente natural: la terminal de Linux.
El tener un buen nivel usando un terminal de Linux (tambin referido como un emulador de la consola o terminal) ayudar a los desarrolladores tomar ventaja de los
ejemplos y configuraciones que siguen. La interfaz desde la lnea de comandos es la principal forma de interactuar con iptables, y una terminal de Linux es la
aplicacin que permite el acceso a esta interfaz.
Las reglas que se aplican son en su mayora muy legibles y fcilmente portables a otros servidores. Esta funcin ahorra mucho tiempo cuando se trata de hardware.
iptables
disponible en su
shell preferida. Este artculo utiliza las convenciones de Debian / Ubuntu para configurar iptables.
Debido a que vamos a hacer modificaciones en el nivel del ncleo, asegrese de que tiene privilegios de root.
Listado 2 muestra las reglas que actualmente se aplican en el servidor. Listado 2 se repetir durante el artculo para comprobar cules son las normas que estn
actualmente en uso y verificar los cambios con xito.
Listado 2. Normas que se aplican actualmente
root@desktop:~# iptables -L
Chain INPUT (policy ACCEPT)
target
prot opt source
destination
destination
destination
En el Listado 2 , instruimos a iptables para una lista de todas las reglas que se aplican actualmente en el firewall. Esto se logra mediante el flag -L
La salida tambin menciona
Chain . Piense en las cadenas de IPTables como secciones en el servidor de seguridad que permite un cierto tipo de trfico. Por
ejemplo, para bloquear todo el trfico de la red privada a Internet, esta norma se establece en la seccin de salida. Del mismo modo, cualquier norma que afecta el
trfico entrante se enumeran en la cadena INPUT.
Las tres cadenas que se aplican a cada uno un tipo de actividad en el firewall. En este punto, no hay nada establecido todava. Esto significa que no hay restricciones
y todo el trfico de red se le permite entrar y salir.
Chain INPUT
Chain FORWARD , y
Chain OUTPUT
Antes de continuar, es necesario verificar qu puertos estn abiertos en el servidor para la comparacin despus de que se bloquee. Como se mencion
antes, Nmap es una herramienta de lnea de comandos que proporciona informacin de seguridad de red. Listado 3 muestra la salida de nmap en un servidor remoto
en la red.
Listado 3. El escaneo en red con nmap
~ $ nmap 10.0.0.120
Starting Nmap 5.35DC1 ( http://nmap.org ) at 2010-11-21 20:44 EST
Nmap scan report for 10.0.0.120
Host is up (0.012s latency).
Not shown: 991 closed ports
PORT
STATE SERVICE
22/tcp
open ssh
25/tcp
open smtp
53/tcp
80/tcp
631/tcp
3306/tcp
4001/tcp
5900/tcp
8080/tcp
open
open
open
open
open
open
open
domain
http
ipp
mysql
unknown
vnc
http-proxy
Esos son un montn de puertos abiertos! En tan slo unos pocos pasos, usted aprender cmo hacer los cambios mencionados, a partir de iptables.
Las reglas de firewall pueden ser aplicadas y aadidas o editadas de forma manual en un archivo de texto plano original. Yo prefiero usar un archivo de texto para
aplicar los cambios. La mayora de los errores de tiempo de la sintaxis son ms fciles de alcanzar cuando se escriben en un archivo de texto. Otro problema surge
con la edicin de las reglas por las reglas adjuntas directamente, es decir, estas normas no se guardarn cuando un servidor se reinicia. Antes de editar el archivo,
vamos a indicarle a iptables como exportar las reglas actuales para que el archivo se convierte en nuestra plantilla inicial. Ver el listado 4 .
istado 4. Reglas de guardar en un archivo
archivo se ve en mi mquina.
Uno de los primeros requisitos es para permitir las conexiones establecidas para recibir el trfico. Usted necesita cuando quiere nada detrs del firewall (en una red
privada) para poder enviar y recibir datos de la red sin restricciones. En el listado 5 se emitir un gobierno directo de iptables y verificar el estado del firewall despus.
Listado 5. Establecido sesiones de la regla
destination
destination
Para tener una mejor idea de lo que sali, vamos a separar el comando y explicar cada uno de ellos:
ctstate
ESTABLISHED (establecida) significa una conexin que ha visto paquetes en ambas direcciones y un tipo RELATED
(relacionado) significa que el paquete est comenzando una nueva conexin, pero est asociada con una conexin existente.
En este caso, una conexin
-j ACCEPT : le dice al firewall para que acepte las conexiones descritas antes. Otra opcin vlida para el flag -j sera DROP
Tambin estoy conectando a travs del protocolo SSH a ese servidor, as que antes de bloquear el servidor de seguridad, una regla en el Listado 6 va a permitir que
todas las llamadas entrantes de trfico SSH. Que especificar el tipo de protocolo de red (TCP) y el puerto que est relacionado con el servicio SSH. Se puede
especificar el nmero de puerto directamente si es necesario.
Listado 6. Aceptar las conexiones entrantes SSH
destination
destination
Por ltimo, vamos a configurar el firewall para bloquear todo lo dems. Tenga especial cuidado al emitir el comando siguiente. Si se coloca delante de todas las otras
reglas, se bloquear el trfico de todas y cada una con el servidor. Iptables lee las reglas en forma de procedimiento (de arriba a abajo) y despus de una regla es
igual, nada se evaluar.
Listado 7. El bloqueo de todo el trfico entrante
destination
destination
ctstate
tcp
Listado 7 muestra que las reglas estn en el orden correcto, pero para poder hacer cambios especficos, vamos a guardar las reglas en un archivo y se concatenan
para comprobar el contenido como en el Listado 8 .
Listado 8. Verificacin de la configuracin del firewall
-A INPUT -j DROP
COMMIT
# Completed on Sun Nov 21 15:10:42 2010
El comando
iptables-save guarda nuestros cambios en un archivo de texto plano. Se tiene un aspecto un poco diferente simplemente hacer una lista
de las normas en la lnea de comandos, pero es exactamente lo mismo. Al igual que antes, tenemos tres secciones: INPUT, FORWARD y OUTPUT. Las normas que se
refieren a las conexiones previstas inicialmente OUTPUT, por lo que esta es la seccin donde las reglas que hemos aadido se colocan.
En este punto, el servidor se bloquea y la configuracin se ha guardado en un archivo. Pero, qu va a pasar cuando se realiza un anlisis de la red? Vamos a
ejecutar nmap otra vez contra ese servidor y comprobar los resultados como se muestran en el Listado 9 .
Listado 9. Escaneo en red con el servidor bloqueado
~ $ nmap 10.0.0.120
Starting Nmap 5.35DC1 ( http://nmap.org ) at 2010-11-21 20:56 EST
Note: Host seems down. If it is really up, but blocking our ping
probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.04 seconds
~ $ nmap -Pn 10.0.0.120
Starting Nmap 5.35DC1 ( http://nmap.org ) at 2010-11-21 20:56 EST
Nmap scan report for 10.0.0.120
Host is up (0.017s latency).
Not shown: 999 filtered ports
PORT
STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 12.19 seconds
Tenga en cuenta que el anlisis se intent contra la IP donde se encuentra el servidor, Y esta vez nmap no incluy otros puertos abiertos.Esto sucede debido a que el
firewall est configurado de tal manera que est bloqueando todo, excepto para el puerto SSH que tenemos abierta. Dado que Nmap utiliza un protocolo de red
especfico para verificar si el sistema est vivo, volvi con las manos vacas. El segundo intento fue un xito y nos est diciendo que slo SSH est abierto y nada
ms. Con slo tres reglas, nos las arreglamos para conseguir un bloqueo eficaz de nuestro servidor.
<![CDATA[
auto eth0
iface eth0 inet static
address 99.99.99.0
netmask 255.255.255.0
pre-up iptables-restore < /etc/iptables.rules
]]>
Aqu tenemos la interfaz eth0 y se declara una regla para cargar las reglas para el dispositivo de red. Como habrs adivinado, puede usar estos comandos para
actualizar manualmente las reglas del firewall desde y hacia el archivo.
Recuperacin de desastres
No hace mucho, estuve en una situacin donde he sido responsable de un dispositivo de firewall. Aunque estaba haciendo copias de seguridad peridicas que las
reglas y configuraciones se hicieron, no me di cuenta de que esas copias estaban en un formato propietario y slo puede ser ledo por el modelo de aparato que
tena. No es un problema, por supuesto, cuando tiene dos dispositivos de la misma marca, modelo y versin de firmware, pero, como es comn en pequeas
empresas, el presupuesto no permiti nada de eso.
Un da, ese aparato no decidi correr ms y tuve que implementar algo rpido que podra ser tan fiable (o mejor). Aprend que la manera ms difcil que tener
configuraciones legibles y la capacidad de volver a ponerlos rpidamente activos son muy importantes.
Con algo de suerte, he encontrado un servidor antiguo en buen estado con un par de interfaces de red y fui capaz de reemplazar el aparato muerto.
Hasta ahora, hemos pasado por los escenarios de la obtencin de una copia de las normas que podran aplicarse fcilmente a cualquier servidor en caso de
fallo. Ahora vamos a activar el firewall de ser el principal punto de entrada para una red domstica o empresarial.
proc son voltiles, por lo que los cambios realizados no se han perdido despus de un reinicio. Hay varias maneras para
asegurarse de que las modificaciones se adhieren despus de un reinicio. En Debian / Ubuntu agregue las lneas que se quieran realizar en /etc/rc.d/rc.local.
Por ltimo, como se muestra en el Listado 14 , hay un cambio que modifica los parmetros del kernel en tiempo de ejecucin (sysctl). Estas configuraciones son por lo
general ya en el sysctl.conf, pero estn comentados. Elimine el comentario de ellos (o aadalos si no estn incluidas en la distribucin).
Listado 14. Sysctl / kernel reenvo
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1
Est atento a los mensajes similares a los de venta 16 , que proporcionar un aviso si es necesario aumentar el nmero acaba de proporcionar.
Listado 16. Sistema de registro de las advertencias del desbordamiento de la cach ARP
suppressed.
Nov 22 11:36:20
overflow.
Nov 22 11:36:26
suppressed.
Nov 22 11:36:26
overflow.
Nov 22 11:36:30
suppressed.s.
Conclusin
Hemos pasado a travs de algunos pasos sencillos para conseguir iptables para funcionar correctamente y para bloquear de forma segura por un servidor Linux. Las
reglas aplicadas deberan proporcionar una buena idea de lo que est sucediendo en un servidor usando iptables como cortafuegos. Os animo a darle una oportunidad
a iptables, especialmente si dependen de un aparato y desea tener ms control y fcilmente replicar configuraciones legibles.
Mientras que las reglas utilizadas que hemos utilizado aqu son simples, la flexibilidad y complejidad de iptables est fuera del alcance de este artculo. Hay muchas
reglas complejas que se pueden combinar para crear un ambiente de firewall seguro y controlable.
Un ejemplo de una caracterstica interesante avanzada en iptables es el equilibrio de carga. La mayor parte del tiempo, la hora de explorar los servicios web de alta
disponibilidad, que estn buscando soluciones de balanceo de carga. Con iptables, este puede ser definido y configurado con las banderas al azar o ensimo.
Tambin puede hacer a tiempo las reglas de base. En un entorno de oficina pequea, podra ser til para restringir ciertos servicios de lunes a viernes, pero dejar que
el servidor de seguridad se comportan de manera diferente los sbados y domingos. Las banderas que podran funcionar en este caso son los siguientes: - timestart,
- TimeStop y los das.
Un problema que experiment fue no tener dos servidores de seguridad, al mismo tiempo con algn tipo de conmutacin por error. Creacin de una cosa no es tarea
fcil, y puede ser abordado de varias maneras. La solucin ms fcil sera que el router hacer el trabajo y el equilibrio de carga de dos servidores idnticos Firewall. Yo
recomiendo buscar en esta opcin si el entorno de red es un activo esencial como una oficina o pequeo negocio.
Iptables me salv una vez, y espero que haga lo mismo para ti!
El cortafuegos utilizado para gestionar las conexiones en Linux es iptables. Las posibilidades de iptables son prcticamente infinitas y un administrador que quiera sacarle el
mximo provecho, puede realizar configuraciones extremadamente complejas. Para simplificar, diremos que bsicamente, iptables permite crear reglas que analizarn los
paquetes de datos que entran, salen o pasan por nuestra mquina, y en funcin de las condiciones que establezcamos, tomaremos una decisin que normalmente ser
permitir o denegar que dicho paquete siga su curso.
Para
crear
las
reglas,
podemos
analizar
muchos
aspectos
Interfaz por la que entran (-i = input) o salen (-o = output) los paquetes
de
los
paquetes
de
datos.
Podemos
filtrar
paquetes
en
funcin
de:
Hacer NAT (modificar IP origen y destino para conectar nuestra red a otra red o a Internet) y...
Una forma sencilla de trabajar con iptables es permitir las comunicaciones que nos interesen y luego denegar el resto de las comunicaciones. Lo que se suele hacer es definir
la poltica por defecto aceptar (ACCEPT), despus crear reglas concretas para permitir las comunicaciones que nos interesen y finalmente, denegar el resto de
comunicaciones. Lo mejor ser crear un script en el que dispondremos la secuencia de reglas que queremos aplicar en nuestro sistema. Un ejemplo tpico podra ser el
siguiente:
#!/bin/sh
#
#
#
iptables
iptables
iptables
iptables
#
iptables
iptables
iptables
iptables
iptables
Script
borramos
definimos
Para
todas
reglas
configuracin
previas
evitar
las
Aceptamos
las
comunicaciones
SMTP,
FORWARD
FORWARD
FORWARD
FORWARD
#
HTTP
y
#
Dejamos
#iptables
-A
#iptables
-A
HTTPS
comentadas
FORWARD
FORWARD
Al
-A
-A
no
es
comentadas
las
FORWARD
FORWARD
PC
del
-A
Denegamos
resto
-A
en
POP3
no
iptables
puedan
existir
-F
-X
-Z
-F
es
lo
interesan
necesario
lneas
-s
-s
porque
(tcp
y
10.0.0.0/8
10.0.0.0/8
le
porque
por
-p
-p
comunicaciones
-s
luego
debemos
lo
aceptar
(localhost)
ACCEPT
denegamos
tcp
tcp
electrnico
25
110
20
21
servidor
algn
--dport
--dport
servidor
si
algn
--dport
--dport
acceso
10.0.0.7
(no
10.0.0.0/8
y
-j
-j
-j
-j
ser
servidor
da
las
80
443
-j
-j
ser
da
53
53
todo
proxy
necesitamos
ACCEPT
ACCEPT
DNS
necesitamos
ACCEPT
ACCEPT
(cliente
VIP)
ACCEPT
el
-j
ftp)
ACCEPT
ACCEPT
ACCEPT
ACCEPT
servidor
las
-j
-j
-j
funcionar
resto.
1
DROP
-j
--dport
--dport
--dport
--dport
nuestro
si
el
aula
(correo
tcp
tcp
tcp
tcp
nuestro
udp),
por
-p
tcp
-p
udp
damos
-s
ACEPTAR
ACCEPT
ACCEPT
ACCEPT
ACCEPT
ACCEPT
al
10.0.1.0/24
FTP
-p
-p
-p
-p
sea
-j
-s
y
10.0.0.0/8
10.0.0.0/8
10.0.0.0/8
10.0.0.0/8
sistema,
interfaz
la
acceso
necesario
lneas,
10.0.0.0/8
10.0.0.0/8
de
FORWARD
el
nos
las
-s
-s
Director
FORWARD
defecto
PREROUTING
POSTROUTING
por
-i
que
-s
-s
-s
-s
por
INPUT
OUTPUT
FORWARD
-P
-P
Denegamos
FORWARD
Aceptamos
-A
-A
-A
-A
#
DNS
#
Dejamos
#iptables
#iptables
politica
errores
comunicaciones
INPUT
Ejemplo:
-A
de
que
nat
la
nat
nat
-A
#
iptables
iptables
iptables
iptables
#
iptables
la
las
que
-P
-P
-P
-t
-t
#
iptables
#
iptables
para
todas
-t
Despus
#
#
iptables
#
cortafuegos.sh
Primero
p2p)
DROP
#
iptables
Hacemos
-t
NAT
nat
si
-A
#
echo
IP
POSTROUTING
origen
-s
Activamos
1
#
iptables -L -n
Comprobamos
10.0.0.0/8
10.0.0.0/8
y
-o
salen
eth0
el
quedan
eth0
MASQUERADE
enrutamiento
/proc/sys/net/ipv4/ip_forward
>
cmo
por
-j
las
reglas
En el script anterior vemos una serie de reglas que se van a ir ejecutando secuencialmente conformando la configuracin del cortafuegos iptables. Cuando indicamos "-A
FORWARD" nos referimos a paquetes que van a pasar por nuestro servidor. Otras opciones son "-A INPUT" y "-A OUTPUT". Acto seguido ponemos las condiciones. Si
ponemos "-s 10.0.0.0/8" nos referimos a paquetes cuya IP origen est en el rango 10.0.0.0/8. Cuando ponemos "-p tcp" nos referimos a paquetes que utilizan el protocolo tcp.
Cuando indicamos "--dport 25" nos referimos a paquetes cuyo puerto de destino es el 25, es decir, protocolo SMTP (correo saliente). Si en una regla no ponemos la condicin
-p ni la condicin --dport, significa que no nos importa el protocolo (cualquier protocolo) ni nos importa el puerto destino (cualquier puerto destino). Por ejemplo, en la regla
donde damos acceso al PC del Director, no hemos indicado ni protocolo ni puerto, por lo que dejar pasar todos los protocolos y todos los puertos.
Cortafuegos
Uno de los mecanismos ms extendidos para proteger una red de equipos que estn conectados a otra red (el caso ms habitual es Internet), es colocar un dispositivo conectado a ambas
redes que analiza el trfico entre una y otra que, de acuerdo a una serie de criterios, permite o no pasar paquetes de un lado a otro. Este dispositivo conocido como cortafuegos
o firewall puede implementar esta funcionalidad de forma nativa o mediante software sobre un sistema operativo genrico, en el primer caso el dispositivo se conoce como hardware firewall
(cortafuegos por hardware) y en el segundo como software firewall (cortafuegos por software).
Hay una enorme variedad de cortafuegos por hardware: Juniper, Cisco y casi cualquier marca de componentes de redes ofrecen estos equipos, adems este tipo de cortafuegos suele incluir
otras funcionalidades como VPN, QoS, proxies, etc. En el caso de los cortafuegos por software destacan iptables del krnel linux e ipfw de freebsd, en nuestro caso nos centramos en la
configuracin de un cortafuegos software con iptables.
Tipos de cortafuegos
Una clasificacin clsica de los cortafuegos distingue entre tres tipos o generaciones:
Cortafuegos de filtrado de paquetes: Este tipo de cortafuegos analiza y filtra los paquetes que lo atraviesan en funcin de algunos parmetros a nivel de red, transporte o
incluso enlace (por ejemplo direcciones IP origen o destino, puertos, direcciones MAC, etc.).
Cortafuegos de estado: Consideran el estado del paquete en la comunicacin, distinguiendo una nueva conexin de otra establecida por ejemplo.
Cortafuegos de capa de aplicacin: Analizan el contenido del paquete a nivel de aplicacin, pudiendo hacer un filtrado ms exhaustivo
Estos tipos de cortafuegos no son excluyentes, las siguientes generaciones o caractersticas se van aadiendo sobre una configuracin bsica de un dispositivo para el filtrado de paquetes,
que ser lo que veamos aqu. Dejamos para otras entradas la explicacin de las caracterscticas ms avanzadas.
Esquemas de red
En primer lugar hay que decidir la ubicacin en la red del cortafuegos, lo ms frecuente es que el cortafuegos separe la red local de la otra red a la que queremos conectarnos (Internet por
ejemplo), bien integrado en el mismo router que interconecta las dos redes o conectado en serie con ste.
El esquema anterior se corresponde con la configuracin ms sencilla, en la que no tenemos en nuestra red ningn servidor que tenga que ser accesible desde el exterior (servidor web por
ejemplo), por lo que el cortafuegos se limita a permitir a los equipos de la red local acceso a determinados puertos. Esta configuracin se puede complicar un poco si tenemos que incluir un
servidor que ofrezca algn servicio al exterior:
Sin embargo, por motivos de seguridad, nunca debe ubicarse un servidor que sea accesible desde el exterior en nuestra red local, ya que al tratarse de un servidor expuesto, puede ser
objetivo de ataques y conviene tenerlo separado del resto de equipos de nuestra red y obviamente de los dems servidores si los hubiera. Un esquema de red ms adecuado sera ubicar el
servidor o servidores accesibles desde Internet en un segmento de red especfico, que se conoce como Zona Desmilitarizada o DMZ por analoga a la zona desmilitarizada militar, bien
duplicando el nmero de cortafuegos o con un cortafuegos conectado a tres redes, lo que se conoce como cortafuegos de 3 patas:
Nota: Los esquemas se han realizado con la aplicacin de grficos vectoriales inkscape y con imgenes libres disponibles
enhttp://focaclipart.net23.net/hardware/ y http://www.openclipart.org/.
Las configuraciones reales pueden ser ms complicadas todava, fundamentalmente porque pueden incluir varios cortafuegos y varias redes, pero un equilibrio razonable entre un caso ms o
menos real y suficientemente sencillo para empezar con iptables puede ser un cortafuegos de 3 patas, que ser el que utilicemos en esta entrada.
iptables incluye tres cuatro tablas inicialmente: filter, nat, mangle y raw, la tabla filter es la encargada del filtrado de paquetes y es la tabla por defecto, por lo que ser igual poner iptables -t
filter que iptables. Esta tabla contiene a su vez tres cadenas: INPUT, OUTPUT y FORWARD, las dos primeras se utilizan para paquetes que tienen como destino (INPUT) o como origen
(OUTPUT) el propio cortafuegos, mientras que FORWARD es para paquetes que atraviesan el mismo, como por ejemplo cualquier paquete de la red local con destino un equipo de Internet o
la respuesta del mismo.
Hay dos formas bsicas de configurar un cortafuegos, la primera es permitir todo y restringir uno a uno los paquetes que queramos, es lo que se conoce como poltica por defecto ACCEPT.
De forma opuesta, se prohibe todo y se va abriendo el cortafuegos a los paquetes que sea necesario, lo que se conoce como poltica por defecto DROP. Desde el punto de vista del control del
tipo de conexiones que se van a permitir, parece mucho ms razonable utilizar un cortafuegos con poltica por defecto DROP, y es lo que haremos aqu, por lo que ya podemos escribir nuestra
primera regla de iptables en el cortafuegos:
Cuando se utiliza un cortafuegos con poltica por defecto DROP, las reglas de iptables de la tabla filter suelen ir por parejas, ya que cada proceso que se permite incluye dos tipos de paquetes:
las solicitudes y las respuestas. Estas parejas son de reglas de INPUT/OUTPUT para procesos que tienen como origen o destino el propio cortafuegos y FORWARD/FORWARD para
procesos que tiene como origen y destino otros equipos.
Para que un cortafuegos sea efectivo, sobretodo si se trata de uno con poltica por defecto DROP, las reglas de los paquetes que se permiten debe ser lo ms concretas posibles, es mucho
mejor una regla como:
Problema tipo
Vamos a plantear una situacin concreta, sencilla pero con suficientes detalles como para comprender la configuracin de un caso real. Vamos a configurar un cortafuegos de 3 patas con los
siguientes condicionantes:
Cortafuegos
DMZ
Direccionamiento IP 192.168.2.0/24
Conectada a la interfaz eth2 del cortafuegos
Tiene un servidor web (http y https) y un servidor de correo (smtp, pop3s e imaps) en el mismo equipo (IP 192.168.2.2)
Red local
Direccionamiento IP 192.168.1.0/24
Conectada a la interfaz eth1 del cortafuegos
Hay un servidor DNS (IP 192.168.1.2) que puede realizar consultas DNS al exterior.
Los equipos de la red local deben tener acceso a todos los servicios ofrecidos por los equipos de la DMZ
Los equipos de la red local pueden utilizar los servicios web (http y https) de cualquier servidor de Internet
Como ya se explic NAT en la entrada anterior, aqu simplemente pondremos las reglas de NAT necesarias:
al servidor de la DMZ:
Con esto seguiramos sin tener ningn tipo de conexin, ya que la poltica por defecto DROP seguira descartando todos los paquetes que llegaran al cortafuegos. Vamos a incluir las reglas
para que los equipos de la DMZ sean accesibles desde Internet:
6
7
8
1
0 iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s
192.168.2.2 -p tcp --sport 443 -j ACCEPT
1
1 # Aceptamos las peticiones al servidor smtp y las
respuestas de ste:
1
3 # El servidor smtp tambin enva correo, por lo que se
comporta como cliente:
1
4 iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s
192.168.2.2 -p tcp --dport 25 -j ACCEPT
1
5 iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d
192.168.2.2 -p tcp --sport 25 -j ACCEPT
1
# Aceptamos las peticiones al servidor pop3s y las
6 respuestas de ste:
1 iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d
7 192.168.2.2 -p tcp --dport 995 -j ACCEPT
1 iptables -A FORWARD -o eth0 -d 0.0.0.0/0 -i eth2 -s
8 192.168.2.2 -p tcp --sport 995 -j ACCEPT
1 # Aceptamos las peticiones al servidor imaps y las
9 respuestas de ste:
iptables -A FORWARD -i eth0 -s 0.0.0.0/0 -o eth2 -d
2
192.168.2.2 -p tcp --dport 993 -j ACCEPT
0
Para que los equipos de la DMZ puedan hacer resolucin de nombres (imprescindible por ejemplo para enviar correo), les permitimos hacer consultas DNS:
Vamos a poner ahora las reglas necesarias para que los equipos de la red local puedan acceder a los servicios de la DMZ y a los servicios que se les permite de Internet:
1
# Aceptamos las peticiones al servidor smtp y las
0 respuestas de ste:
1 iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -o eth2
1 -d 192.168.2.2 -p tcp --dport 25 -j ACCEPT
1 iptables -A FORWARD -o eth1 -d 192.168.1.0/24 -i eth2
2 -s 192.168.2.2 -p tcp --sport 25 -j ACCEPT
1 # El servidor smtp tambin enva correo, por lo que se
comporta como cliente:
3
iptables -A FORWARD -o eth1 -d 192.168.1.0/24 -i eth2
1
-s 192.168.2.2 -p tcp --dport 25 -j ACCEPT
4
1
8 # Aceptamos las peticiones al servidor imaps y las
respuestas de ste:
1
9 iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -o eth2
-d 192.168.2.2 -p tcp --dport 993 -j ACCEPT
2
iptables -A FORWARD -o eth1 -d 192.168.1.0/24 -i eth2
0
-s 192.168.2.2 -p tcp --sport 993 -j ACCEPT
2
# Aceptamos las peticiones a los servidores web (http)
1 de Internet y las respuetas:
2 iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -o eth0
2 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
2 iptables -A FORWARD -o eth1 -d 192.168.1.0/24 -i eth0
3 -s 0.0.0.0/0 -p tcp --sport 80 -j ACCEPT
2 # Aceptamos las peticiones a los servidores web
2
5 iptables -A FORWARD -o eth1 -d 192.168.1.0/24 -i eth0
-s 0.0.0.0/0 -p tcp --sport 443 -j ACCEPT
2
# Aceptamos las peticiones DNS del equipo 192.168.1.2:
6
iptables -A FORWARD -i eth1 -s 192.168.1.2 -o eth0 -d
9 local:
1
192.168.1.2 -p tcp --sport 53 -j ACCEPT
3
1
4
1
5
1
6