Actividad 12: Introducción a netfilter/iptables

Prepare, utilizando clones de la máquina virtual proporcionada por el profesor, lo indicado por el siguiente esquema:

Esquema-iptables-gateway-central.png

Observe:

  • Que hay tres redes: la LAN del aula 192.168.<Y>.0/24 y dos redes internas A y B.
  • Que la máquina gateway cuenta con tres interfaces de red. La primera conectada en modo puente con el aula, y las otras en modo red interna.
  • Que los hosts A y B únicamente cuentan con una interfaz de red en modo red interna.

 

  1. Cambie el nombre de host en cada una de las máquinas para que corresponda con el esquema presentado: gateway, host-a y host-b.
  2. En la máquina gateway:
  • La interfaz de red en modo puente utilizará una configuración dinámica.
  • La interfaz de red en la red A estará configurada de forma estática con la IP 172.16.<X>.1/24
  • La interfaz de red en la red B estará configurada de forma estática con la IP 10.<X>.0.1/16
  • Las máquinas host-a y host-b utilizarán una configuración de red estática. Cada una de ellas utilizará la última IP de host disponible en la red correspondiente. Utilizarán como puerta de enlace a gateway y como servidor dns la IP del servidor del aula.
  • Compruebe:
    • Que desde la máquina física puede hacer SSH a gateway.
    • Que desde gateway puede hacer SSH a cualquiera de los dos hosts: host-a y host-b.
    • Que en gateway puede ejecutar apt update.
    • Que en host-a y host-b no es posible resolver nombres dns (host wikipedia.org).
    • Que en host-a y host-b no es posible ejecutar con normalidad apt update.
  • ¿Qué impide que host-a y host-b resuelvan nombres dns? ¿Pueden estos hosts hacer ping al servidor dns del aula? ¿Por qué?
  • ¿Pueden los hosts host-a y host-b hacerse pings entre ellos?
  • Utilice la herramienta tcpdump en gateway para inspeccionar el tráfico en gateway mientras:
    • host-a hace pings a host-b.
    • host-a hace pings al servidor dns del aula.
  • Active de manera persistente ip_forward en la máquina gateway. ¿Qué sucede ahora?
    • ¿Pueden host-a y host-b hacerse pings entre ellos?
    • ¿Pueden host-a y host-b hacer pings al servidor dns del aula?
    • ¿Funciona la resolución de nombres en host-a y host-b?
    • Argumente lo observado.

       

      Primeros comandos con iptables

      En la máquina gateway:

      1. Observe la diferencia entre estos dos comandos, ¿a qué tabla se refiere cada uno de ellos? ¿qué cadenas muestran? ¿qué políticas por defecto tienen estas cadenas? ¿contienen reglas?.
      • iptables -L
      • iptables -t nat -L
    1. Ejecute el comando: iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
    2. Vuelva a inspeccionar las cadenas de la tabla NAT con el comando: iptables -t nat -L -v -n. ¿Qué ha cambiado? ¿Pueden ahora host-a y host-b resolver nombres DNS?
    3. Vamos a inspeccionar el tráfico que recibe gateway y el que envía. Para ello debe abrir dos terminales y ejecutar tcpdump en cada uno de ellos de manera que en uno se muestre el tráfico en la interfaz de la red A y en el otro el tráfico en la interfaz que está en la LAN del aula. Mientras se ejecutan los dos tcpdump lance apt update en host-a. Observe lo que sucede y conteste las siguientes preguntas:
      • ¿Qué dirección de origen tienen los paquetes que llegan a la interfaz que está en la red A?
      • ¿Qué dirección de origen tienen los paquetes que salen por la interfaz que está en la LAN?
      • ¿Qué dirección de destino tienen los paquetes que llegan a la interfaz que está en la LAN?
      • ¿Qué dirección de destino tienen los paquetes que salen por la interfaz que está en la red B?

       

      Filtrando paquetes:

       

      1. En la máquina gateway escriba un script (/home/usuario/iptables) que tenga el siguiente contenido:
      • La orden necesaria para activar el reenvío de paquetes.
      • La orden necesaria para borrar las reglas de la tabla NAT.
      • La orden necesaria para borrar las reglas de la tabla FILTER.
      • La orden que activa el MASQUERADE para el tráfico que sale por enp0s3: iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE.
    4. Instale el paquete apache2 en las máquinas host-a y host-b.
    5. Compruebe (utilizando el comando telnet <ip> 80) que desde host-a puede establecer una conexión con el servidor Apache de host-b y viceversa.
    6. Modifique el script iptables de gateway de manera que se prohíba el reenvío de paquetes TCP al puerto 80 con destino a host-a y a host-b. Ejecute el script para actualizar las reglas.
    7. Compruebe, del mismo modo que lo hizo en el punto 3, que ahora no es posible establecer una conexión desde host-a con el servidor web de host-b y viceversa.
    8. Compruebe si desde gateway puede utilizar telnet para comunicarse con ambos servidores web. ¿Por qué?
    9. Modifique el script de gateway para que:
      • Se descarten los paquetes TCP que provengan del puerto 80 de host-a y tengan por destino gateway.
      • Se descarten los paquetes TCP que originados en gateway tengan por destino el puerto 80 de host-b.
    10. Compruebe si desde gateway puede utilizar telnet para comunicarse con ambos servidores web. ¿Por qué?
    11. A partir de la máquina original clone host-c. Una vez clonado asegúrese de que:
      • Tiene la interfaz de red en modo 'red interna' en la misma red que host-b.
      • Tiene por hostname host-c.
      • Arranca con una IP de host configurada de manera estática.
      • Utiliza como puerta de enlace por defecto a gateway.
      • Utiliza como servidor DNS al servidor DNS del aula.
    12. Compruebe que desde host-a puede hacer ssh a host-b y viceversa.
    13. ¿Qué regla se debe añadir a host-b, para que únicamente puedan establecer conexiones SSH hosts que se encuentran en su propia red? Compruebe que el acceso SSH a host-b desde las otras máquinas indicando para cada una si funciona o no y la razón.
    14. ¿Que regla se debe añadir a host-c para que únicamente host-a pueda establecer conexiones SSH?