Ejercicios Lección 3: Asegurando el perímetro Francisco Javier Cervigon Ruckauer

Ejercicios Lección 3: Asegurando el perímetro

Ejercicio: Preparar el entorno para el resto de actividades

En esta lección se aprenderá a configurar un encaminador con filtrado de paquetes. Para ello se realizará  una configuración desde cero de fw, que interconecta las redes externa (ext), interna (int) y perimétrica (dmz). Para ello, durante la práctica se utilizarán, además de fw, las máquinas extadmzainta e intb. Se usa una máquina por red para probar la conectividad y el acceso a los servicios y, en el caso de la red interna, se usan dos, ya que inta será la máquina del administrador del servidor web, mientras que intb es una máquina de la red corporativa sin tareas relacionadas con la administración de los sistemas.
Puesto que fw viene en NETinVM ya configurado por defecto, será necesario restaurar una copia de seguridad en la que fw arranque sin realizar filtrado de paquetes. El estado está almacenado en el fichero "uml_machines_2015-07-30_10-31_fw-configuration.tgz".  (La descripción de cómo hacer copias de seguridad y cómo restaurarlas está incluida en la demostración "Copias de seguridad de las UMLs").
Aviso
Al restaurar una copia de seguridad se elimina el estado actual de las UML. Por lo tanto, se recomienda realizar una copia de seguridad antes.
Acciones a realizar:
  1. Comprobar que las máquinas UML están paradas.
  2. Realizar, si no se ha hecho antes, una copia del estado actual y etiquetarlo adecuadamente renombrando el fichero resultante.
  3. Restaurar la copia de seguridad indicada.
  4. Editar el guión "uml_run_my_uml.sh" para que solamente se ejecuten las máquinas indicadas.
  5. Lanzar las máquinas UML usando el icono "Run my UMLs".
  6. Comprobar que efectivamente se han puesto en marcha las máquinas esperadas.

Ejercicio: Configurar el acceso a fw

Aunque fw viene configurado de fábrica, en este ejercicio se procederá a realizar una configuración desde cero, como ejemplo práctico de cómo configurar un encaminador para filtrar paquetes. A diferencia de los clientes y servidores, en el caso de fw la mayor parte de la configuración se aplicará a la cadena FORWARD, ya que es la máquina que interconecta las redes externa (ext), interna (int) y perimétrica (dmz).
El primer paso, sin embargo, es configurar fw como un nodo que no necesita ofrecer ningún servicio. Por lo tanto, una buena configuración de partida sería la del nodo servidor de la unidad "Ejercicio: Configurar el filtrado de paquetes en el servidor", pero sin ofrecer servicio SSH. Esta configuración obliga a utilizar la consola para administrar fw (algo que no es incómodo en NETinVM, pero que podría serlo en un caso real), pero mantiene la configuración de fw más sencilla.
Aviso: esta copia de fw tiene una lista anticuada de repositorios, por lo que es necesario ejecutar antes la orden "sh /mnt/tmp/update_apt-get.sh" como "root" en dmzc. (En caso de haber borrado este fichero, se puede descargar de nuevo: update_apt-get.sh. Si se descarga en "base", es necesario guardarlo en la carpeta "/home/user1/uml/mntdirs/tmp/").
Acciones a realizar:
  1. Configurar fw con la configuración planteada.
  2. Convertir la configuración en permanente usando el paquete iptables-persistent.
  3. Usando nmap en extadmza e inta, comprobar que fw no ofrece ningún acceso desde ninguna de las tres redes.
  4. Comprobar que sí responde a ICMP ECHO REQUEST desde las tres redes.

Ejercicio: Activar el reenvío IP

El siguiente paso será habilitar el encamiento IP de forma permanente (que siga habilitada aunque se rearranque el sistema). Para ello, es necesario descomentar la línea con "net.ipv4.ip_forward=1" en el fichero "/etc/sysctl.conf".
Si se desea activar temporalmente el reenvío (o si se desea activarlo sin reiniciar el sistema, después de haber editado "/etc/systctl.conf") basta con ejecutar "echo 1 >/proc/sys/net/ipv4/ip_forward" o "sysctl net.ipv4.ip_forward=1". La configuración actual se puede obtener de forma similar, mediante las órdenes "cat /proc/sys/net/ipv4/ip_forward" o "sysctl net.ipv4.ip_forward". En ambos casos un valor 1 indica que está activo y un valor 0 indica que no. 
Acciones a realizar:
  1. Editar el fichero "/etc/sysctl.conf" tal y como se ha indicado.
  2. Rearrancar fw.
  3. Comprobar que el reenvío IP está activo.

Ejercicio: Permitir el acceso desde la red interna a la red externa

A continuación será necesario configurar la cadena FORWARD para que permita el tráfico de las redes corporativas (int y dmz) entre sí y con el resto del mundo (ext, Internet). En este caso se desea ocultar la estructura interna de la red corporativa, por lo que también será necesario configurar fw para que traduzca las direcciones de origen usando SNAT.
Sin embargo, el primer paso será configurar el acceso desde la red interna a la red externa y al resto del mundo. Suponiendo, para simplificar, que no se desea restringir demasiado este acceso, se debe permitir el siguiente tráfico a través de la cadena FORWARD:
  • Todo el tráfico de conexiones establecidas o relacionadas para los protocolos TCP, UDP e ICMP.
  • Todo el tráfico que entre en fw a través de la interfaz eth2 (la interna), con protocolo TCP, UDP o ICMP, con direcciones IP de origen en el rango 10.5.2.0/24, y que vaya a salir a través de la interfaz eth0 (la de la red externa).

Para comprobar el funcionamiento y aprender lo máximo posible, se recomienda tener en marcha durante todo el proceso el analizador de tráfico wireshark en base, capturando el tráfico de las interfaces tap0tap1 y tap2.
Acciones a realizar:
  1. (Recomendado). Poner en marcha wireshark en base capturando el tráfico de tap0tap1 y tap2.
  2. (Recomendado). Probar a lanzar un ICMP ECHO REQUEST desde inta con destino a exta y comprobar que el paquete llega a fw y no lo atraviesa.
  3. Añadir las reglas de filtrado apropiadas según la configuración anterior. (No se debe alterar el filtrado de las cadenas INPUT y OUTPUT).
  4. Comprobar la conectividad de inta con exta usando ICMP ECHO REQUEST.
  5. (Recomendado). Usando wireshark, identificar los paquetes intercambiados.
  6. Comprobar la conectividad de inta con exta usando SSH.
  7. Guardar las reglas en "/etc/iptables/rules".

Ejercicio: Configurar SNAT

A continuación, se añadirá SNAT, que es conveniente para ocultar la estructura interna de las redes corporativas; pero, además, en este caso, también es necesario para que los paquetes que salgan de NETinVM a través de base vuelvan a través de fw. La configuración de SNAT debe cumplir los siguientes requisitos:
  • Todos los paquetes que abandonen fw por la interfaz eth0 (la que está conectada a la red ext) y que provengan de la red interna (10.5.2.0/24) deben cambiar su IP de origen para que sea la de fw en esa interfaz (10.5.0.254).
  • Puesto que la IP 10.5.0.254 es fija, es conveniente usar SNAT y no MASQUERADE. El motivo es que así es más eficiente, ya que MASQUERADE debe consultar la IP de la interfaz cada vez que procesa un paquete.

Acciones a realizar:
  1. Añadir las reglas de filtrado apropiadas según la configuración anterior. (Nótese que en este caso se tiene que trabajar con la cadena POSTROUTING de la tabla "nat").
  2. Comprobar la conectividad de inta con exta usando ICMP ECHO REQUEST.
  3. (Recomendado). Usando wireshark, identificar los paquetes intercambiados, comprobando que la IP de origen del paquete que llega a exta es la de la interfaz externa de fw.
  4. Comprobar la conectividad de inta con exta usando SSH.
  5. Comprobar la conectividad de inta con el exterior (si el ordenador anfitrión tiene conectividad). (Sugerencia: probar con un "ping -c 1").
  6. Guardar las reglas en "/etc/iptables/rules".

Ejercicio: Permitir el acceso a la red perimétrica

Finalmente, será necesario agregar reglas para permitir el acceso desde y hacia la red perimétrica. En particular, es necesario tener en cuenta las siguientes consideraciones:
  • Los nodos de esta red actúan como nodos bastión y debe limitarse el acceso a ellos tanto desde Internet como desde la red interna. Será necesario permitir el acceso a los servicios que ofrecen y, en su caso, permitir el acceso desde las máquinas de la red interna que tengan tareas administrativas.
  • Estos nodos están necesariamente expuestos a ataques desde Internet (pues tienen que ofrecer servicios), por lo que es necesario proteger a los nodos de la red interna de cualquier tipo de acceso no deseado desde los nodos bastión. De esta forma, en caso de que un nodo bastión sea comprometido, se podrá detectar y tratar el incidente antes de que afecte a la red corporativa.

Por este motivo se modificará la configuración de fw para que permita los siguientes tipos de acceso:
  • Acceso TCP desde cualquier máquina (interna o externa) a la máquina dmza (IP 10.5.1.10, alias www.example.net), exclusivamente al servicio HTTP (puerto 80).
  • Acceso SSH desde inta.example.net (10.5.2.10) a dmza

Acciones a realizar:
  1. Añadir las reglas necesarias para completar la configuración de fw.
  2. Comprobar que es posible acceder al servicio HTTP tanto desde la red interna como desde la externa.
  3. Comprobar, con nmap, que no es posible acceder a ningún puerto más (en la red interna, probarlo también desde intb, pues desde inta está permitido el acceso SSH).
  4. Comprobar que es posible conectarse por SSH desde inta.
  5. Comprobar que desde dmza no es posible acceder a ningún puerto ni de inta ni de intb.
  6. Guardar las reglas en "/etc/iptables/rules".
Francisco Javier Cervigon Ruckauer

No hay comentarios:

Publicar un comentario