Está en la página 1de 38

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES

Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David Jess Horat Flotats Enrique Fernndez Perdomo

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

ndice
Introduccin a los cortafuegos o firewall........................................................... 2 Introduccin a iptables....................................................................................... 8 Parmetros de iptables..................................................................................... 10 SINOPSIS...................................................................................................... 10 OBJETIVOS....................................................................................................11 TABLAS......................................................................................................... 11 PARMETROS...............................................................................................11 EXTENSIONES..............................................................................................12 icmp........................................................................................................... 12 state...........................................................................................................12 tcp..............................................................................................................13 Ejemplo de una poltica concreta..................................................................... 14 Objetivos........................................................................................................14 Configuracin................................................................................................14 Ejemplos de acceso...........................................................................................22 Ip-Spoofing.................................................................................................... 22 ICMP..............................................................................................................22 Telnet............................................................................................................ 26 FTP................................................................................................................ 27 POP3..............................................................................................................28 HTTP............................................................................................................. 30 SMTP.............................................................................................................33 DNS............................................................................................................... 36

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Introduccin a los cortafuegos o firewall1


Un firewall es un dispositivo que filtra el trfico entre redes, como mnimo dos. El firewall puede ser un dispositivo fsico o un software sobre un sistema operativo. En general debemos verlo como una caja con DOS o mas interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexin determinada puede establecerse o no. Incluso puede ir ms all y realizar modificaciones sobre las comunicaciones, como el NAT. Esa sera la definicin genrica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS que filtra el trfico TCP/UDP/ICMP/../IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red. Esta sera la tipologa clsica de un firewall:

Ilustracin 1: Esquema de firewall tpico entre red local e internet

Esquema tpico de firewall para proteger una red local conectada a internet a travs de un router. El firewall debe colocarse entre el router (con un nico cable) y la red local (conectado al switch o al hub de la LAN) Dependiendo de las necesidades de cada red, puede ponerse uno o ms firewalls para establecer distintos permetros de seguridad en torno a un sistema. Es frecuente tambin que se necesite exponer algn servidor a internet (como es el caso de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier conexin a
1 Extrado de http://www.pello.info/filez/firewall/iptables.html

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

ellos. Lo que se recomienda en esa situacin es situar ese servidor en lugar aparte de la red, el que denominamos DMZ o zona desmilitarizada. El firewall tiene entonces tres entradas:

Ilustracin 2: Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten. Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a l, la red local sigue protegida por el firewall. Esta estructura de DMZ puede hacerse tambin con un doble firewall (aunque como se ve se puede usar un nico dispositivo con al menos tres interfaces de red). Sera un esquema como este:

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Ilustracin 3: Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble firewall(permetro)

Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como proteccin de internet en las empresas, aunque ah tambin suelen tener una doble funcin: controlar los accesos externos hacia dentro y tambin los internos hacia el exterior; esto ltimo se hace con el firewall o frecuentemente con un proxy (que tambin utilizan reglas, aunque de ms alto nivel). Tambin, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o ms firewalls ya sea filtrando toda la instalacin o parte de ella:

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Ilustracin 4: Esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

Sea el tipo de firewall que sea, generalmente no tendr mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo tcp/ip. En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos de ellos, no solo los tcp, tambin los udp, los icmp, los gre y otros protocolos vinculados a vpns. Este podra ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer grfico: Politica por defecto ACEPTAR. Todo lo que venga de la red local al firewall ACEPTAR Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR Todo lo que venga de hora.rediris.es al puerto udo 123 ACEPTAR Todo lo que venga de la red local y vaya al exterior ENMASCARAR 5

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR Todo lo que venga del exterior al puerto tcp 3389 DENEGAR Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR En definitiva lo que se hace es: - Habilita el acceso a puertos de administracin a determinadas IPs privilegiadas - Enmascara el trafico de la red local hacia el exterior (NAT, una peticin de un pc de la LAN sale al exterior con la ip pblica), para poder salir a internet - Deniega el acceso desde el exterior a puertos de administracin y a todo lo que este entre 1 y 1024. Hay dos maneras de implementar un firewall: 1) Poltica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegar lo que se diga explcitamente. 2) Poltica por defecto DENEGAR: todo esta denegado, y solo se permitir pasar por el firewall aquellos que se permita explcitamente. Como es obvio imaginar, la primera poltica facilita mucho la gestin del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa; el resto no importa tanto y se deja pasar. Por ejemplo, si queremos proteger una mquina linux, podemos hacer un netstat -ln (o netstat -an, o netstat -puta | grep LISTEN), saber que puertos estn abiertos, poner reglas para proteger esos puertos y ya est. Para qu vamos a proteger un puerto que realmente nunca se va a abrir? El nico problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos. Si la poltica por defecto es ACEPTAR y no se protege explcitamente, nos la estamos jugando un poco. En cambio, si la poltica por defecto es DENEGAR, a no ser que lo 6

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

permitamos explcitamente, el firewall se convierte en un autntico MURO infranqueable. El problema es que es mucho ms difcil preparar un firewall as, y hay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentacin de empezar a meter reglas super-permisivas. Esta configuracin de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mnimamente el sistema. Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls. IMPORTANTE El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); despus de eso NO SE MIRARN MS REGLAS para ese paquete. Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan de nada.

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Introduccin a iptables2
IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo iniciamos o detenemos o que se pueda caer por un error de programacin(esto es una pequea mentira, ha tenido alguna vulnerabilidad que permite DoS, pero nunca tendr tanto peligro como las aplicaciones que escuchan en determinado puerto TCP): iptables esta integrado con el kernel, es parte del sistema operativo. Cmo se pone en marcha? Realmente lo que se hace es aplicar reglas. Para ellos se ejecuta el comando iptables, con el que aadimos, borramos, o creamos reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall. El kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete segn mande el firewall. Este es el camino que seguira un paquete en el kernel:

Ilustracin 5: Cuando un paquete u otra comunicacin llega al kernel con iptables se sigue este camino

Como se ve en el grfico, bsicamente se mira si el paquete esta


2 Extrado de http://www.pello.info/filez/firewall/iptables.html

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

destinado a la propia maquina o si va a otra. Para los paquetes (o datagramas, segn el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD. INPUT,OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino. Veremos ejemplos. E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son reglas poco conocidas y es probable que no las usen. Por tanto tenemos tres tipos de reglas en iptables: - MANGLE - NAT: reglas PREROUTING, POSTROUTING - FILTER: reglas INPUT, OUTPUT, FORWARD.

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Parmetros de iptables
Iptables admite muchos parmetros, de los cuales a continuacin se comentarn los principales y, ms en concreto, los usados para la configuracin realizado del firewall de nuestra mquina.

SINOPSIS
iptables [-t table] -[AD] chain especificacin-regla [opciones] --> con A se aade una regla a la cadena de reglas; con D se borra una regla de la cadena de reglas. iptables [-t table] -I chain [numeroregla] especificacin-regla [opciones] --> Insertar una regla en concreto. iptables [-t table] -R chain numeroregla especificacin-regla [opciones] --> Reemplazar una regla en concreto. iptables [-t table] -D chain numeroregla [opciones] --> Eliminar una regla en concreto. iptables [-t table] -[LFZ] [chain] [opciones] --> L lista todas las reglas de una cadena de reglas; F hace un flush, es decir, actualiza los cambios en la cadena de reglas; Z pone a cero los paquetes y contadores de las cadenas de reglas. iptables [-t table] -N chain --> Crea una nueva cadena de reglas (chain). iptables [-t table] -X [chain] --> Elimina toda una cadena de reglas (chain). iptables [-t table] -P chain objetivo [opciones] --> Establece la poltica para una cadena de reglas, es decir, el objetivo para la misma. Sirve como poltica por defecto. 10

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

iptables [-t table] -E old-chain-name new-chain-name --> Renombre una cadena de reglas (chain).

OBJETIVOS
Las reglas de un firewall especifican un criterio para los paquetes y el objetivo, es decir, que hacer con ellos. Si una regla se valida se le aplica el objetivo. Los posibles objetivos son:

ACCEPT indica que se deje pasar el paquete. DROP indica que se desecha el paquete. Otros: QUEUE y RETURN

TABLAS
Hay tres tipos de tabla: -t, --table tabla Indica sobre que tabla actuar la opcin o comando. Las tablas son: filter: Tabla por defecto. Contiene las cadenas de reglas: INPUT (paquetes entrantes), FORWARD (paquetes enrutados), y OUTPUT (paquetes salientes). nat: Tabla para paquetes encontrados en conexiones nuevas. Admite las siguientes cadenas de reglas: PREROUTING, OUTPUT y POSTROUTING. mangle: Tabla para alteraciones especiales de los paquetes.

PARMETROS
Parmetros para especificar reglas. Se usan al aadir, eliminar, insertar, reemplazar y concatenar comandos. -p, --protocol [!] protocolo Protocolo del paquete a chequear. Se admite: tcp, udp, icmp, or all (por defecto), o un valor numrico. Con "!" se niega. 11

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

-s, --source [!] direccin[/mscara] Origen o fuente. La direccin puede ser un nombre de dominio, hostname, una IP de red o IP de mquina. La mscara puede ser de una red o una mquina, e indica el nmero de 1s. Se suele usar el alias --src. -d, --destination [!] direccin[/mscara] Destino. Se suele usar el alias dst. -j, --jump objetivo Indica el objetivo de la regla, es decir, que hacer con ella, que se indica en el apartado de OBJETIVOS. -i, --in-interface [!] name Interfaz por la que se reciben los paquetes. Admite las cadenas de reglas INPUT, FORWARD y PREROUTING. -o, --out-interface [!] name Interfaz por la que se envan los paquetes. Admite las cadenas de reglas FORWARD, OUTPUT y POSTROUTING.

EXTENSIONES
iptables puede extenderse, es decir, extender los mdulos de matching de paquetes. Se puede hacer implcitamente (ej. con -p o protocol, que indican el protocolo y automticamente se carga el mdulo del protocolo) o explcitamente, con las opciones -m o --match, seguidas del nombre del mdulo de matching; despus de esto se dispone de varios comandos extra, segn el mdulo.

icmp
Esta extensin se carga al indicar -p icmp. Proporciona la siguiente opcin: --icmp-type [!] typename Especifica el tipo de ICMP, que puede ser un valor numrico o nombres de tipos ICMP. En nuestro caso destacan dos: echo-request (interrogacin o peticin) y echo-reply (repuesta o contestacin).

state
Este mdulo, cuando se comibina con el seguimiento de conexiones, permite el acceso al seguimiento del estado de los paquetes. --state estado 12

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

El estado es una lista separado por espacios para comprobar los estados de la conexin. Los posibles estados son: INVALID indica que el paquete no puede identificarse. ESTABLISHED indica que el paquete est asociado con una conexin en la que se han visto paquetes en ambas direcciones. NEW indica que el paquete ha iniciado una nueva conexin o bien est asociado a una conexin en la que no se han visto paquetes en ambas direcciones. RELATED indica que el paquete est iniciando una nueva conexin, pero est asociado a una conexin existente. Es el caso de las transferencias de datos FTP o los errores ICMP.

tcp
Esta extensin se carga con -p tcp. Proporciona las siguientes opciones: --source-port [!] puerto[:puerto] Puerto o rango de puertos de origen. Puede indicar el nombre de un servicio (ej. ftp) o un nmero de puerto. Puede indicarse un rango inclusivo. Si se omite el primer puerto (:puerto) se toma 0. Si se omite el segundo valor (puerto:) se toma el valor mximo: 65535. Se suele usar el alias --sport. --destination-port [!] puerto[:puerto] Puerto o rango de puertos de destino. Se suele usar el alias --dport.

13

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Ejemplo de una poltica concreta


Objetivos

Llevar a cabo la poltica de Denegacin por defecto tal que todos los

servicios estn prohibidos por defecto y haya que ir aadiendo servicios bajo peticin.

Activar los siguientes servicios


IP-SPOOFING: Evitar spoofing the nuestras direcciones de red ICMP: Denegar Echo Request a mquinas internas Telnet: Solo hacia afuera FTP: Solo hacia afuera POP3: Solo hacia afuera por enlaces ethernet y ambos sentidos por HTTP: Solo hacia afuera y a travs del servidor proxy SMTP: Solo hacia afuera con la mquina 172.16.1.1 que acta como DNS: Ambos sentidos pero solo con la mquina 172.16.1.1 que

enlaces ppp.

proxy.ulpgc.es (193.145.133.12)

relaying de correo

actuar de forwarder

Configuracin
Para la configuracin de iptables usaremos un script the bash creado para esta ocasin y comentado, con el mismo orden que la lista de servicios a activar indicada en los Objetivos. Adems, consta de una declaracin de variables previa, para que sirve para cualquier jerarqua de direcciones Ips. En el propio script se comenta lo que hace cada lnea, que se han realizado (escrito) segn el orden de las configuraciones a aplicar, tal y como el guin de la prctica lo indicaba. #!/bin/bash

14

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

# Variables
INTERNET=eth0 LOCAL=eth1 REDLOCAL=172.16.6.0/24 YO=172.16.1.6

echo "Aplicando Reglas de Firewall..."

# Borrado de reglas
iptables -F iptables -X iptables -Z iptables -t nat -F

# Establecemos politica de denegacin por defecto


iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

# [1] IP-SPOOFING - Evitar SPOOFING de nuestras direcciones de red... # [1.1] a la propia mquina
iptables -A INPUT -i $INTERNET -s $REDLOCAL -j DROP && echo "Impedimos IP-Spoofing"

# [1.2] a las mquinas de la red interna


iptables -A FORWARD -i $INTERNET -s $REDLOCAL -j DROP && echo "Impedimos IPSpoofing"

# [2] ICMP - Denegar Echo Request a mquinas internas y aceptar el resto # [2.1] Permitir ping hacia fuera, desde la red interna
iptables -A FORWARD -i $LOCAL -p icmp --icmp-type echo-request -j ACCEPT && echo "Aceptamos ICMP request a travs"

15

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

iptables -A FORWARD -i $INTERNET -p icmp --icmp-type echo-reply -j ACCEPT && echo "Aceptamos ICMP reply a travs"

# [2.2] Permitir ping hacia fuera, desde la propia mquina


iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT && echo "Aceptamos ICMP request hacia fuera" iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT && echo "Aceptamos ICMP reply hacia dentro"

# [2.3] Permitir ping a la propia mquina, desde la red local


iptables -A INPUT -p icmp --icmp-type echo-request -s $REDLOCAL -j ACCEPT && echo "Aceptamos ICMP request de mi red" iptables -A OUTPUT -p icmp --icmp-type echo-reply -d $REDLOCAL -j ACCEPT && echo "Aceptamos ICMP reply a mi red"

# [2.4] Admitir ping a mi mismo a travs de la interfaz externa (en realidad, ya se cubre con las reglas [2.5]) #iptables -A INPUT -p icmp --icmp-type echo-request -s $YO -j ACCEPT && echo "Aceptamos ICMP request de mi mismo" #iptables -A OUTPUT -p icmp --icmp-type echo-reply -d $YO -j ACCEPT && echo "Aceptamos ICMP reply a mi mismo" # [2.5] Permite que: # 1. Me pueda hacer ping a mismo a travs de la interfaz externa # 2. Me vean desde Internet a travs de la interfaz externa (pero no de la interna)
iptables -A INPUT -p icmp --icmp-type echo-request -d $YO -j ACCEPT && echo "Aceptamos ICMP request a mi mismo" iptables -A OUTPUT -p icmp --icmp-type echo-reply -s $YO -j ACCEPT && echo "Aceptamos ICMP reply de mi mismo"

# [3] Telnet solo hacia fuera # [3.1] Dejar salir hacia fuera, desde red interna y la propia mquina 16

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

iptables -A FORWARD -i $LOCAL -p tcp --dport 23 -s $REDLOCAL -j ACCEPT && echo "Aceptamos FTP a traves" iptables -A OUTPUT -p tcp --dport 23 -j ACCEPT && echo "Aceptamos FTP hacia fuera"

# [3.2] Dejar entrar paquetes de las conexiones establecidas, hacia la red interna y la propia mquina
iptables -A FORWARD -i $INTERNET -p tcp -m tcp --sport 23 -m state --state 'RELATED' -state 'ESTABLISHED' -j ACCEPT && echo "" iptables -A INPUT -p tcp -m tcp --sport 23 -m state --state 'RELATED' --state 'ESTABLISHED' -j ACCEPT && echo ""

# [4] FTP solo hacia fuera # [4.1] Dejar salir hacia fuera, desde red interna y la propia mquina
iptables -A FORWARD -i $LOCAL -p tcp --dport ftp -s $REDLOCAL -j ACCEPT && echo "Aceptamos FTP a traves" iptables -A OUTPUT -p tcp --dport ftp -j ACCEPT && echo "Aceptamos FTP hacia fuera"

# [4.2] Dejar entrar paquetes de las conexiones establecidas, hacia la red interna y la propia mquina
iptables -A FORWARD -i $INTERNET -p tcp -m tcp --sport ftp -m state --state 'RELATED' -state 'ESTABLISHED' -j ACCEPT && echo "Aceptamos FTP a traves hacia dentro de conexiones establecidas" iptables -A INPUT -p tcp -m tcp --sport ftp -m state --state 'RELATED' --state 'ESTABLISHED' -j ACCEPT && echo "Aceptamos FTP hacia dentro siempre que venga de una conexin establecida"

# [5] DNS en ambos sentidos pero solo con la mquina 172.16.1.1 que actuar de forwarder # [5.1] Dejar salir hacia 172.16.1.1, desde red interna y la propia mquina
iptables -A FORWARD -i $LOCAL -d 172.16.1.1 -p udp --dport 53 -j ACCEPT && echo "Aceptamos DNS hacia afuera" iptables -A OUTPUT -d 172.16.1.1 -p udp --dport 53 -j ACCEPT && echo "Aceptamos DNS

17

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

hacia "

# [5.2] Dejar entrar paquetes desde 172.16.1.1, hacia la red interna y la propia mquina
iptables -A FORWARD -i $INTERNET -s 172.16.1.1 -p udp --sport 53 -j ACCEPT && echo "Aceptamos DNS de vuelta" iptables -A INPUT -s 172.16.1.1 -p udp --sport 53 -j ACCEPT && echo "Aceptamos DNS de vuelta"

# [6] POP3 solo hacia fuera por enlace ethernet # [6.1] Dejar salir hacia fuera, desde red interna y la propia mquina
iptables -A FORWARD -i $LOCAL -p tcp --dport 110 -j ACCEPT && echo "Aceptamos POP3 hacia afuera" iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT && echo "Aceptamos POP3 de vuelta"

# [6.2] Dejar entrar paquetes de las conexiones establecidas, hacia la red interna y la propia mquina
iptables -A FORWARD -i $INTERNET -p tcp -m tcp --sport 110 -m state --state 'RELATED' -state 'ESTABLISHED' -j ACCEPT && echo "Aceptamos POP3 a traves hacia las mquinas internas" iptables -A INPUT -p tcp -m tcp --sport 110 -m state --state 'RELATED' --state 'ESTABLISHED' -j ACCEPT && echo "Aceptamos POP3 hacia la mquina firewall"

# [6.3] Dejar salir hacia fuera por ppp, desde red interna y la propia mquina
iptables -A FORWARD -i ppp+ -p tcp --sport 110 -j ACCEPT && echo "Aceptamos POP3 a traves hacia dentro" iptables -A OUTPUT -o ppp+ -p tcp --sport 110 -j ACCEPT && echo "Aceptamos POP3 a traves hacia fuera"

# [6.4] Dejar entrar paquetes de las conexiones ppp establecidas, hacia la red interna y la propia mquina
iptables -A FORWARD -o ppp+ -p tcp --dport 110 -j ACCEPT && echo "Aceptamos POP3 a

18

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

traves hacia fuera" iptables -A INPUT -i ppp+ -p tcp --dport 110 -j ACCEPT && echo "Aceptamos POP3 a traves hacia dentro"

# [7] HTTP solo hacia afuera y a travs del servidor Proxy "proxy.rcanaria.es" (193.146.95.50) # [7.1] Dejar salir hacia el proxy 193.146.95.50, desde red interna y la propia mquina
iptables -A FORWARD -i $LOCAL -d 193.146.95.50 -p tcp --dport 3128 -j ACCEPT && echo "Aceptamos HTTP hacia afuera a proxy.ulpgc.es (193.145.133.12)" iptables -A OUTPUT -d 193.146.95.50 -p tcp --dport 3128 -j ACCEPT && echo "Aceptamos HTTP de vuelta de proxy.ulpgc.es (193.145.133.12)"

# [7.2] Dejar entrar paquetes de las conexiones establecidas, hacia la red interna y la propia mquina
iptables -A FORWARD -i $INTERNET -s 193.146.95.50 -p tcp -m tcp --sport 3128 -m state -state 'RELATED' --state 'ESTABLISHED' -j ACCEPT && echo "Aceptamos POP3 a traves hacia las mquinas internas" iptables -A INPUT -s 193.146.95.50 -p tcp -m tcp --sport 3128 -m state --state 'RELATED' -state 'ESTABLISHED' -j ACCEPT && echo "Aceptamos POP3 hacia la mquina firewall"

# [8] SMTP solo hacia afuera con la mquina 172.16.1.24 (neptuno.redes.dis.ulpgc.es) que acta como relaying de correo # [8.1] Dejar salir hacia 172.16.1.24, desde red interna y la propia mquina
iptables -A FORWARD -i $LOCAL -d 172.16.1.24 -p tcp --dport 25 -j ACCEPT && echo "Aceptamos SMTP hacia afuera a 172.16.1.24" iptables -A OUTPUT -d 172.16.1.24 -p tcp --dport 25 -j ACCEPT && echo "Aceptamos SMTP hacia afuera a 172.16.1.24"

# [8.2] Dejar entrar paquetes de las conexiones establecidas con 172.16.1.24, hacia la red interna y la propia mquina
iptables -A FORWARD -i $INTERNET -s 172.16.1.24 -p tcp -m tcp --sport 25 -m state --state

19

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

'ESTABLISHED' --state 'RELATED' -j ACCEPT && echo "Aceptamos SMTP de vuelta de 172.16.1.24" iptables -A INPUT -s 172.16.1.24 -p tcp -m tcp --sport 25 -m state --state 'ESTABLISHED' -state 'RELATED' -j ACCEPT && echo "Aceptamos SMTP de vuelta de 172.16.1.24"

read
echo "Para comprobar que se aplica: iptables -L -n"

read
iptables -L -n

Las tres ltimas lneas se destinan a poder visualizar el estado resultante de las tablas del iptables, lo que sirve de comprobacin de la activacin de los servicios apropiados. Adicionalmente se dispone de otro script cuya finalidad es configurar iptables de forma que no filtre nada, es decir, que acepte todo. Dicho fichero de script se muestra a continuacin: #!/bin/bash
echo "Aplicando Reglas de Firewall..." echo "Aceptando todas las conexiones ..."

# Borrado de reglas
iptables -F iptables -X iptables -Z iptables -t nat -F

# Establecemos politica de aceptacin por defecto


iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT

20

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT

21

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Ejemplos de acceso
En esta seccin se listarn las pruebas realizadas, con la finalidad de demostrar el correcto funcionamiento de la configuracin del cortafuegos iptables, que se ha realizado con el script visto en la seccin anterior. Las pruebas realizadas se enumeran a continuacin segn el orden establecido en el guin de la prctica; determinadas configuraciones no ser posible probarlas, ya que no se dispone de las herramientas apropiadas para ello, o bien su manejo es complejo.

Ip-Spoofing
Para realizar una prueba de Ip-Spoofing no basta tomar una mquina externa a la red y cambiar su configuracin de red. De hecho, si se hace eso no tendra conectividad porque la mscara de red no sera la apropiada o bien la Ip o Pasarela estara mal configurada. Para poder hacer Ip-Spoofing habra que modificar los paquetes enviados intentando modificar el campo que indica la IP de origen o fuente. Para ello se requerira una herramienta que lo permitiera, de la cual no se dispone. Por este motivo, no es posible realizar una prueba para observar como el cortafuegos evita el Ip-Spoofing.

ICMP
Para probar la intervencin del cortafuego frente a los paquetes del protocolo ICMP, se har uso de la herramienta ping, que usa este protocolo para las interrogaciones (echo-request) a otras mquinas y las respuestas (echo-reply) de dichas mquinas. En primer lugar comprobamos que desde la mquina 172.16.6.1, que es donde se dispone del firewall instalado, se puede hacer ping a cualquier mquina. Los tres posibles casos son:

22

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

1. Mquinas de la red interna (172.16.6.0) Hacemos la prueba con el equipo PC, de nuestra red interna (tambin podra hacer con la interfaz de la red interna de la propia mquina), y vermos que se permite. [root@pasarela12 Desktop]# ping 172.16.6.2 PING 172.16.6.2 (172.16.6.2) 56(84) bytes of data. 64 bytes from 172.16.6.2: icmp_seq=0 ttl=64 time=0.887 ms 64 bytes from 172.16.6.2: icmp_seq=1 ttl=64 time=0.116 ms --- 172.16.6.2 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.116/0.501/0.887/0.386 ms, pipe 2 2. Mquinas de la red externa (172.16.1.0) Del mismo modo, se permite perfectamente. La prueba se ha realizado sobre la mquina 172.16.1.1. [root@pasarela12 Desktop]# ping 172.16.1.1 PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data. 64 bytes from 172.16.1.1: icmp_seq=0 ttl=64 time=0.180 ms 64 bytes from 172.16.1.1: icmp_seq=1 ttl=64 time=0.144 ms --- 172.16.1.1 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.144/0.162/0.180/0.018 ms, pipe 2 3. Mquinas externas (Internet) Con redes externas, en Internet, tampoco hay problema (siempre que no haya otro firewall que lo impida para sus mquinas). En este caso la prueba se hace con www.google.com. [root@pasarela12 Desktop]# ping www.google.com 23

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

PING www.l.google.com (66.102.9.147) 56(84) bytes of data. 64 bytes from 66.102.9.147: icmp_seq=0 ttl=237 time=83.6 ms 64 bytes from 66.102.9.147: icmp_seq=1 ttl=237 time=84.0 ms --- www.l.google.com ping statistics --3 packets transmitted, 2 received, 33% packet loss, time 2001ms rtt min/avg/max/mdev = 83.678/83.866/84.054/0.188 ms, pipe 2 Este comportamiento es normal, pues la mquina del firewall no restringe la posibilidad de hacer ping hacia cualquier destino, sino que las restricciones son en sentido de entrada. A continuacin se prueba como los pings que se hacen a la propia mquina (la que tiene el firewall configurado) desde equipos de su red (172.16.6.0), que se admitirn. Adems, tambin se admite la realizacin de ping desde la interfaz externa de la propia mquina, que est en la red 172.16.1.0. El ping desde la red interna se hace desde la interfaz de la red interna de la propia mquina (172.16.6.1). [root@pasarela12 ~]# ping 172.16.6.1 PING 172.16.6.1 (172.16.6.1) 56(84) bytes of data. 64 bytes from 172.16.6.1: icmp_seq=0 ttl=64 time=0.143 ms 64 bytes from 172.16.6.1: icmp_seq=1 ttl=64 time=0.130 ms --- 172.16.6.1 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.130/0.136/0.143/0.013 ms, pipe 2 El ping desde el interfaz de la red externa (172.16.1.6) tambin funciona: [root@pasarela12 ~]# ping 172.16.1.6 PING 172.16.1.6 (172.16.1.6) 56(84) bytes of data. 64 bytes from 172.16.1.6: icmp_seq=0 ttl=64 time=0.153 ms 24

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

64 bytes from 172.16.1.6: icmp_seq=1 ttl=64 time=0.143 ms 64 bytes from 172.16.1.6: icmp_seq=2 ttl=64 time=0.149 ms --- 172.16.1.6 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.143/0.148/0.153/0.010 ms, pipe 2 Finalmente, si probamos la realizacin de un ping desde una mquina externa (en realidad una mquina del Laboratorio, dentro de la red 172.16.1.0), veremos como puede hacer el ping a la interfaz externa (172.16.1.6) de la mquina con el firewall, pero no as como Ips de la red interna (172.16.6.0), ni siquiera de la mquina con el firewall (172.16.6.1). En la siguiente captura de pantalla puede observarse el funcionamiento del ping al realizarlo sobre la interfaz 172.16.1.6 y como se rechaza si se hace sobre las interfaces de la red interna 172.16.6.0 (como la 172.16.61, en este caso), respectivamente.

25

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Esto es indicativo de un correcto funcionamiento del firewall.

Telnet
Para probar la conexiones con telnet, cuyo puerto segn el estndar es el 23, se requiere de una aplicacin que escuche por dicho puerto para que se establezcan las conexiones. Como no se dispone de ninguna aplicacin para ello, la forma en que se har la prueba consistir en ver la diferencia en el proceso en funcin de si el firewall est o no activado. Sin firewall se tiene lo siguiente: [root@pasarela12 Desktop]# telnet 172.16.6.1 23 Trying 172.16.6.1... telnet: connect to address 172.16.6.1: Connection refused telnet: Unable to connect to remote host: Connection refused

26

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

El error en la conexin se debe a que no se establece la conexin porque no hay ninguna aplicacin a la escucha por el puerto 23, para telnet. Con firewall, por contra, se tiene lo siguiente: [root@pasarela12 Desktop]# telnet 172.16.6.1 23 Trying 172.16.6.1... Esto es indicativo de que cuando el firewall acta, la conexin no se permite con el puerto 23, que es el de telnet. Por este motivo el cliente telnet se queda bloqueado como si aparentemente no hiciera nada. Esto demuestra que el firewall est funcionando.

FTP
Las conexiones FTP slo se harn hacia fuera, es decir, la mquina con el firewall no funcionar de servidor FTP. Si se hace conexin FTP con ella se rechazar (en realidad el cliente FTP se suele quedar bloqueado aparentemente sin hacer nada). Si se hace una conexin FTP desde la propia mquina o desde un equipo de la red interna a la propia mquina (en concreto la IP 172.16.6.1), no se acepta la conexin. [root@pasarela12 ~]# ftp 172.16.6.1 [root@pasarela12 ~]# Sin embargo, si nos conectamos al FTP de la mquina 172.16.1.1 la conexin s se har efectiva. Tanto desde la propia mquina: [root@pasarela12 Desktop]# ftp 172.16.1.1 Connected to 172.16.1.1. 220---------- Bienvenido a Pure-FTPd ---------220-Eres el usuario numero 2 de 50 permitidos 220-La hora local es ahora 18:55. Puerto del servidor: 21. 220-Las conexiones IPv6 tambien son bienvenidas en este servidor 220 Seras desconectado despues de 15 minutos de inactividad. 500 Extensiones de seguridad no implementadas 27

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

500 Extensiones de seguridad no implementadas KERBEROS_V4 rejected as an authentication type ... Como desde una mquina de la red interna: [root@pasarela12 ~]# ftp 172.16.1.1 Connected to 172.16.1.1. 220---------- Bienvenido a Pure-FTPd ---------220-Eres el usuario numero 1 de 50 permitidos 220-La hora local es ahora 18:55. Puerto del servidor: 21. 220-Las conexiones IPv6 tambien son bienvenidas en este servidor 220 Seras desconectado despues de 15 minutos de inactividad. 500 Extensiones de seguridad no implementadas 500 Extensiones de seguridad no implementadas KERBEROS_V4 rejected as an authentication type Name (172.16.1.1:root): anonymous 230-Bienvenido al FTP anonimo del Grupo Docente de Redes. 230230-Toda la actividad que aqui se realiza queda grabada. 230-Si no le gusta dicha politica por favor abandone el 230-sitio. 230230-Gracias. 230 Usuario Anonimo dentro del sistema Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221-Adios. Has transmitido 0 y descargado 0 kbytes. 221 Fin de sesion.

POP3
Para probar la conexiones a servidores POP3 se requiere de una 28

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

aplicacin que ser el servidor POP3, en la propia mquina, que tiene el firewall. En realidad no se dispone de ningn servidor POP3. Como slo debe permitirse las conexiones POP3 hacia fuera, la forma de probarlo ser ver que ocurre sin firewall y con firewall al intentar conexiones POP3 con la propia mquina. Sin firewall se tiene lo siguiente: [root@pasarela12 Desktop]# telnet 172.16.6.1 110 Trying 172.16.6.1... telnet: connect to address 172.16.6.1: Connection refused telnet: Unable to connect to remote host: Connection refused El error en la conexin se debe a que no se establece la conexin porque no hay ninguna aplicacin a la escucha por el puerto 110, para POP3. Con firewall, por contra, se tiene lo siguiente: [root@pasarela12 Desktop]# telnet 172.16.6.1 110 Trying 172.16.6.1... Esto es indicativo de que cuando el firewall acta, la conexin no se permite con el puerto 110, que es el de POP3. Por este motivo el cliente telnet se queda bloqueado como si aparentemente no hiciera nada. Esto demuestra que el firewall est funcionando. Si la conexin POP3 se hace hacia fuera, es decir, con un servidor POP3 externo, como pop.correo.yahoo.es, la conexin se realizar con xito, como en el siguiente caso. [root@pasarela12 Desktop]# telnet pop.correo.yahoo.es 110 Trying 216.136.173.10... Connected to pop.correo.yahoo.es (216.136.173.10). Escape character is '^]'. +OK hello from popgate(2.31.0) user enrique 29

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

+OK password required. pass ****** +OK maildrop ready, 50 messages (10987352 octets) (13400180 207341824) Adicionalmente, para conexin de acceso telefnico a redes (PPP) s se permitirn las conexions POP3 en ambos sentidos. La conexin con servidores POP3 externos como pop.correo.yahoo.es seguir funcionando. [root@pasarela12 Desktop]# telnet pop.correo.yahoo.es 110 Trying 216.136.173.10... Connected to pop.correo.yahoo.es (216.136.173.10). Escape character is '^]'. quit +OK hello from popgate(2.31.0) Connection closed by foreign host. Sin embargo, para comprobar el funcionamiento con un servidor interno se requerir de un servidor POP3, del cual no se dispone en la mquina en que est el firewall. Por este motivo no es posible la realizacin de una prueba representativa para este caso.

HTTP
Para las conexiones HTTP slo se permitirn hacia fuera a travs del proxy proxy.rcanaria.es, ya que el proxy proxy.ulpgc.es no existe. La Ip de proxy.rcanaria.es es la 193.146.95.50. Para la realizacin de las pruebas se usar el navegador Firefox en el cual se obligar al uso del proxy, indicndolo en las configuraciones de conexin, accesibles desde las Preferencias. La configuracin para que se use el proxy ser la de la Ilustracin 1, en la que se indica la Ip del proxy proxy.rcanaria.es (193.146.95.50) y su puerto, que es el 3128.

30

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Illustracin 1: Configuracin del proxy: proxy.rcanaria.es (193.146.95.50:3128)

Para las capturas se usar tcpdump para ver el trfico de la red, segn la prueba que se realice. En primer lugar se usa el navegador sin usar el proxy, de forma que el firewall no le permitir el acceso, pues no usa el proxy, como se observa en la siguiente captura del tcpdump. [root@pasarela12 Desktop]# tcpdump -i eth1 src 172.16.1.6 or dst 172.16.1.6 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 15:28:09.785848 IP pasarela6.redes.dis.ulpgc.es.32790 > pasarela1.redes.dis.ulpgc.es.53: 8001+ AAAA? www.google.com. (33) 31

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

15:28:09.786526 IP pasarela6.redes.dis.ulpgc.es.32791 > pasarela1.redes.dis.ulpgc.es.53: 5478+ PTR? 6.1.16.172.in-addr.arpa. (41) 15:28:14.784367 arp who-has pasarela1.redes.dis.ulpgc.es tell pasarela6.redes.dis.ulpgc.es 15:28:14.799454 IP pasarela6.redes.dis.ulpgc.es.32790 > pasarela1.redes.dis.ulpgc.es.53: 8001+ AAAA? www.google.com. (33) 15:28:19.140179 IP pasarela6.redes.dis.ulpgc.es.32791 > pasarela1.redes.dis.ulpgc.es.53: 27503+ A? www.google.com. (33) Se ha intentado acceder a www.google.es y se observa que slo se realizan proceso de resolucin de nombres con el DNS de la mquina 172.16.1.1 (que tiene el nombre pasarela1.redes.dis.ulpgc.es en nuestra mquina). El proceso de obtencin de la pgina por conexin y uso del protocolo HTTP no se lleva a cabo porque el firewall slo lo permite a travs del proxy antes indicado. Si ahora activamos el uso del firewall como se indic en la Ilustracin 1, al realizar el acceso a www.google.es s funcionar. [root@pasarela12 Desktop]# tcpdump -i eth1 src 172.16.1.6 or dst 172.16.1.6 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 15:35:21.181762 IP pasarela6.redes.dis.ulpgc.es.32899 > 193.146.95.50.3128: S 3121570739:3121570739(0) win 5840 <mss 1460,sackOK,timestamp 6936619 0,nop,wscale 2> 15:35:21.187245 IP pasarela6.redes.dis.ulpgc.es.32791 > pasarela1.redes.dis.ulpgc.es.53: 13318+ PTR? 50.95.146.193.in-addr.arpa. (44) 15:35:21.187507 IP pasarela1.redes.dis.ulpgc.es.53 > pasarela6.redes.dis.ulpgc.es.32791: 13318 NXDomain 0/1/0 (131) 15:35:21.191814 IP pasarela6.redes.dis.ulpgc.es.32791 > pasarela1.redes.dis.ulpgc.es.53: 64099+ PTR? 2.1.16.172.in-addr.arpa. (41) 15:35:21.192002 IP pasarela1.redes.dis.ulpgc.es.53 > 32

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

pasarela6.redes.dis.ulpgc.es.32791: 64099* 1/1/0 PTR[|domain] 15:35:21.248494 IP 193.146.95.50.3128 > pasarela6.redes.dis.ulpgc.es.32899: S 683207663:683207663(0) ack 3121570740 win 5792 <mss 1460,sackOK,timestamp 96157260 6936619,nop,wscale 0> 15:35:21.248553 IP pasarela6.redes.dis.ulpgc.es.32899 > 193.146.95.50.3128: . ack 1 win 1460 <nop,nop,timestamp 6936686 96157260> 15:35:21.250414 IP pasarela6.redes.dis.ulpgc.es.32899 > 193.146.95.50.3128: P 1:412(411) ack 1 win 1460 <nop,nop,timestamp 6936687 96157260> 15:35:21.318387 IP 193.146.95.50.3128 > pasarela6.redes.dis.ulpgc.es.32899: . ack 412 win 6432 <nop,nop,timestamp 96157268 6936687> 15:35:21.406243 IP 193.146.95.50.3128 > pasarela6.redes.dis.ulpgc.es.32899: . 1449:2897(1448) ack 412 win 6432 <nop,nop,timestamp 96157276 6936687> Se observa como se realiza el intercambio de datos entre la propia mquina (pasarela6.redes.dis.ulpgc.es) y el proxy proxy.rcanaria.es que se ve como la IP 193.146.95.50, y ms concretamente junto con su puerto, que es el de proxy: 3128, teniendo 193.146.95.50.3128.

SMTP
Se trata de que slo puedan hacerse conexiones SMTP hacia fuera a travs de la mquina 172.16.1.24 (neptuno.redes.dis.ulpgc.es), que difiere de la indicada en el guin de la prctica (172.16.1.1), porque dicha mquina no acta como relay de correo. Si realizamos una conexin SMTP a la mquina 172.16.1.24 sin haber realizado la activacin del firewall, la conexin se consigue y adems se recibe el correo en nuestra mquina, lo cual podemos ver con mail -u enrique, como se ve a continuacin. 33

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

[root@pasarela12 sysconfig]# telnet 172.16.1.24 25 Trying 172.16.1.24... Connected to 172.16.1.24 (172.16.1.24). Escape character is '^]'. 220 neptuno.redes.dis.ulpgc.es ESMTP Postfix ehlo david 250-neptuno.redes.dis.ulpgc.es 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME mail from: davidj 250 Ok rcpt to:webmaster@pasarela6.red6.redes.dis.ulpgc.es 250 Ok data 354 End data with <CR><LF>.<CR><LF> hola . 250 Ok: queued as 679F0178976 quit 221 Bye Connection closed by foreign host. [root@pasarela12 sysconfig]# mail -u enrique Mail version 8.1 6/6/93. Type ? for help. "/var/mail/enrique": 1 message 1 new >N 1 davidj@redes.dis.ul Fri May 20 14:55 17/843 Adems, si en lugar de usar el servidor SMTP de la mquina 172.16.1.24, usamos nuestro servidor SMTP (de la mquina 172.16.6.1 172.16.1.6), tambin funcionar correctamente.

34

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

Si tenemos el firewall activado, ya no podremos conectarnos al servidor SMTP de nuestra mquina, pues el firewall slo deja hacerlo con la mquina 172.16.1.24. El resultado ser el siguiente, similar al caso anterior. [root@pasarela12 sysconfig]# telnet 172.16.1.24 25 Trying 172.16.1.24... Connected to 172.16.1.24 (172.16.1.24). Escape character is '^]'. 220 neptuno.redes.dis.ulpgc.es ESMTP Postfix ehlo david 250-neptuno.redes.dis.ulpgc.es 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME mail from: davidj 250 Ok rcpt to:webmaster@pasarela6.red6.redes.dis.ulpgc.es 250 Ok data 354 End data with <CR><LF>.<CR><LF> hola . 250 Ok: queued as 2C637178976 quit 221 Bye Connection closed by foreign host. [root@pasarela12 sysconfig]# mail -u enrique No mail for enrique La nica diferencia radica en que en este caso el correo no es recibido en nuestra mquina. Esto se debe a que el firewall no permite la entrada. 35

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

DNS
Slo se permitir que se use el servidor DNS 172.16.1.1, de modo que si el servidor DNS de la propia mquina (172.16.6.1) est en marcha, no deber permitirse el uso del mismo. Para probar esto, en primer lugar se hace que el servidor DNS que se est usando sea el 172.16.6.1: [root@pasarela12 etc]# nslookup > server Default server: 172.16.6.1 Address: 172.16.6.1#53 A continuacin probamos la resolucin de nombres haciendo simplemente un ping a un nombre de dominio, como www.google.es, en nuestro caso. En primer lugar probamos la resolucin sin haber activado las reglas del firewall, es decir, sin tener el firewall activo, de modo que se har la resolucin. [root@pasarela12 Desktop]# ping www.google.es PING www.l.google.com (66.102.9.99) 56(84) bytes of data. 64 bytes from 66.102.9.99: icmp_seq=0 ttl=237 time=84.5 ms --- www.l.google.com ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 84.593/84.593/84.593/0.000 ms, pipe 2 A continuacin, se activa el firewall. Ahora la resolucin no es posible, pues la regla impide que se use el servidor DNS 172.16.6.1, pues slo se permite el 172.16.1.1. [root@pasarela12 Desktop]# ping www.google.es ping: unknown host www.google.es Adems, podemos comprobar que es un simple problema de resolucin, porque se hacemos ping a la IP de www.google.es, conocida de antes (66.102.9.99), se ver que tenemos conectividad. 36

Prctica 5: Puesta en marcha de un cortafuegos con IPTABLES Arquitectura de Sistemas y Aplicaciones Distribuidas U.L.P.G.C.

David J. Horat Flotats Enrique Fernndez Perdomo

[root@pasarela12 Desktop]# ping 66.102.9.99 PING 66.102.9.99 (66.102.9.99) 56(84) bytes of data. 64 bytes from 66.102.9.99: icmp_seq=0 ttl=237 time=83.8 ms --- 66.102.9.99 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 83.864/83.864/83.864/0.000 ms, pipe 2 Dejando el firewall activado, cambiamos el servidor DNS que se usar para las resoluciones, poniendo el 172.16.1.1, que es el nico que admitir el firewall. [root@pasarela12 etc]# nslookup > server Default server: 172.16.1.1 Address: 172.16.1.1#53 Ahora la resolucin de nombres s funciona: [root@pasarela12 etc]# ping www.google.com PING www.l.google.com (66.102.9.147) 56(84) bytes of data. 64 bytes from 66.102.9.147: icmp_seq=0 ttl=237 time=84.8 ms 64 bytes from 66.102.9.147: icmp_seq=1 ttl=237 time=83.7 ms 64 bytes from 66.102.9.147: icmp_seq=2 ttl=237 time=83.2 ms --- www.l.google.com ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 83.237/83.960/84.866/0.677 ms, pipe 2

37

También podría gustarte