You are on page 1of 10

EJERCICIOS

DE

IP TABLES

1. A continuacin se muestra un script con comandos de configuracin con iptables (los nmeros que aparecen izquierda no forman parte del script, nicamente los utilizaremos para referirnos a cada lnea). (1)iptablesF (2)iptablesX (3)iptablesPINPUTDROP (4)iptablesPOUTPUTDROP (5)iptablesPFORWARDDROP (6)iptablesAINPUTilojACCEPT (7)iptablesAOUTPUTolojACCEPT (8)iptablesAOUTPUTmstatestate ESTABLISHED,RELATEDjACCEPT (9) iptablesAINPUTptcpdport80jACCEPT (10)iptablesAINPUTptcpdport22jACCEPT a) Indica el significado de cada lnea.

b) Para qu tipo de mquina est diseado este script (servidor, router, estacin de trabajo)? 2. a) Haz los siguientes scripts en linux. Prubalos uno a uno. Escribe un script de configuracin de Iptables que una vez ejecutado en tu mquina, permita acceder a Internet sin limitacin alguna. Comprueba el funcionamiento correcto, ejecutndolo y accediendo a algn sitio web. Modifica el script para que el cortafuegos no permita que enves peticiones ping a otras mquinas. Comprueba su funcionamiento ejecutndolo y probando mediante el envo de peticiones ping a algn servidor que conozcas. Modifcalo para que el cortafuegos no permita acceder a www.anforaformacion.es. Comprueba su funcionamiento ejecutndolo e intentado acceder.

b)

c)

Pgina 1.

EJERCICIOS

DE

IP TABLES

3. En este ejercicio implantaremos, paso a paso, una arquitectura segura de red que incluir un router (que no configuraremos) y un servidor linux. En una primera fase, el servidor ejecutar NAT para dar salida a los clientes. Posteriormente, instalaremos un servicio proxy-firewall.

Realiza este ejercicio siguiendo los siguientes pasos: a) Configura el servidor y un cliente segn el esquema anterior. Configura IPTables en el servidor para que ejecute NAT y de salida a Internet a los clientes, dando servicio slo a accesos http y DNS. Configura IPTAbles para que ponga accesible en Internet un servidor web de la red interna, mediante NAT. Prubalo. b) Desactiva en el servidor el servicio NAT, tanto de entrada, como de salida hacia Internet. Instala el servicio de proxy Squid en el servidor. Configura un cliente de la red interna para que navegue por la web mediante proxy. Prubalo.

Pgina 1.

EJERCICIOS SOLUCIONES:
Ejercicio 1a) Reglas (1) y (2):

DE

IP TABLES

La regla (1) borra todas las reglas de filtrado de todas las cadenas. La regla (2) borra todas las cadenas vacas. Esto lo que hace es borrar todos los filtros que pudiera haber en el sistema. Reglas (3) a (5): La poltica por defecto de una cadena es la accin que realizar la cadena por defecto, esto es si no hay una regla que se ajuste a un paquete. Las polticas por defecto se establecen con el parmetro P, mediante el comando: iptablesPcadenaaccin Donde cadena es la cadena a la que se aplica la poltica por defecto, y la accin es la que se ejecutar. Las cadenas principales son: 1. INPUT: Cadena que se refiere al trfico de entrada al servidor. 2. OUTPUT: Cadena que se refiere al trfico de salida del servidor. 3. FORWARD: Cadena de redireccin, se refiere al trfico que llega al servidor por una interface y ser enrutado hacia otra. Las acciones principales son: 1. DROP: Descartar (silenciosamente, sin notificacin). 2. ACCEPT: Aceptar. 3. REJECT: Se descarta el paquete y se notifica con un ICMP Port Unreachable. 4. LOG: Anotar en histrico (o fichero log o fichero de bitcora). En la regla (3) se configura DROP (descartar) como poltica por defecto de la cadena INPUT (el trfico de entrada). Es decir, si a un paquete de entrada no se le ajusta ninguna regla de las definidas en la cadena, entonces dicho paquete se descartar. En la regla (4) se configura DROP (descartar) como poltica por defecto de la cadena OUTPUT (el trfico de salida). Es decir, si a un
Pgina 1.

EJERCICIOS

DE

IP TABLES

paquete de salida no se le ajusta ninguna regla de las definidas en la cadena, entonces dicho paquete se descartar. En la regla (5) se configura DROP (descartar) como poltica por defecto de la cadena FORWARD ( el trfico de redireccin). Es decir, si a un paquete que se va a enrutar no se le ajusta ninguna regla de las definidas en la cadena, entonces dicho paquete se descartar. Reglas (6) a (7): Estas reglas permitirn el trfico de entrada y de salida de la interface loopback. Analicemos las reglas: (6)iptablesAINPUTilojACCEPT
-A INPUT: Indica que se va aadir una regla al final de la cadena INPUT, es decir, al trfico de entrada. -i lo: Indica que elpatrn de la regla es aquellos paquetes que lleguen por la interface loopback -j ACCEPT: Indica que la accin a realizar es aceptar el paquete.

(7)iptablesAOUTPUTolojACCEPT
-A OUTPUT: Indica que se va aadir una regla al final de la cadena OUTPUT, es decir, al trfico de salida. -o lo: Indica que elpatrn de la regla es aquellos paquetes que salgan por la interface loopback

-j ACCEPT: Indica que la accin a realizar es aceptar el paquete. Regla (8): Esta regla permitir el trfico de salida relativa a las conexiones ya establecidas. Analicemos las reglas: (8) iptablesAOUTPUTmstatestate ESTABLISHED,RELATEDjACCEPT

-A OUTPUT: Indica que se va aadir una regla al final de la cadena OUTPUT, es decir, al trfico de salida. -m state: Indica que el patrn de la regla se basar en el estado de las conexiones. --state ESTABLISHED, RELATED: Indica que el patrn de la regla es que los paquetes pertenezcan a uno de estos estados: ESTABLISHED: Paquete perteneciente a una conexin ya establecida. Por ejemplo, trfico de respuesta web o SSH. RELATED: Paquete relativo a una conexin establecida, pero no perteneciente a dicha conexin. Por ejemplo, un mensaje ICMP relativo a una conexin iniciada.

Pgina 1.

EJERCICIOS

DE

IP TABLES

-j ACCEPT: Indica que la accin a realizar es aceptar el paquete. Regla (9): Esta regla permite el trfico http de entrada, es decir, el trfico de entrada dirigido al puerto 80 del protocolo TCP. Esto permitir las conexiones web a nuestra mquina desde el exterior. Analicemos las reglas: (9)iptablesAINPUTptcpdport80jACCEPT
-A INPUT: Indica que se va aadir una regla al final de la cadena INPUT, es decir, al trfico de entrada. -p tcp: Indica que el patrn de los paquetes que afectan a esta regla es el trfico del protocolo de transporte TCP. --dport 80: Indica que el patrn de los paquetes que afectan a esta regla es el trfico dirigido al puerto destino n 80. -j ACCEPT: Indica que la accin a realizar es aceptar el paquete.

Regla (10): Esta regla permite el trfico SSH de entrada a la mquina, es decir, el trfico de entrada dirigido al puerto 22 del protocolo TCP. Esto permitir las conexiones remotas va SSH. Analicemos las reglas: (10)iptablesAINPUTptcpdport22jACCEPT
-A INPUT: Indica que se va aadir una regla al final de la cadena INPUT, es decir, al trfico de entrada. -p tcp: Indica que el patrn de los paquetes que afectan a esta regla es el trfico del protocolo de transporte TCP. --dport 80: Indica que el patrn de los paquetes que afectan a esta regla es el trfico dirigido al puerto destino n 22. -j ACCEPT: Indica que la accin a realizar es aceptar el paquete.

Ejercicio 1b) El script hace lo siguiente: 1. Permite las comunicaciones hacia y desde la interface loopback. 2. Permite las conexiones de entrada que sean relativas al protocolo SSH o http. 3. Permite las conexiones de salida que sean respuestas a conexiones ya iniciadas, o relativas a ellas.
Pgina 1.

EJERCICIOS

DE

IP TABLES

4. No permitir absolutamente nada ms que no est indicado en la lista anterior, ni de entrada, ni de salida, ni para enrutar. Est claro que este script est pensado para ejecutarse en un servidor que dar servicio web a Internet y que permitir la conexin remota desde Internet mediante el protocolo seguro SSH.

Ejercicio 2a) No se indica nada en el enunciado de establecer la ms mnima seguridad. Se podra abrir el acceso hacia afuera, y se podra limitar el acceso hacia adentro a slo las respuestas de las conexiones que nosotros hagamos. Esto suele funcionar bien, ya que normalmente ser nuestra mquina quien establezca las conexiones con el exterior (salvo en el modo activo de FTP, que no se suele utilizar). Yo me decanto por hacer esto que he comentado, para lo cual hago el siguiente script: 1. Limpio iptables: iptablesF iptablesX 2. Establezco la poltica por defecto del trfico de entrada a denegarlo todo: iptablesPINPUTDROP 3. Establezco la poltica por defecto del trfico de salida a aceptarlo todo (permitir cualquier tipo de comunicacin con, cualquier protocolo, con el exterior): iptablesPOUTPUTACCEPT 4. Como tengo dos interfaces de red (cableada e inalmbrica), desactivo el enrutamiento entre ellas: iptablesPFORWARDDROP 5. Hago una regla que admita el trfico de entrada que se refiera a conexiones antes iniciadas: iptablesAINPUTmstatestate ESTABLISHED,RELATEDjACCEPT Si no se deseara limitar nada a la entrada, entonces bastara con cambiar la regla del punto 2 por iptablesPINPUTACCEPT y no incluir la regla del punto 5.

Pgina 1.

EJERCICIOS
Ejercicio 2b)

DE

IP TABLES

Para conseguir esto habr que aadir una regla que impida que salgan peticiones ping. Para ello edito el script anterior y le aado al final la siguiente lnea: iptablesAOUTPUTpICMPicmptypeechorequestjDROP A continuacin analizo la orden:
-A OUTPUT: Indica que se va aadir una regla al final de la cadena OUTPUT, es decir, al trfico de salida. -p ICMP: Indica que el patrn de los paquetes que afectan a esta regla es el trfico del protocolo ICMP. --icmp-type echo-request: Indica que el patrn de los paquetes que afectan a esta regla es el trfico que sea un echo-request de icmp (ping). (Si no se recuerdan los nombres, se pueden obtener con la orden: iptablespicmphelp). -j DROP: Indica que la accin a realizar es descartar el paquete.

Ejercicio 2c) Para conseguir esto habr que aadir una regla que impida que salgan mensajes hacia www.anforaformacion.es. En el enunciado no se especifica si lo que se quiere filtrar es exclusivamente el trfico web o todo el trfico... por lo que voy a suponer el caso ms restrictivo y no permitir cualquier tipo de trfico dirigido a esa mquina. Para ello edito el script anterior y le aado al final la siguiente lnea: iptablesAOUTPUTdwww.anforaformacion.esjDROP A continuacin analizo la orden:
-A OUTPUT: Indica que se va aadir una regla al final de la cadena OUTPUT, es decir, al trfico de salida. -d www.uoc.edu: Indica que el patrn se ajusta a todos los paquetes destinados a la mquina www.uoc.edu. -j DROP: Indica que la accin a realizar es descartar el paquete.

Pgina 1.

EJERCICIOS
Ejercicio 3a)

DE

IP TABLES

Usando iptables he montado el servicio NAT y un firewall, sobre la mquina de RedHat. Luego he configurado un cliente y lo he probado. A continuacin muestro los pasos que he seguido: 1. Lo primero que he hecho ha sido configurar las tarjetas de red del servidor.
# eth0:Tarjetaredexterna. IP=192.168.183.130 Mscara=255.255.255.0 Puertadeenlace=192.168.183.2 # DNS1=192.168.183.2 # eth1:Tarjetaredinterna. IP=10.0.0.1 Mscara=255.255.255.0

2. Ha continuacin he programado las iptables en el servidor. Para ello he ejecutado las siguientes rdenes:

# echo1>/proc/sys/net/ipv4/ip_forward //Habilitaelreenvode paquetesIP. # iptablesF //Borra las reglas de filtrado. # iptablestnatF //BorralasreglasdeNAT. # # //A continuacin establecemos por defecto la poltica de DENEGARLOTODO: # iptablesPINPUTDROP # iptablesPOUTPUTDROP # iptablesPFORWARDDROP # # //Ahora activamos el servico NAT para los equipos de la red interna: # iptablestnatAPOSTROUTINGs10.0.0.0/24d0.0.0.0./0j MASQUERADE # # // Como tenemos poltica de denegarlo todo, ahora mismo no se reenviaranadadenada. # //Porlotanto,permitimoselreenvodelserviciowebydns # // (sisenecesitaranmsservicios,comoFTP,correo,etc, habraqueabrirsuspuertos). # iptablesAFORWARDs10.0.0.0/24pTCPdport80jACCEPT # iptablesAFORWARDs10.0.0.0/24pUDPdport53jACCEPT # # // Permito el reenvo de los paquetes relativos a sesiones ya abiertasporwebopordns: # iptables A FORWARD m state state RELATED, ESTABLISHED j ACCEPT #

Pgina 1.

EJERCICIOS

DE

IP TABLES

# //Comotenemosunservidoren10.0.0.100,redirigimoselpuerto 80delservidorNAT # //haciaelpuerto80delservidorweb. # iptablestnatAPREROUTINGieth0pTCPdport80jDNAT to10.0.0.100:80 # # //Yacontinuacinguardolaconfiguracindeiptables: # iptablessave>/etc/sysconfig/iptables

3. A continuacin he configurado un cliente en la red privada.


# LeherealizadolasiguienteconfiguracinIP: IP=10.0.0.2 NetMask=255.255.255.0 PuertadeEnlace=10.0.0.1 DNS1=195.235.113.3 DNS2=195.235.96.90

Y ya est todo listo para funcionar. A continuacin habra que probarlo.

Ejercicio 3b) En primer lugar, he desactivado el servicio NAT y el filtrado de paquetes en el servidor. Luego he configurado Squid en el servidor para hacer de Proxy. Luego, en el mismo cliente anterior, con la misma configuracin, he configurado el acceso por proxy en Konkeror y directo en Firefox. He probado ambos navegadores y el acceso directo ya nbo funciona, mientras que el acceso por proxy s. A continuacin muestro los pasos que he seguido: 1. Lo primero que he hecho ha sido desactivar el filtrado de paquetes y el servicio NAT del servidor. Lo realizado con las siguientes instrucciones:
# echo0>/proc/sys/net/ipv4/ip_forward // Desactiva el enrutamientodepaquetes. # iptablesF //Borralasreglasdeiptables. # iptablestnatF //BorralasreglasdeNAT. # //AhorayanofuncionaNATnitampocohayningnfiltroalas comunicaciones.

2. A continuacin he instalado el Squid en el servidor, y lo he configurado, editando el fichero /etc/squid/squid.conf con los datos que se muestran a continuacin:
# # # # http_port3128 visible_hostnameProxySquid aclred_internasrc10.0.0.0/24 http_accessallowred_interna
Pgina 1.

EJERCICIOS

DE

IP TABLES

# cache_mem32MB # cache_dirufs/var/spool/squid100016256 # cache_log/var/log/squid/cache.log

3. Y por ltimo, en la mquina cliente, he configurado el navegador Konkeror para acceso por proxy y el Firefox para acceso directo. El cliente an tiene configurado el servidor como puerta de enlace, pero ste ya no tiene activado NAT, por lo que el acceso directo no funciona. As, la navegacin con Konkeror funciona y la navegacin con Firefox no.

Comentarios a este ejercicio: Este ejercicio se puede simular con una mquina real y dos virtuales en una red local pequea. La forma de hacerlo puede ser as: Si disponemos de un ordenador conectado a una LAN con un router, entonces virtualizaremos en l dos mquinas: Servidor Linux: Con tarjeta 1 en modo puente, con una IP vlida de la LAN real y con salida a Internet. Con tarjeta 2 en modo red interna, con una IP distinta a la LAN.

Cliente, en Windows o en Linux. Con un servidor Web instalado. Con una tarjeta de red en modo red interna, con una IP en la mnisma red que la tarjeta2 del servidor y con conexin IP con ella.

As, desde el cliente se podr probar el nat y el proxy. Y desde el ordenador real, o desde cualquier otro de la LAN real, se tendr acceso al servidor web instalado en el cliente a travs del NAT inverso del servidor, en la primera parte del ejercicio.

Pgina 1.

You might also like