Netfilter y Iptables
Netfilter y Iptables
Netfilter y Iptables
DE
TECNOLOGA ELECTRNICA
Laboratorio 2
Filtrado de paquetes con Netfilter
Enunciados de Prcticas de Laboratorio
Tecnologas Avanzadas de la Informacin
1. Introduccin y objetivos
La duracin estimada de esta sesin de laboratorio es de 6 horas. El propsito general de esta sesin
de laboratorio es la configuracin de un firewall para el sistema operativo Linux. Los principales
objetivos se resumen como sigue:
Describir el funcionamiento del filtrado de paquetes.
Configurar un firewall.
Configurar filtrado de paquetes en una mquina Linux mediante Netfilter / iptables.
Elaborar reglas IPtables.
Rev. 3.66
travs de l, decidiendo la accin a con el paquete completo (aceptarlo, descartarlo, etc). El filtrado
tambin se conoce como screening, y a los dispositivos que lo implementan se les denomina chokes.
Los firewalls de filtrado de paquetes actan sobre la capa de red y la de transporte de la pila TCP/IP.
Trabajan sobre la informacin de las cabeceras de los paquetes IP, sin llegar a analizar los datos. Por
ejemplo, un firewall no puede evitar que un usuario de la red sobre la que acta mande un email desde
su equipo con otra cuenta de correo diferente de la de su trabajo. Lo que si podra es evitar que dicho
equipo accediera al servidor de correo y as no se pudiese mandar ningn correo a nadie. Este filtrado se
realiza a travs de una lista de reglas. Las reglas pueden ser de diferentes tipos, aceptacin, rechazo o
denegacin, entre otras.
Las implementaciones de los firewalls de filtrado de paquetes principalmente son de dos tipos: stateless
y stateful. Un filtro esttico o stateless (sin estado) analiza las cabeceras de cada paquete recibido (IP,
TCP, UDP, ICMP, etc.) y toma una decisin de filtrado en funcin de los valores contenidos en los
distintos campos de dichas cabeceras. No se establece ninguna relacin entre los diferentes paquetes
que atraviesan el filtro, aunque correspondan a una misma conexin. Este es el mecanismo de filtrado
consume pocos recursos y es de fcil implementacin.
Por el contrario un filtro dinmico o stateful (de estados) permite el control de un flujo de datos
relacionados (por ejemplo, paquetes dentro de una misma conexin TCP o entre varias conexiones). Para
llevarlo a cabo es necesario mantener en memoria los parmetros de cada conexin, tomando decisiones
en funcin de la evolucin de las mismas. Por ejemplo, slo se permite el paso de datos en sentido
entrante a travs de un puerto TCP que haya sido previamente abierto en sentido saliente, o conexiones
entrantes a un puerto dado desde una direccin origen cuando previamente se ha iniciado una conexin
saliente hacia esa misma direccin desde otro puerto concreto.
Este modelo de filtrado es ms sofisticado y permite un control ms exhaustivo del trfico resolviendo
necesidades a nivel de paquete que antes tenan que resolverse a nivel de aplicacin (mediante proxies).
hacia el destino. Este tipo de NAT se denomina enmascaramiento. Permite a uno o varios equipos
de una red privada quedar visibles en otra red (por ejemplo Internet) a travs de una direccin
externa. Esta es la tcnica utilizada en la actualidad para que mltiples equipos accedan a
Internet a travs de una nica direccin pblica.
Segn lo visto podemos distinguir entre:
Source NAT (SNAT): alteracin del origen del datagrama, realizado despus del encaminamiento
del mismo y antes de su reenvo (el enmascaramiento es una forma de SNAT).
Destination NAT (DNAT): alteracin del destino, realizado antes del encaminamiento del datagrama (el port forwarding, el balanceo de carga y los proxy transparentes son ejemplos de DNAT).
Permite el uso de plugins para nuevas condiciones y acciones (Ej: ipp2p para filtrar conexiones a
redes P2P). As, no es necesario modificar los mdulos para agregar una extensin adicional.
De forma nativa maneja IPv4 e IPv6, usando la misma librera y el mismo cdigo.
Netfilter realiza la gestin del filtrado mediante tablas organizadas en cadenas (chains) y stas a su vez
compuestas por reglas que se evalan sobre los paquetes analizados en busca de condiciones segn
unos parmetros y, en caso de cumplirse alguna, ejecutando la accin asociada.
Interfaz
de red
INPUT
Proceso
Local
FORDWARD
POSTROUTING
OUTPUT
Cuando se recibe un paquete por cualquier interfaz se lleva a cabo, en primer lugar, una suma de
comprobacin (checksum). Si es correcta, los paquetes transitan hacia la evaluacin de la cadena
PREROUTING (en caso de existir), cuyas reglas se encargarn de determinar el tratamiento que deber
de darse al paquete en funcin de la direccin destino:
Si el paquete va dirigido a la propia mquina, ste es enviado a la cadena INPUT, que en caso de
superarse ser procesado localmente.
Si la direccin destino del paquete es distinta de la local, y est activada la funcin de reenvo, se
evala la cadena FORWARD. Si se superan las reglas de esta cadena se reenva el paquete. Si la
funcin de reenvo no estaba habilitada, el paquete se descarta (DROP). Se consideran paquetes
INPUT
INPUT
(mangle)
mangle
(filter)
filter
FORDWARD
FORDWARD
(mangle)
mangle
(filter)
filter
Interfaz
de red
POSTROUTING
POSTROUTING
(mangle)
mangle
(nat)
nat
Proceso
Local
OUTPUT
OUTPUT
(mangle)
mangle
(nat)
nat
(filter)
filter
Proxy transparente: Se redirecciona el datagrama a otro equipo que ser quien proporcione
los servicios requeridos.
para redirigirlos a una mquina concreta en funcin del servicio requerido o entre
mquinas distintas para balancear la carga.
Port Forwarding: El router recibe las peticiones para la subred en la que trabaja y cambia
la IP hacia la que tiene que dirigirse.
MANGLE: Analiza ciertas caractersticas del paquete y lo marca en funcin de su naturaleza, para
que reciba cierto tratamiento especfico (ej: diferenciar trfico en funcin de los servicios, etc.).
Mangle permite la reescritura completa de paquetes (o tramas completas). En definitiva la tabla
mangle controla los procesos de modificacin del contenido y las opciones del paquete. Las
cadenas que se agrupan en esta tabla son: INPUT, OUTPUT, FORWARD, PREROUTING y
POSTROUTING
RAW: Se usa para configurar excepciones en el seguimiento de paquetes. La accin que siempre
se usa para esta tabla es NOTRACK. Las cadenas que se organizan en est tabla son:
PREROUTING y OUTPUT.
Es importante conocer que cada tabla tiene unas cadenas predeterminadas que no se pueden eliminar. A
estas las cadenas de una tabla predeterminadas se pueden unir cadenas creadas por nosotros mismos
para un mejor funcionamiento del filtrado o el enrutamiento.
Para comprender mejor el funcionamiento se muestran a continuacin algunos ejemplos del recorrido
que pueden realizar los paquetes en funcin de su destino.
PREROUTING
PREROUTING
(mangle)
mangle
(nat)
nat
Interfaz
de red
INPUT
INPUT
(mangle)
mangle
(filter)
filter
FORDWARD
FORDWARD
(mangle)
mangle
(filter)
filter
POSTROUTING
POSTROUTING
(mangle)
mangle
(nat)
nat
Proceso
Local
OUTPUT
mangle
nat
filter
Cadena
Mangle
Nat
PREROUTING
PREROUTING
Mangle
Filter
INPUT
INPUT
Notas
Datagrama recibido por una interfaz de red
Permite alterar algn parmetro de la cabecera (ej: campo TOS)
Permite realizar DNAT
Decisin de encaminamiento:
Si dir.destino dir.local Salta a Forward (reenvo)
Si no, contina
Alteraciones antes de procesamiento
Filtrado del trfico entrante
Entrega al proceso local
PREROUTING
PREROUTING
(mangle)
mangle
(nat)
nat
Interfaz
de red
INPUT
INPUT
(mangle)
mangle
(filter)
filter
FORDWARD
FORDWARD
(mangle)
mangle
(filter)
filter
POSTROUTING
POSTROUTING
(mangle)
mangle
(nat)
nat
Proceso
Local
OUTPUT
mangle
nat
filter
Tabla
Cadena
Mangle
Nat
Filter
Mangle
Nat
OUTPUT
OUTPUT
OUTPUT
POSTROUTING
POSTROUTING
Notas
Datagrama recibido por una interfaz de red
Permite alterar algn parmetro de la cabecera.
Traslacin de direcciones
Filtrado de trfico saliente
Alteraciones antes de procesamiento
Permite realizar SNAT
Entrega al interfaz
PREROUTING
PREROUTING
(mangle)
mangle
(nat)
nat
INPUT
INPUT
(mangle)
mangle
(filter)
filter
FORDWARD
FORDWARD
(mangle)
mangle
(filter)
filter
Interfaz
de red
Proceso
Local
OUTPUT
POSTROUTING
POSTROUTING
(mangle)
mangle
(nat)
nat
mangle
nat
filter
Tabla
Cadena
Mangle
Nat
PREROUTING
PREROUTING
Mangle
Filter
Mangle
Nat
FORWARD
FORWARD
POSTROUTING
POSTROUTING
Notas
Entrega por el proceso local
Permite alterar algn parmetro de la cabecera
Permite realizar DNAT
Decisin de encaminamiento:
Si dir.destino dir.local Contina
Si no, salta a INPUT
Alteraciones antes del reenvo
Filtrado del trfico reenviado
Alteraciones despus del reenvo
Permite realizar SNAT
Entrega al interfaz
Cuando no se indica la tabla a usar, por defecto se usa la tabla filter y las partes numeradas tienen el
siguiente significado:
1. El comando iptables como punto de partida.
2. La tabla a usar (filter, nat, mangle). Si no se pone nada se usa por defecto filter.
3. El comando que deseamos aplicar a una cadena (insertar regla, modificar una existente, eliminar,
etc.). Para definir la operacin se usan una serie de comandos.
4. La cadena a usar, que puede ser una de las cadenas por defecto (INPUT, OUTPUT, FORWARD,
PREROUTING o POSTROUTING) o bien aquellas creadas por el usuario.
5. La condicin que especifica los criterios que debe de cumplir un paquete (los campos que lo
componen) para que sea aplicable la accin.
6. La accin a realizar para aquellos paquetes que cumplan la condicin.
7. Una serie de opciones que podemos aplicar para ajustar la accin.
Mediantes los comandos le indicamos a iptables qu deseamos hacer con la regla que vamos a definir.
Esto es, agregar una regla a una cadena, modificar una regla existente en una cadena, eliminar el
nombre de una cadena, etc. Describimos algunos de los comandos ms comunes (todos deben escribirse
en maysculas), entre los que distinguimos por un lado los destinados al manejo de cadenas, y por otro,
al manejo de reglas dentro de una cadena.
Comando
-h
-A
-D i
-I i
-R i
-F
-L
-C
-E
-N name
-X name
-P
-Z
Descripcin
Lista los comandos de iptables.
MANEJO DE REGLAS
Agrega una regla al final de la cadena especificada.
Elimina la regla i-sima de una cadena.
Inserta una regla dentro de una cadena en la posicin i-sima.
Reemplaza la regla i-sima por otra nueva en la cadena especificada.
Elimina todas las reglas de una cadena. Es equivalente a borrar todas las reglas
una por una.
Lista las reglas de una cadena especificada.
Verifica una regla antes de aadirla a la cadena especificada por el usuario. Se
suele implementar en arquitecturas con reglas complejas.
MANEJO DE CADENAS
Renombra una cadena.
Crea una nueva cadena y se le pone nombre.
Borra una cadena especificada. Ha de estar vaca previamente.
Cambia la poltica por defecto sobre una cadena, de forma que cuando los paquetes
atraviesan la cadena sin cumplir ninguna regla, se envan a un objetivo como puede
ser ACCEPT DROP.
Pone a cero los contadores de todas las reglas de una cadena.
Tabla 4. Comandos iptables.
Las reglas se construyen por concatenacin de condiciones y acciones asociadas. Cada condicin evala
una propiedad del paquete. Para indicar a Netfilter que hacer con los paquetes de una transaccin, se
deben crear reglas lo ms precisas posible. La idea es que la condicin sea inequvoca, tanto como para
quien cre la regla (usuario) como para el kernel.
Una regla est formada por una condicin y una accin, REGLA
<condicin,accin>, y el
2.
10
A medida que se van ejecutando rdenes de iptables, se van aadiendo o eliminando reglas asociadas a
cada uno de los flujos de entrada o salida. Es importante entender que las reglas que se aaden se
procesarn de forma secuencial (DROP y ACCEPT finalizan el procesamiento). Esto supone que para
deshacer un efecto la solucin es eliminar la regla que lo causa en vez de intentar aadir otra que
contradiga a la primera (por ejemplo no vale aadir un ACCEPT despus de un DROP porque el segundo
no anular el primero). En iptables las acciones se ejecutan con el parmetro -j [accin], como por
ejemplo el siguiente comando: iptables -A INPUT -j DROP
Una condicin (coincidencia / match) ocurre cuando un paquete cumple con los criterios indicados
dentro de alguna de las cadenas. Alguno de estos criterios pueden basarse en funcin de algn
parmetro como, por ejemplo, el tipo de protocolo (TCP, IP, ICMP, etc.), algn puerto en particular, un
usuario propietario del paquete (OWNER), el estado de la transaccin (INVALID), o la combinacin de
todos ellos. Las condiciones se construyen usando una serie de operadores que determinan la lgica que
el paquete debe cumplir. Algunos de los ms importantes son los siguientes:
Operador
-p [protocolo]
-s [ip/mascara destino]
Descripcin
Indica sobre qu protocolo ha de realizarse la comprobacin.
Algunos valores pueden ser tcp, udp, icmp o podemos
referirnos a todos si se omite. Tambin puede ser el nmero
equivalente a un protocolo, indicados en /etc/protocols.
Ejemplo: -p tcp,udp
Indica la direccin IP del origen del paquete. Puede indicarse
tambin de la forma IP/mscara para decirle a Netfilter que se
trata de un grupo de hosts. Si no se especifica sta condicin
se tomar como origen todas las direcciones de difusin.
Ejemplo: -s 192.168.1.0/24
Indica la direccin IP destino de la transaccin.
-d [ip/mascara destino]
Ejemplo: -d 192.168.1.0/24
Indica la interfaz de entrada, desde donde se realiza la
transaccin o se reciben los paquetes, para una regla en
particular. (Nota: slo usado por las cadenas INPUT,
FORWARD y PREROUTING).
-i [interfaz]
Con la tabla filter slo se podrn utilizar las cadenas INPUT y
FORWARD y PREROUTING cuando se utilice nat mangle.
-o [interfaz]
-f
-m
Adems de estos operadores existen otros que junto a stos extienden sus funcionalidades concretando
aun ms la condicin que se desea determinar. A estos operadores se denominan extensiones y me
muestran en la siguiente tabla.
Extensin
--sport
11
Descripcin
Puerto origen. Solo para tcp y udp.
Ejemplos:
-p tcp --sport 0:53
-p tcp,udp --sport 1023
--dport
--tcp-flags
arg1 arg2
-p [protocolo]
--syn
--icmptype
-m [mdulo]
mac
state
limit
multiport
12
13
En vez de descartar un paquete mediante DROP es posible realizar un REJECT, que enva un datagrama
ICMP de puerto inalcanzable (sta es la accin por defecto). Emplear REJECT en lugar de DENY impide
el acceso a los puertos de una forma ms corts pero tambin permite a un posible atacante comprobar
ms rpidamente qu puertos se encuentran abiertos en nuestro sistema.
Con iptables el administrador define una poltica por defecto para el trfico entrante o saliente y
despus, con un conjunto de reglas adicionales, habilita o bloquea determinado trfico de red. En este
proceso resulta fundamental definir bien cul es la poltica por defecto ms conveniente. Si lo que se
desea es un sistema lo ms restringido posible, entonces lo ms conveniente es descartar cualquier tipo
de trfico excepto el que se autorice explcitamente. En este caso podemos comenzar impidiendo
cualquier trfico saliente para despus aadir tan slo aquellas comunicaciones que deseamos autorizar,
como por ejemplo los accesos al servidor DNS y las conexiones SSH a un determinado servidor.
Cualquier otro trfico distinto del autorizado ser rechazado por esa restrictiva poltica por defecto.
Sin embargo, tambin es posible que lo que deseemos sea tan slo impedir cierto tipo de trfico que
resulta sin alterar el resto de servicios. Quiz queremos evitar que una determinada aplicacin pueda
funcionar, por ejemplo que los usuarios no puedan imprimir en una cierta impresora remota desde ese
ordenador. En este caso se impone partir de una poltica por defecto que acepte todo tipo de trfico para
despus introducir una regla que bloquee especficamente el trfico que se dirija a esa impresora de red.
14
Muchas infraestructuras sitan un cortafuegos entre su red local y la conexin a Internet. Este
dispositivo incluye algunas reglas que filtran determinados paquetes con el fin de mejorar la seguridad
de la red interna. En este laboratorio se puede hacer que nuestro equipo rechace, de manera selectiva,
determinado tipo de trfico. Para ello vamos a necesitar reglas un poco ms elaboradas que la empleada
en el ejercicio anterior.
Tarea 3.- Se va bloquear el trfico local, es decir, el que se produce en el dispositivo lo mediante el
comando iptables -A INPUT -i lo -j DROP.
T3.1.- Verifique si tiene el efecto deseado tecleando ping localhost. Obtenemos respuesta?. Ahora
pruebe a hacer ping www.dte.us.es Funciona?
T3.2.- Ejecute el comando iptables -L -v y vea el contador de paquetes que han satisfecho la regla
anterior.
T3.3.- Para poder restablecer el trfico local solo hay que eliminar la regla anterior mediante el
comando iptables -D INPUT 1.
En este ejercicio se ha visto como mediante el parmetro -i, se especifica un dispositivo de red y con -j se
indica qu hacer con el trfico que coincida con esa regla.
Hay que considerar que el dispositivo lo no es en realidad un dispositivo fsico de red, sino la representacin de las comunicaciones internas mediante la direccin de bucle local 127.0.0.1. En el ejemplo se ha
establecido que todo el trfico que se reciba (INPUT) por el dispositivo lo tiene que descartarse (DROP).
Para conseguir reglas ms tiles no basta poder especificar el dispositivo, sino que es necesario poder
afinar indicando qu protocolo y/o puertos disparan una regla en particular.
Tarea 4.- Compruebe que se puede acceder mediante SSH a un equipo que tenga este servicio activo y
establezca una conexin utilizando un usuario y contrasea mediante ssh usuario@host_remoto.
T4.1.- Abra otro terminal en tu ordenador, y en ella ejecute el comando iptables -A INPUT -p tcp
--sport 22 -j DROP.
T4.2.- Ahora vuelva a la ventana de au conexin SSH y teclea lo que sea. Qu sucede? Por qu?.
Comprubelo con el comando iptables -L -v.
T4.3.- Vuelva al segundo terminal y ejecute el comando iptables -D INPUT 1.
T4.4.- Qu sucede? An sigue conectado por SSH al equipo remoto?
En este ejemplo se ha creado una regla que no especifica el dispositivo de red sino el protocolo (TCP) y
tambin el puerto origen de los segmentos (--sport 22). En una conexin SSH los paquetes que vienen
del servidor SSH tienen como puerto origen el 22 que es el puerto predeterminado del servicio SSH.
De modo anlogo es posible aplicar esta misma estrategia para bloquear el acceso a cualquier otro
servicio. No obstante, las reglas se pueden aplicar tanto al trfico entrante como al saliente, o bien a
ambos. En el ejercicio anterior se bloqueaba el trfico SSH entrante (INPUT). Si se tarda ms de un
minuto entre el paso 2 y el paso 4 del ejercicio, es posible que la conexin SSH se haya interrumpido. En
ese caso lo ms conveniente es repetirlo intentando ser algo ms rpido (lo que permitir que la
conexin no se interrumpa y se obtenga un resultado diferente).
Tambin es posible crear reglas que atiendan a las direcciones de los paquetes, as se muestra en la
15
siguiente tarea.
Tarea 5.- Abra un navegador y cargue la pgina www.dte.us.es. Si no tiene instalado ninguno utilice
aptitude para instalar firefox.
T5.1.- Ahora en una ventana de terminal ejecute el comando iptables -A OUTPUT -p tcp -d
www.dte.us.es --dport 80 -j DROP.
Tarea 6.- Cree la regla que realice el registro de eventos mediante iptables -A INPUT -p tcp --dport
22 -j LOG.
T6.1.- Ahora acceda al servidor SSH desde otra mquina de la misma red, por ejemplo desde vbox1
con el comando ssh [email protected].
T6.2.- Ahora en la mquina gateway en un terminal ejecute el comando dmesg y analice las ltimas
16
T7.2.- Los
mensajes
mostrados
con
dmesg
quedan
registrados
en
el
fichero
de
bitco-
ra /var/log/kern.log. Para ver este fichero en tiempo real utilice el siguiente comando tail -f
/var/log/kern.log, considere que el terminal se quedar bloqueado hasta que pulse la combinacin
CTRL+C.
T7.3.- Si ahora intenta conectarse al servidor SSH observar en el terminal donde se ejecuta el
comando tail un resultado similar al del ejercicio anterior, pero en tiempo real.
Observando ahora las lneas creadas en el fichero kern.log se ve como slo se ha generado una nica
entrada. La regla de registro ahora presta atencin al campo de flags de la cabecera TCP, se analizan
todos los bits de la cabecera (por eso el valor ALL) y se registran todos los segmentos recibidos que
tengan el bit SYN activado.
T8.3.- En el mismo terminal se mantendr visible el listado de reglas usando el comando watch del
siguiente modo: watch iptables -t nat -L -v . El terminal se quedar bloqueado, cuando desee
terminar la visualizacin continua pulse la combinacin CTRL+C.
T8.4.- Tras volver a recargar la pgina en el navegador que ocurre?,y en la ventana con el
terminal que ejecuta el comando watch?
T8.5.- Elimine la regla para evitar futuros problemas.
17
Si repasamos la orden creada se observa ver que ahora la accin de la regla j no es ni LOG ni DROP
como en casos anteriores, sino DNAT. Esta regla permite reescribir las direcciones y/o los puertos de
destino de un segmento. En este caso todos los segmentos TCP dirigidos a la direccin IP de la WEB del
DTE (150.214.141.196) sern redirigidos al servidor web de la direccin 158.42.250.41 (portal del LSI).
Se puede observar en esta regla que se especifica una nueva tabla -t nat, en los casos mostrados hasta
ahora la tabla usada era la tabla por defecto -t filter, la cual no era necesaria especificarla en la lnea de
comandos. Esta nueva tabla se permite realizar operaciones de traduccin de puertos y direcciones
como las que realiza un router convencional.
Tarea 9.- Use el comando tracepath hacia www.dte.us.es para averiguar el valor TTL para llegar a un
cierto destino.
T9.1.- Aada la siguiente regla iptables -t mangle -A POSTROUTING -j TTL --ttl-set 5.
T9.2.- Compruebe si puede acceder a www.dte.us.es y www.informatica.us.es.
T9.3.- Compruebe si puede acceder a www.google.es.
T9.4.- Finalmente elimine la regla para evitar futuros problemas
Con ese valor tan slo se pueden realizar cuatro saltos antes de que el datagrama sea descartado. Esto
limita enormemente el nmero de redes que se pueden visitar. Un valor TTL=1 impedira atravesar un
nico router y solo permitira la comunicacin directa con otros ordenadores en la misma subred.
18
#, deber usarlo tanto para comentar la lnea como para escribir sus propios comentarios dentro del
mismo fichero.
Tarea 10.- Desde la lnea de comandos entre en el directorio /root y cree un directorio llamado bin.
T10.1.- Entre en el nuevo directorio /root/bin y cree un fichero llamado lab2.sh, para ello puede
usar el editor nano: nano lab2.sh.
T10.2.- Copie el contenido de mostrado en el cdigo 1 en el fichero y guarde los cambios.
#!/bin/bash
set -x # Esta lnea es para activar la depuracin de los scripts
# Esta lnea comienza por '#' as que es un comentario
echo Esta lnea es un comando, no comienza por #
# Comandos para listar reglas activas de cada tabla
# Comando para vaciar una cadena
T10.3.- Establezca los permisos de ejecucin para el script lab2.sh mediante el comando chmod +x
lab2.sh. Para comprobar si se ha cambiado ejecute el comando ls -l y observe los indicadores de
Tarea 11.- Realice los siguientes ejercicios escribiendo el comando iptables correspondiente en el
fichero lab2.sh y ejecutando dicho script. Utilice varias ventanas de terminal y no olvide escribir un
comentario sobre lo que est haciendo dentro del mismo fichero para su posterior comprensin.
T11.1.- Escriba una regla que liste las reglas activas para cada tabla.
T11.2.- Vacie de reglas la cadena INPUT en la tabla mangle.
T11.3.- Filtre los mensajes ICMP entrantes de origen local.
T11.4.- Filtre todo el trfico ICMP entrante.
T11.5.- Permita que se puedan enviar paquetes ICMP a travs de la interfaz externa.
T11.6.- Filtre las sesiones telnet entrantes desde la interfaz externa.
T11.7.- Acepte el trfico entrante al puerto 80 y permita su reenvo.
T11.8.- Deniegue las conexiones al puerto 22 por la interfaz interna.
T11.9.- Rechace la conexin al puerto 65000, protocolo UDP, de la interfaz interna, desde los
computadores de la red local del tipo 192.168.0.0/24.
T11.10.- Deniegue el trfico desde la interfaz interna a la externa (FORWARD).
T11.11.- Deniegue el trfico desde la interfaz interna a la externa para el protocolo TCP.
T11.12.- Deniegue el trfico hacia el puerto 25 en la interfaz externa a los paquetes marcados con
las banderas SYN y ACK a la vez.
19
Como ejercicio final, en la siguiente seccin se propone crear un script ejecutable que contenga las
reglas para que la mquina gateway comparta la conexin a Internet mediante NAT.
vbox1
192.168.0.100/24
Red
Exterior
vbox-gateway
192.168.0.1/24
(interna)
192.168.20.X/24
(externa)
vbox2
192.168.0.101/24
Tarea 12.- Cree un nuevo fichero en /root/bin llamado firewall.sh. Establezca el permiso de ejecucin
para el mismo y en la primera lnea escriba #!/bin/bash.
T12.1.- En las primeras lneas del fichero escriba los comandos iptables necesarios para vaciar
todas las reglas. Al menos son 4 comandos necesarios.
T12.2.- Escriba una regla que permita el reenvo de paquetes a travs del router desde la red
192.168.0.0/24 para compartir la conexin a Internet.
T12.3.- Junto con la regla anterior, escriba otra que enmascare todo el trfico interno para
compartir la conexin a Internet.
T12.4.- Para activar de reenvo de paquetes se debe editar el fichero /etc/sysctl.conf y activar la
lnea net.ipv4.ip_forward=1, pero deber reiniciar el equipo para que tenga efecto. Alternativamente puede ejecutar el comando echo 1 > /proc/sys/net/ipv4/ip_forward, pero no es persistente
al reinicio.
T12.5.- Reinicie la mquina y ejecute como root el script mediante el comando ./firewall.sh.
Compruebe si las mquinas vbox1 y vbox2 tienen acceso a Internet usando el comando ping.
Tras el reinicio de la mquina gateway las reglas iptables no son persistentes, para cargarlas ha sido
necesario la ejecucin como usuario root del script firewall.sh. En la mquina linux existe la posibilidad
de ejecutar scripts adicionales a los del sistema durante el proceso de inicio de la mquina. Se va a
proceder a configurar esta mquina para que ejecute automticamente este script al iniciar.
20
Tarea 13.- Edite el fichero /etc/rc.local. Fjese en la existencia de una ltima lnea con el comando
exit 0. Este comando debe permanecer al final de fichero para evitar problemas de arranque.
T13.1.- Aada una lnea antes del comando exit que ejecute el script escribiendo la ruta completa
del mismo, debera quedar como sigue: /root/bin/firewall.sh.
T13.2.- Reinicie la mquina ejecutando el comando reboot y compruebe si tras el reinicio las
mquinas internas siguen teniendo conexin a Internet y se han cargado las reglas iptables.
A partir de aqu se va a establecer una configuracin completa del firewall aadiendo las reglas
correspondientes en el fichero firewall.sh, asegurndonos as, que la poltica es automticamente
cargada en cada reinicio.
Concretamente se trata de determinar qu paquetes estarn permitidos para salir de la red a travs del
firewall. Este primer ejercicio es de filtrado, por ello debe usar la tabla filter (la cual es usada por
omisin). Los paquetes a analizar son los dirigidos a Internet desde las mquinas internas de la red, por
ello debe usar la cadena FORWARD aadiendo las reglas mediante -A FORWARD. Siguiendo esta
indicacin realice la siguiente tarea.
Tarea 14.- Aada las reglas indicadas a continuacin, probando en cada caso si funcionan correcta mente, para ello, ejecute el script firewall.sh con cada cambio que realice.
T14.1.- La primera regla debe establecer en el firewall la poltica predeterminada de descartar todo
el trfico procedente de la red interna que no haya sido explcitamente aceptado por una regla
definida. Compruebe si opera correctamente mediante el comando ping en las mquinas internas,
asegrese que la mquina gateway no ha perdido la conexin a Internet.
T14.2.- Cree dos reglas que permitan el trfico DNS saliente y entrante. Recuerde que el trfico
DNS utiliza el protocolo UDP. Para probar si opera correctamente desde las mquinas internas
utilice el comando host con un nombre de dominio existente.
T14.3.- Intente actualizar la lista de paquetes con aptitude o apt-get update que ocurre?.
T14.4.- El sistema APT de gestin de paquetes se est conectando a un proxy de paquetes cuya
configuracin puede ver en el archivo /etc/apt/apt.conf.d/80proxy. Use el comando less para ver el
contenido de este fichero y observe el puerto en el que est el proxy. Cree las reglas necesarias para
tener acceso a este puerto, tanto entrante como saliente. Compruebe si funciona el comando aptget update cuando tenga la regla operativa.
T14.5.- Cree las reglas necesarias para que los equipos de la red interna puedan usar correcta
mente el comando ping hacia mquinas externas.
T14.6.- Cree varias reglas para que los equipos de la red interna puedan salir a Internet y tener
trfico WEB (puertos 80/tcp y 443/tcp).
T14.7.- Para evitar instalar un escritorio grfico en las mquinas internas, instale el paquete elinks,
el cual, es un navegador WEB en modo texto. selo para comprobar si las reglas de la tarea anterior
operan correctamente.