10
 E  JERCICIOS DE IP TABLES 1. A con tin uación se muestra un scrip t con comandos de confi gur ación con iptables (los números que aparecen izquierda no forman parte del script, únicamente los utilizaremos para referirnos a cada línea). (1) iptables –F (2) iptables –X (3) iptables –P INPUT DROP (4) iptables –P OUTPUT DROP (5) iptables –P FORWARD DROP (6) iptables –A INPUT –i lo –j ACCEPT (7) iptables –A OUTPUT –o lo –j ACCEPT (8) iptables –A OUTPUT –m state --state ESTABLISHED,RELATED –j ACCEPT (9) iptables –A INPUT –p tcp –-dport 80 –j ACCEPT (10) iptables –A INPUT –p tcp –-dport 22 –j ACCEPT a) Indica el si gn ificado de cada línea.  b) ¿P ara qué ti po de máq uina est á dis eña do es te sc ript (s ervidor, r outer, estación de trabajo)? 2. Haz los siguientes scripts en linux. Pruébalos uno a uno.  a ) Escribe un scrip t de conf iguraci ón de Iptabl es que una ve z eje cutado en tu qu in a, permi ta accede r a Internet si n li mi taci ón al gu na. Compru eba el fun cionamiento correcto, ejecut ánd olo y acc edi end o a algún sitio web. b) Modifica el script para que el cort af uegos no permita que envíe s peticiones ‘ping’ a otras quinas. Comprueba su funcionamiento ejecutándolo y probando mediante el envío de peticiones ‘ping’ a algún servidor que conozcas. c) Modifícalo para que el cortafuegos no permita acceder a www.anforaformacion.es . Comprueba su funcionamiento ejecutándolo e intentado acceder. Página 1.

ejercicios_iptables

Embed Size (px)

Citation preview

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 1/10

 

E JERCICIOS DE IP TABLES

1. A continuación se muestra un script con comandos de configuración coniptables (los números que aparecen izquierda no forman parte del script,únicamente los utilizaremos para referirnos a cada línea).

(1) iptables –F(2) iptables –X(3) iptables –P INPUT DROP(4) iptables –P OUTPUT DROP(5) iptables –P FORWARD DROP(6) iptables –A INPUT –i lo –j ACCEPT(7) iptables –A OUTPUT –o lo –j ACCEPT(8) iptables –A OUTPUT –m state --state

ESTABLISHED,RELATED –j ACCEPT(9) iptables –A INPUT –p tcp –-dport 80 –j ACCEPT

(10) iptables –A INPUT –p tcp –-dport 22 –j ACCEPT

a) Indica el significado de cada línea.

b) ¿Para qué tipo de máquina está diseñado este script (servidor, router,estación de trabajo)?

2. Haz los siguientes scripts en linux. Pruébalos uno a uno.

a) Escribe un script de configuración de Iptables que una vez ejecutadoen tu máquina, permita acceder a Internet sin limitación alguna.Comprueba el funcionamiento correcto, ejecutándolo y accediendo aalgún sitio web.

b) Modifica el script para que el cortafuegos no permita que envíespeticiones ‘ping’ a otras máquinas. Comprueba su funcionamientoejecutándolo y probando mediante el envío de peticiones ‘ping’ a algúnservidor que conozcas.

c) Modifícalo para que el cortafuegos no permita acceder awww.anforaformacion.es. Comprueba su funcionamiento ejecutándolo eintentado acceder.

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 2/10

 

E JERCICIOS DE IP TABLES

3. En este ejercicio implantaremos, paso a paso, una arquitectura segura dered que incluirá un router (que no configuraremos) y un servidor linux. Enuna 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 según el esquema anterior.

Configura IPTables en el servidor para que ejecute NAT y de salida aInternet a los clientes, dando servicio sólo a accesos http y DNS.

Configura IPTAbles para que ponga accesible en Internet un servidor webde la red interna, mediante NAT.

Pruébalo.

b) Desactiva en el servidor el servicio NAT, tanto de entrada, como de salidahacia Internet.

Instala el servicio de proxy Squid en el servidor.Configura un cliente de la red interna para que navegue por la webmediante proxy.

Pruébalo.

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 3/10

 

E JERCICIOS DE IP TABLES

SOLUCIONES:

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

➔ La regla (1) borra todas las reglas de filtrado de todas las cadenas.

➔ La regla (2) borra todas las cadenas vacías.

Esto lo que hace es borrar todos los filtros que pudiera haber en elsistema.

Reglas (3) a (5):

La política por defecto de una cadena es la acción que realizará la cadenapor defecto, esto es si no hay una regla que se ajuste a un paquete.

Las políticas por defecto se establecen con el parámetro P, mediante elcomando:

iptables -P cadena acción

Donde cadena es la cadena a la que se aplica la política por defecto, y laacción es la que se ejecutará.

Las cadenas principales son:

1. INPUT: Cadena que se refiere al tráfico de entrada al servidor.

2. OUTPUT: Cadena que se refiere al tráfico de salida del servidor.

3. FORWARD: Cadena de redirección, se refiere al tráfico que llega alservidor por una interface y será enrutado hacia otra.

Las acciones principales son:

1. DROP: Descartar (silenciosamente, sin notificación).

2. ACCEPT: Aceptar.

3. REJECT: Se descarta el paquete y se notifica con un ICMP Port Unreachable.

4. LOG: Anotar en histórico (o “fichero log” o “fichero de bitácora”).

➔ En la regla (3) se configura DROP (descartar) como política pordefecto de la cadena INPUT (el tráfico de entrada). Es decir, si a unpaquete de entrada no se le ajusta ninguna regla de las definidas enla cadena, entonces dicho paquete se descartará.

➔ En la regla (4) se configura DROP (descartar) como política por

defecto de la cadena OUTPUT (el tráfico de salida). Es decir, si a un

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 4/10

 

E JERCICIOS DE IP TABLES

paquete de salida no se le ajusta ninguna regla de las definidas en lacadena, entonces dicho paquete se descartará.

➔ En la regla (5) se configura DROP (descartar) como política por

defecto de la cadena FORWARD ( el tráfico de redirección). Es decir, sia un paquete que se va a “enrutar” no se le ajusta ninguna regla delas definidas en la cadena, entonces dicho paquete se descartará.

Reglas (6) a (7):

Estas reglas permitirán el tráfico de entrada y de salida de la interfaceloopback.

Analicemos las reglas:

(6) iptables –A INPUT –i lo –j ACCEPT

➔ -A INPUT: Indica que se va añadir una regla al final de la cadena INPUT, es decir, altráfico de entrada.

➔ -i lo: Indica que elpatrón de la regla es aquellos paquetes que lleguen por lainterface loopback

➔ -j ACCEPT: Indica que la acción a realizar es aceptar el paquete.

(7) iptables –A OUTPUT –o lo –j ACCEPT 

➔ -A OUTPUT: Indica que se va añadir una regla al final de la cadena OUTPUT, esdecir, al tráfico de salida.

➔ -o lo: Indica que elpatrón de la regla es aquellos paquetes que salgan por lainterface loopback

➔ -j ACCEPT: Indica que la acción a realizar es aceptar el paquete.

Regla (8):

Esta regla permitirá el tráfico de salida relativa a las conexiones yaestablecidas.

Analicemos las reglas:

(8) iptables –A OUTPUT –m state --stateESTABLISHED,RELATED –j ACCEPT

➔ -A OUTPUT: Indica que se va añadir una regla al final de la cadena OUTPUT, esdecir, al tráfico de salida.

➔ -m state: Indica que el patrón de la regla se basará en el estado de las conexiones.

➔ --state ESTABLISHED, RELATED: Indica que el patrón de la regla es que lospaquetes pertenezcan a uno de estos estados:

• ESTABLISHED: Paquete perteneciente a una conexión ya establecida. Porejemplo, tráfico de respuesta web o SSH.

• RELATED: Paquete relativo a una conexión establecida, pero no perteneciente a

dicha conexión. Por ejemplo, un mensaje ICMP relativo a una conexión iniciada.

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 5/10

 

E JERCICIOS DE IP TABLES

➔ -j ACCEPT: Indica que la acción a realizar es aceptar el paquete.

Regla (9):

Esta regla permite el tráfico http de entrada, es decir, el tráfico deentrada dirigido al puerto 80 del protocolo TCP. Esto permitirá lasconexiones web a nuestra máquina desde el exterior.

Analicemos las reglas:

(9)iptables –A INPUT –p tcp –-dport 80 –j ACCEPT

➔ -A INPUT: Indica que se va añadir una regla al final de la cadena INPUT, es decir, altráfico de entrada.

➔ -p tcp: Indica que el patrón de los paquetes que afectan a esta regla es el tráfico

del protocolo de transporte TCP.

➔ --dport 80: Indica que el patrón de los paquetes que afectan a esta regla es eltráfico dirigido al puerto destino nº 80.

➔ -j ACCEPT: Indica que la acción a realizar es aceptar el paquete.

Regla (10): 

Esta regla permite el tráfico SSH de entrada a la máquina, es decir, eltráfico de entrada dirigido al puerto 22 del protocolo TCP. Esto permitirálas conexiones remotas vía SSH.

Analicemos las reglas:

(10)iptables –A INPUT –p tcp –-dport 22 –j ACCEPT

➔ -A INPUT: Indica que se va añadir una regla al final de la cadena INPUT, es decir, altráfico de entrada.

➔ -p tcp: Indica que el patrón de los paquetes que afectan a esta regla es el tráficodel protocolo de transporte TCP.

➔ --dport 80: Indica que el patrón de los paquetes que afectan a esta regla es eltráfico dirigido al puerto destino nº 22.

➔ -j ACCEPT: Indica que la acción 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 protocoloSSH o http.

3. Permite las conexiones de salida que sean respuestas a conexiones

ya iniciadas, o relativas a ellas.

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 6/10

 

E JERCICIOS DE IP TABLES

4. No permitirá absolutamente nada más que no esté indicado en lalista 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 conexión remotadesde Internet mediante el protocolo seguro SSH.

Ejercicio 2a)

No se indica nada en el enunciado de establecer la más mínimaseguridad. Se podría abrir el acceso hacia afuera, y se podría limitar elacceso hacia adentro a sólo las respuestas de las conexiones quenosotros hagamos. Esto suele funcionar bien, ya que normalmente seránuestra máquina 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 elsiguiente script:

1. “Limpio” iptables:

iptables –Fiptables –X

2. Establezco la política por defecto del tráfico de entrada a denegarlotodo:

iptables –P INPUT DROP

3. Establezco la política por defecto del tráfico de salida a aceptarlotodo (permitirá cualquier tipo de comunicación con, cualquierprotocolo, con el exterior):

iptables –P OUTPUT ACCEPT

4. Como tengo dos interfaces de red (cableada e inalámbrica),desactivo el enrutamiento entre ellas:

iptables –P FORWARD DROP

5. Hago una regla que admita el tráfico de entrada que se refiera aconexiones antes iniciadas:

iptables –A INPUT –m state --stateESTABLISHED,RELATED –j ACCEPT

Si no se deseara limitar nada a la entrada, entonces bastaría con cambiar la regla del punto 2 por iptables -P INPUT ACCEPT y no incluir la regladel punto 5.

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 7/10

 

E JERCICIOS DE IP TABLES

Ejercicio 2b)

Para conseguir esto habrá que añadir una regla que impida que salganpeticiones ping. Para ello edito el script anterior y le añado al final la

siguiente línea:

iptables –A OUTPUT –p ICMP --icmp-type echo-request –j DROP

A continuación analizo la orden:

➔ -A OUTPUT: Indica que se va añadir una regla al final de la cadena OUTPUT, esdecir, al tráfico de salida.

➔ -p ICMP: Indica que el patrón de los paquetes que afectan a esta regla es el tráficodel protocolo ICMP.

➔ --icmp-type echo-request: Indica que el patrón de los paquetes que afectan aesta regla es el tráfico que sea un echo-request de icmp (ping). (Si no se recuerdan

los nombres, se pueden obtener con la orden: iptables -p icmp --help).

➔ -j DROP: Indica que la acción a realizar es descartar el paquete.

Ejercicio 2c)

Para conseguir esto habrá que añadir una regla que impida que salganmensajes hacia “www.anforaformacion.es”. En el enunciado no seespecifica si lo que se quiere filtrar es exclusivamente el tráfico web otodo el tráfico... por lo que voy a suponer el caso más restrictivo y no

permitiré cualquier tipo de tráfico dirigido a esa máquina.Para ello edito el script anterior y le añado al final la siguiente línea:

iptables –A OUTPUT –d www.anforaformacion.es –j DROP

A continuación analizo la orden:

➔ -A OUTPUT: Indica que se va añadir una regla al final de la cadena OUTPUT, esdecir, al tráfico de salida.

➔ -d www.uoc.edu: Indica que el patrón se ajusta a todos los paquetes destinados ala máquina www.uoc.edu.

➔-j DROP: Indica que la acción a realizar es descartar el paquete.

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 8/10

 

E JERCICIOS DE IP TABLES

Ejercicio 3a)

Usando iptables he montado el servicio NAT y un firewall, sobre lamáquina de RedHat. Luego he configurado un cliente y lo he probado. A

continuación muestro los pasos que he seguido:

1. Lo primero que he hecho ha sido configurar las tarjetas de red delservidor.# eth0: Tarjeta red externa.

■ IP = 192.168.183.130

■ Máscara = 255.255.255.0

■ Puerta de enlace = 192.168.183.2# DNS 1 = 192.168.183.2# eth1: Tarjeta red interna.

■ IP = 10.0.0.1

■ Máscara = 255.255.255.0

2. Ha continuación he programado las iptables en el servidor. Para ello heejecutado las siguientes órdenes:# echo 1 > /proc/sys/net/ipv4/ip_forward //Habilita el reenvío de

paquetes IP.# iptables -F //Borra las reglas de

filtrado.# iptables -t nat -F //Borra las reglas de NAT.## //A continuación establecemos por defecto la política de

DENEGARLO TODO:# iptables -P INPUT DROP# iptables -P OUTPUT DROP# iptables -P FORWARD DROP## //Ahora activamos el servico NAT para los equipos de la red

interna:# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 0.0.0.0./0 -j

MASQUERADE## // Como tenemos política de denegarlo todo, ahora mismo no se

reenviaría nada de nada.# // Por lo tanto, permitimos el reenvío del servicio web y dns# // (si se necesitaran m ás servicios, como FTP, correo, etc,

habría que abrir sus puertos).# iptables -A FORWARD -s 10.0.0.0/24 -p TCP --dport 80 -j ACCEPT# iptables -A FORWARD -s 10.0.0.0/24 -p UDP --dport 53 -j ACCEPT## // Permito el reenvío de los paquetes relativos a sesiones ya

abiertas por web o por dns:# iptables -A FORWARD -m state –state RELATED, ESTABLISHED -j

ACCEPT

#

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 9/10

 

E JERCICIOS DE IP TABLES

# // Como tenemos un servidor en 10.0.0.100, redirigimos el puerto80 del servidor NAT

# // hacia el puerto 80 del servidor web.# iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 80 -j DNAT

--to 10.0.0.100:80## // Y a continuación guardo la configuración de iptables:# iptables-save > /etc/sysconfig/iptables

3. A continuación he configurado un cliente en la red privada.# Le he realizado la siguiente configuración IP:

IP = 10.0.0.2

NetMask = 255.255.255.0

Puerta de Enlace = 10.0.0.1

DNS 1 = 195.235.113.3

DNS 2 = 195.235.96.90

 Y ya está todo listo para funcionar. A continuación habría que probarlo.

Ejercicio 3b)

En primer lugar, he desactivado el servicio NAT y el filtrado de paquetesen el servidor. Luego he configurado Squid en el servidor para hacer deProxy. Luego, en el mismo cliente anterior, con la misma configuración,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 continuación muestro los pasosque he seguido:

1. Lo primero que he hecho ha sido desactivar el filtrado de paquetes y elservicio NAT del servidor. Lo realizado con las siguientes instrucciones:# echo 0 > /proc/sys/net/ipv4/ip_forward // Desactiva el

enrutamiento de paquetes.

# iptables -F // Borra las reglas de iptables.# iptables -t nat -F // Borra las reglas de NAT.# // Ahora ya no funciona NAT ni tampoco hay ningún filtro a las

comunicaciones.

2. A continuación he instalado el Squid en el servidor, y lo he configurado,editando el fichero /etc/squid/squid.conf con los datos que se muestran acontinuación:# http_port 3128# visible_hostname ProxySquid# acl red_interna src 10.0.0.0/24

# http_access allow red_interna

Página 1.

5/17/2018 ejercicios_iptables - slidepdf.com

http://slidepdf.com/reader/full/ejerciciosiptables 10/10

 

E JERCICIOS DE IP TABLES

# cache_mem 32 MB# cache_dir ufs /var/spool/squid 1000 16 256

# cache_log /var/log/squid/cache.log

3. Y por último, en la máquina cliente, he configurado el navegadorKonkeror para acceso por proxy y el Firefox para acceso directo. El clienteaún tiene configurado el servidor como puerta de enlace, pero éste ya notiene activado NAT, por lo que el acceso directo no funciona. Así, lanavegación con Konkeror funciona y la navegación con Firefox no.

Comentarios a este ejercicio:

Este ejercicio se puede simular con una máquina real y dos virtuales en una

red local pequeña. La forma de hacerlo puede ser así:

Si disponemos de un ordenador conectado a una LAN con un router,entonces virtualizaremos en él dos máquinas:

• Servidor Linux:

• Con tarjeta 1 en modo puente, con una IP válida de la LANreal y con salida a Internet.

• Con tarjeta 2 en modo red interna, con una IP distinta a laLAN.

• Cliente, en Windows o en Linux.

• Con un servidor Web instalado.

• Con una tarjeta de red en modo red interna, con una IP en lamnisma red que la tarjeta2 del servidor y con conexión IP conella.

Así, desde el cliente se podrá probar el nat y el proxy. Y desde elordenador real, o desde cualquier otro de la LAN real, se tendrá acceso alservidor web instalado en el cliente a través del NAT inverso del servidor,en la primera parte del ejercicio.

Página 1.