Ejercicios de Seguridad en Redes. Firewalls y túneles cifrados

download Ejercicios de Seguridad en Redes. Firewalls y túneles cifrados

of 19

Transcript of Ejercicios de Seguridad en Redes. Firewalls y túneles cifrados

  • Ejercicios de Seguridad en Redes. Firewalls y tnelescifrados

    SSI 2011/12

    ndice GeneralEntorno de prcticas

    Software de virtualizacin VIRTUALBOXImgenes a utilizarEstablecer el entorno virtualizado

    Ejercicio 1: Configuracin de una DMZ (DeMilitarized Zone) usando el firewall NETFILTER/IPTABLESDescripcinTareas a realizar

    Ejercicio 2: Uso de enlaces cifrados OpenVPN y configuracin del firewall ShorewallParte 1: Creacin de un enlace OpenVPNParte 2: Configuracin del firewall con Shorewall (Shoreline Firewall)Parte 3: Integracin del enlace OpenVPN con ShorewallAnexo 2:

    Documentacin y entrega

    Entorno de prcticasSoftware de virtualizacin VIRTUALBOXEn estas prcticas se emplear el software de virtualizacin VIRTUALBOX para simular pequeas redes formadaspor equipos GNU/Linux.

    Pgina principal: http://virtualbox.orgMs informacin: http://es.wikipedia.org/wiki/Virtualbox

    Imgenes a utilizarImgenes de partida (comunes a todas las MVs) [son las mismas de la prctica anterior]

    Imagen comprimida: base.vdi.gz [740 MB comprimida], base.vdi.zip [740 MB comprimida]

    Imagen del rea de intercambio (SWAP): swap.vdi.gz [156 KB comprimida, swap.vdi.zip [156 KBcomprimida]

    Usuarios configurados:

    login passwordroot purple

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    1 de 19 18/06/2013 18:11

  • usuario1 usuario1

    usuario2 usuario2

    Establecer el entorno virtualizadoCreacin de las redes donde se realizarn los ejercicios:

    Red interna (10.10.10.0 ... 10.10.10.255): mquina dentro (eth0) + interfaz eth0 de firewall3

    Red DMZ (10.20.20.0 ... 10.20.20.255): mquina dmz (eth0) + interfaz eth1 de firewall3

    Red externa (193.147.87.0 ... 193.147.87.255): mquina fuera (eth0) + interfaz eth2 de firewall3

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    2 de 19 18/06/2013 18:11

  • Se partir de las imgenes base VIRTUALBOX utilizadas en el ejercicio anteriorSi no se hizo para la prctica anterior, descomprimirlas y registrarlas

    1.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    3 de 19 18/06/2013 18:11

  • gunzip base.vdi.gzgunzip swap.vdi.gz

    Configurar y registrar las mquinas virtuales en VIRTUALBOX (slo la primera vez)

    Script de configuracin y arranque:

    ejercicio-iptables.shejercicio-iptables.bat (pendiente)

    Nota: ejecutar desde el directorio donde se hayan descomprimido las imgenes

    $ bash ejercicio-iptables.sh

    2.

    Arrancar las instancias VIRTUALBOX (desde el interfaz grfico o desde la lnea de comandos)VBoxManage startvm FUERAVBoxManage startvm DENTROVBoxManage startvm DMZVBoxManage startvm FIREWALL3

    Importante: Despus de finalizar cada ejercicio terminar la ejecucin de cada una de las mquinasvirtuales desde lnea de comandos con halt o desde el interfaz grfico LXDE.

    3.

    Comprobar las redes establecidas.Acceder a firewall3 como ''root'' (password ''purple'')Comprobar la asignacin de direcciones IP con ifconfig -a

    firewall3:~# ifconfig -a

    Comprobar las redes haciendo ping a las otras mquinas

    firewall3:~# ping 193.147.87.33firewall3:~# ping 10.10.10.11firewall3:~# ping 10.20.20.22

    En caso de error, asegurar que la asignacin de direciones IP es la correcta.

    Nota: En caso de confusin, para identificar el equipo concreto se puede usar ifconfig -a para comprobar las direccin MACasociadas a cada interfaz de red.

    DENTRO DMZ FUERA FIREWALL3Red interna 08:00:27:11:11:11 . . . . . . 08:00:27:44:44:44Red externa . . . 08:00:27:22:22:22 . . . 08:00:27:55:55:55Red DMZ . . . . . . 08:00:27:33:33:33 08:00:27:66:66:66

    en dentro

    con MAC 08:00:27:11:11:11(eth0)# ifconfig eth0 10.10.10.11

    # hostname dentro

    # route add default gw10.10.10.1

    en dmz

    con MAC 08:00:27:22:22:22(eth0)# ifconfig eth0 10.20.20.22

    # hostname dmz

    # route add default gw10.20.20.1

    en fuera

    con MAC 08:00:27:33:33:33 (eth0)# ifconfig eth0 193.147.87.33

    # hostname fuera

    # route add default gw193.147.87.47

    en firewall

    con MAC 08:00:27:44:44:44 (eth0)con MAC 08:00:27:55:55:55 (eth1)con MAC 08:00:27:66:66:66 (eth2)# ifconfig eth0 10.10.10.1

    # ifconfig eth0 10.20.20.1

    # ifconfig eth1 193.147.87.47

    # hostname firewall3

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    4.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    4 de 19 18/06/2013 18:11

  • En el equipo dentro (10.10.10.11) se modifica la tabla de enrutado para establecer como gatewaypara la ruta por defecto (direcciones fuera de la red 10.10.10.0) al firewall3 (10.10.10.1).En el equipo (10.20.20.22) se modifica la tabla de enrutado para establecer como gateway para laruta por defecto (direcciones fuera de la red 10.20.20.0) al firewall3 (10.20.20.1).En el equipo firewall3 (10.10.10.1, 10.20.20.1 y 193.147.87.47) se habilita el reenvio de paquetes,para que pueda realizar funciones de encaminamiento (router).

    Nota 1: El interfaz de red asignado (eth0, eth1, ...) puede variar de unas ejecuciones a otras. Se puedecomprobar cal est activo con el comando ''ifconfig -a''

    Nota 2: Estas configuraciones son temporales, para que se mantengan al volver a arrancar es necesarioconfigurar una conexin esttica en el fichero /etc/network/interfaces.

    Habilitar la redireccin de trfico en la mquina firewall3 [10.10.10.1, 10.20.20.1, 193.147.87.47]firewall3:~# echo 1 > /proc/sys/net/ipv4/ip_forward

    5.

    Arrancar los servicios a utilizar (el servidor ssh est activado por defecto).dentro:~# /etc/init.d/mysqld startdentro:~# /etc/init.d/openbsd-inetd start

    dmz:~# /etc/init.d/apache2 start (servidor web)dmz:~# /etc/init.d/postfix start (servidor smtp) dmz:~# /etc/init.d/dovecot start (servidor pop3)

    fuera:~# /etc/init.d/apache2 startfuera:~# /etc/init.d/openbsd-inetd start

    6.

    Ejercicio 1: Configuracin de una DMZ(DeMilitarized Zone) usando el firewallNETFILTER/IPTABLES

    DescripcinSe desarrollarn una serie de ejercicios para comprobar el funcionamiento y la configuracin del firewall delkernel de Linux NETFILTER/IPTABLES.

    El entorno de trabajo contar con un firewall con 3 interfaces que separa una red externa insegura de dos redesinternas que definen 2 zonas de seguridad: la red interna (confiable) y la zona desmilitarizada (DMZ) (noconfiable).

    Sobre este cortafuegos se experimentar con polticas de filtrado y traduccin de direcciones.

    Tareas a realizarEl primer ejercicio consistir en la configuracin de las reglas de filtrado y NAT de NETFILTER empleando laherramienta de lnea de comandos IPTABLES.

    Pgina del proyecto NETFILTER: http://netfilter.orgManual y opciones detalladas: http://iptables-tutorial.frozentux.net

    (Versin PDF en espaol: http://ccia.ei.uvigo.es/docencia/SSI/practicas/iptables-tutorial.es.pdf)

    Manual y ejemplos de uso de IPTABLES (en espaol): http://www.pello.info/filez/firewall

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    5 de 19 18/06/2013 18:11

  • /iptables

    La configuracin se har mediante scripts BASH que contendrn los comandos IPTABLES necesarios.

    Nota: En el directorio ''/root/iptables/'' se proporciona un esquema para un posible script Bash autilizar en el ejercicio.

    Recibe un parmetro (stop y stop)firewall3:~# cd /root/iptables/firewall3:~# ./firewall-iptables.sh stop (recupera la configuracin inicial de netfilter)firewall3:~# ./firewall-iptables.sh start (lanza los comandos iptables que definen las reglas del firewall)

    Podra utilizarse directamente como un script de arranque (opcional)

    Para Debian (como root)firewall3:~# cp firewall-iptables.sh /etc/init.d (copia el script en /etc/init.d)firewall3:~# update-rc.d firewall-iptables.sh defaults (crea los links desde /etc/rcX.d)firewall3:~# update-rc.d firewall-iptables.sh remove (elimina los links desde /etc/rcX.d)

    Restriciones de acceso a implementar

    Enmascaramiento (SNAT) de la red interna (10.10.10.0/24) y de la DMZ (10.20.20.0/24)1.Redireccionamiento (DNAT) de los servicios pblicos que ofrecer la red hacia la mquina dentro(10.20.20.22) de la DMZ

    peticiones WEB (http y https)1.trfico de correo saliente (smtp) y entrante (pop3)2.

    2.

    Control de trfico con poltica ''denegar por defecto'' (DROP)desde la red externa slo se permiten las conexiones hacia la DMZ contempladas en lasredirecciones del punto anterior (http, https, smtp, pop3)

    1.

    desde la red interna hacia la red externa slo se permite trfico de tipo WEB y SSH2.desde la red interna hacia la DMZ slo se permite trfico WEB (http, https), e-mail (smtp, pop3) ySSH

    3.

    desde la mquina dmz (10.20.20.22) se permiten conexiones MySQL hacia la mquina dentro(10.10.10.11) de la red interna

    4.

    se permite la salida a la red externa de las consultas DNS originadas en la red interna5.firewall slo admite conexiones SSH desde la red interna6.

    3.

    Registro (log) de intentos de acceso no contemplados desde red externa a firewall3 (193.147.87.47) y aequipos internos con la etiqueta Acceso no autorizado

    4.

    Limitar el trfico de control ICMP recibido desde la red externa para mitigar posibles ataques DOS (denialof service)

    5.

    Nota: Antes de hacer las pruebas: habilitar acceso exterior a MySQL en la mquina dentro(10.10.10.11) yarrancar el servidor.

    dentro~# leafpad /etc/mysql/my.cf

    (comentar la linea donde aparece bind-address 127.0.0.1) ...

    # bind-address 127.0.0.1 ...

    dentro~# /etc/init.d/mysql start

    Pasos a seguir

    Comprobar la configuracin actual de firewall31.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    6 de 19 18/06/2013 18:11

  • firewall3:~# iptables -Lfirewall3:~# iptables -t nat -L

    Comprobar el tipo de trfico admitido inicialmenteProbar conexin telnet hacia el exterior y conexin WEB hacia el interior

    dentro~# telnet 193.147.87.33

    fuera:~# lynx 193.147.87.47fuera:~# lynx 10.20.20.22

    Comprobar servicios abiertos

    fuera:~# nmap -T4 10.10.10.11 10.20.20.22 193.147.87.47dentro:~# nmap -T4 10.20.20.22 193.147.87.33dmz:~# nmap -T4 10.10.10.11 193.147.87.33

    2.

    Esquema general del script a emplear

    - Borrado de la reglas actuales y reinicio de contadores - Establecimiento de polticas por defecto - Reglas de NAT - Reglas de filtrado (red interna, firewall, ...)

    Importante: En este ejemplo se emplearn polticas de filtrado con comportamiento de denegar pordefecto (DROP).

    Se complica ligeramente la definicin de la reglas:

    Hay que habilitar explcitamente los servicios y redirecciones admitidosEs necesario tener en cuenta el trfico en ambos sentidos, tenemos 2 opciones:

    Opcin 1: habilitar explcitamente el trfico en ambos sentidos

    Para cada servicio autorizado definiremos un par de reglas: una para permitir el trfico depeticiones y otra para el trfico de sus respectivas respuestas

    Opcin 2: usar las capacidades de connection tracking (firewall con estado) de netfilter

    El filtrado de servicios se realizar controlando los paquetes de inicio de trfico/conexin.

    El trfico de respuesta o relacionado con trfico/conexiones ya inicadad se aceptar todo.

    En este ejemplo usaremos la aproximacin 2.

    Script de partida (''firewall-iptables.sh'')#!/bin/bash

    #VARIABLES

    eth_INT=eth0eth_DMZ=eth1eth_EXT=eth2

    RED_INTERNA=10.10.10.0/24RED_DMZ=10.20.20.0/24

    case "$1" instart) # Borrar reglas anteriores y reiniciar las tablas actuales iptables -F iptables -X iptables -Z

    3.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    7 de 19 18/06/2013 18:11

  • iptables -t nat -F

    # Establecer politicas por defecto (DESCARTAR) iptables -P INPUT DROP # descartar entradas al firewall iptables -P OUTPUT DROP # descartar salidas del firewall iptables -P FORWARD DROP # descartar reenvios a traves del firewall

    # Habilitar retransmisin de paquetes echo 1 > /proc/sys/net/ipv4/ip_forward

    # Permitir todo al interfaz local del firewall (loopback) iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT

    # Permitir el trafico de conexiones ya establecidas (el control de trfico se hace al inicar las cone iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

    # 2.1 Establecer NAT de red interna y DMZ (SNAT, enmascaramiento) #

  • iptables -t nat -A POSTROUTING -s $RED_DMZ -o $eth_EXT -j MASQUERADE

    # 2.2 Establecer redireccionamientos hacia DMZ (DNAT) # DNAT (redireccionamiento servicio HTTP [puerto 80, 443] a red DMZ) iptables -t nat -A PREROUTING -i $eth_EXT -p tcp --dport 80 -j DNAT --to-destination 10.20.20.22 iptables -t nat -A PREROUTING -i $eth_EXT -p tcp --dport 443 -j DNAT --to-destination 10.20.20.22

    # DNAT (redireccionamiento servicio SMTP [puerto 25] y POP3 [puerto 110] a red DMZ) iptables -t nat -A PREROUTING -i $eth_EXT -p tcp --dport 25 -j DNAT --to-destination 10.20.20.22 iptables -t nat -A PREROUTING -i $eth_EXT -p tcp --dport 110 -j DNAT --to-destination 10.20.20.22

    ## NOTA: Con el mdulo multiport podra hacerse con una sola regla ## iptables -t nat -A PREROUTING -i $eth_EXT -p tcp -m multiport --dports 80,443,25,110 \ ## -j DNAT --to-destination 10.20.20.22

    # 3 Reglas de filtrado del trfico # REGLA TEMPORAL: permite todo el trfico a travs del firewall (slo para pruebas con NAT) iptables -A FORWARD -j ACCEPT

    Comprobaciones:

    Lanzar el script del firewalll

    firewall3:~# /root/iptables/firewall-iptables.sh start

    1.

    Comprobar la configuracin actual de firewall

    firewall3:~# iptables -L firewall3:~# iptables -t nat -L

    2.

    Realizar conexin TELNET desde dentro (10.10.10.11) a fuera (193.147.87.33) dentro:~# telnet 193.147.87.33 Trying 193.147.87.33 ... Connected to fuera. Escape character is '^]'.

    Linux 2.6.18-6-686 (193.147.87.33) (pts/18)

    login: usuario1 Password: usuario1

    3.

    En fuera (193.147.87.33), verificar las conexiones establecidas actualmente fuera:~# netstat -t

    fuera:~# w

    4.

    Realizar conexion WEB desde el equipo fuera (193.147.87.33) hacia firewall3 (193.147.87.47) fuera:~# lynx 193.147.87.47

    5.

    Script final (''firewall-iptables.sh'')

    Sobre el script anterior:

    Quitar la regla temporal (iptables -A FORWARD -j ACCEPT)

    Aadir las siguientes reglas para filtrado de trfico:

    # 3. Reglas de filtrado del trfico # Limitar trfico ICMP (permitir hasta un maximo de 5 peticiones/segundo) iptables -A INPUT -p icmp -m limit --limit 5/second -j ACCEPT iptables -A OUTPUT -p icmp -m limit --limit 5/second -j ACCEPT

    5.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    9 de 19 18/06/2013 18:11

  • iptables -A FORWARD -p icmp -m limit --limit 5/second -j ACCEPT

    # FILTRADO ENTRADA RED DMZ # - permitir paso de servicios redireccionados (solo peticiones, las respuestas siempre se autorizan) iptables -A FORWARD -i $eth_EXT -d $RED_DMZ -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A FORWARD -i $eth_EXT -d $RED_DMZ -p tcp --dport 443 -m state --state NEW -j ACCEPT iptables -A FORWARD -i $eth_EXT -d $RED_DMZ -p tcp --dport 25 -m state --state NEW -j ACCEPT iptables -A FORWARD -i $eth_EXT -d $RED_DMZ -p tcp --dport 110 -m state --state NEW -j ACCEPT

    ## NOTA: Con el mdulo multiport podra hacerse con una sola regla ## iptables -A FORWARD -i $eth_EXT -d $RED_DMZ -p tcp \ ## -m multiport --dports 80,443,25,110 -m state --state NEW -j ACCEPT \

    # - log de otros accesos a red dmz (se denegaran por defecto) iptables -A FORWARD -i $eth_EXT -d $RED_DMZ -j LOG --log-prefix "Acceso red dmz:" # - log de otros accesos a red interna (se denegaran por defecto) iptables -A FORWARD -i $eth_EXT -d $RED_INTERNA -j LOG --log-prefix "Acceso red interna:"

    # FILTRADO SALIDA RED INTERNA # - permitir conexiones salientes HTTP (solo peticiones, las respuestas siempre se autorizan) iptables -A FORWARD -o $eth_EXT -s $RED_INTERNA -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A FORWARD -o $eth_EXT -s $RED_INTERNA -p tcp --dport 443 -m state --state NEW -j ACCEPT # - permitir conexiones salientes SSH (solo peticiones, las respuestas siempre se autorizan) iptables -A FORWARD -o $eth_EXT -s $RED_INTERNA -p tcp --dport 22 -m state --state NEW -j ACCEPT

    # - permitir consultas DNS salientes (sobre TCP y UDP) iptables -A FORWARD -o $eth_EXT -s $RED_INTERNA -p tcp --dport 53 -m state --state NEW -j ACCEPT iptables -A FORWARD -o $eth_EXT -s $RED_INTERNA -p udp --dport 53 -m state --state NEW -j ACCEPT

    # - permitir conexiones HTTP hacia la DMZ (solo peticiones, las respuestas siempre se autorizan) iptables -A FORWARD -d $RED_DMZ -s $RED_INTERNA -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A FORWARD -d $RED_DMZ -s $RED_INTERNA -p tcp --dport 443 -m state --state NEW -j ACCEPT # - permitir conexiones SMTP y POP3 hacia la DMZ (solo peticiones, las respuestas siempre se autoriza iptables -A FORWARD -d $RED_DMZ -s $RED_INTERNA -p tcp --dport 25 -m state --state NEW -j ACCEPT iptables -A FORWARD -d $RED_DMZ -s $RED_INTERNA -p tcp --dport 110 -m state --state NEW -j ACCEPT

    # - rechazar los dems intentos de salida informando con ICMP (por defecto se hara simplemente DROP) iptables -A FORWARD -s $RED_INTERNA -m state --state NEW -j REJECT --reject-with icmp-port-unreachabl

    # FILTRADO ACCESO RED INTERNA DESDE DMZ # - permitir trfico MySQL (puerto 3306) de 10.20.20.22 a 10.10.10.11 iptables -A FORWARD -d 10.10.10.11 -s 10.20.20.22 -p tcp --dport 3306 -m state --state NEW -j ACCEPT # - todos los dems intentos de salida estn bloqueados por la poltica por defecto DROP

    # FILTRADO CONEXIONES HACIA EL FIREWALL # - permitir conexione SSH desde red interna, resto bloqueado por politica por defecto iptables -A INPUT -i $eth_INT -s $RED_INTERNA -p tcp --dport 22 -m state --state NEW -j ACCEPT

    # - log de los intentos de acceso al firewall desde exterior (sern denegados) iptables -A INPUT -i $eth_EXT -j LOG --log-prefix "Acceso firewall:"

    Comprobaciones:

    Lanzar el script del firewalll

    firewall3:~# /root/iptables/firewall-iptables.sh start

    1.

    Comprobar la configuracin actual de firewall

    firewall:~# iptables -L firewall:~# iptables -t nat -L

    2.

    Realizar conexiones SSH a firewall3 desde fuera (193.147.87.33), dentro (10.10.10.11) y dmz3.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    10 de 19 18/06/2013 18:11

  • (10.20.20.22) dentro:~# ssh [email protected] dmz:~# ssh [email protected] fuera:~# ssh [email protected]

    Otra posibilidad (ms rpida): realizar escaneo NMAP al puerto 22. dentro:~# nmap -T4 10.10.10.1 -p 22 dmz:~# nmap -T4 10.20.20.1 -p 22 fuera:~# nmap -T4 193.147.87.47 -p 22

    Realizar conexin TELNET desde dentro (10.10.10.11) hacia fuera (193.147.87.33). dentro:~# telnet 193.147.87.33 ...

    4.

    Realizar conexin WEB desde dentro (10.10.10.11) hacia fuera (193.147.87.33). interno:~# lynx 193.147.87.33 ...

    5.

    Comprobar el fichero de log (/var/log/syslog) de firewall2 firewall2:~# tail /var/log/syslog ...

    6.

    Comprobar servicios abiertos

    fuera:~# nmap -T4 10.10.10.11 10.20.20.22 193.147.87.47 dentro:~# nmap -T4 10.20.20.22 193.147.87.33 dmz:~# nmap -T4 10.10.10.11 193.147.87.33

    7.

    Nota: Otra alternativa cmoda para comprobar las reglas de filtrado de un firewall es la herramientahping3.

    hping3 emula el funcionamiento de la utilidad ping generalizndolo, al permitir realizar sondeos con laposibilidad de especificar los puertos origen y/o destino, las flags TCP, etc.

    Ejercicio 2: Uso de enlaces cifrados OpenVPN yconfiguracin del firewall ShorewallSe desarrollar un ejercicio de creacin de enlaces OpenVPN y una configuracin bsica de un firewall conDMZ empleando Shorewall.

    Se usar un equipo con tres interfaces para hacer el papel de firewallSe crear un enlace cifrado OpenVPN a un equipo de la red externa.

    Parte 1: Creacin de un enlace OpenVPNSe crear un enlace cifrado OpenVPN desde la mquina firewall3 (193.147.87.47) a la mquina externa fuera(193.147.87.33). Se usar un esquema SSL completo

    Usaremos el modo de funcionamiento de OpenVPN ``roadwarrior``, donde un servidor OpenVPN crea enlacescifrados para equipos autorizados situados en redes externas.

    La autentiacin se realizar mediante certificados digitales (la otra posibilidad sera emplear cifradosimtrico con claves secretas estticas preacordadas)A las mquinas que se conecten por VPN se les asignarn direcciones IP del rango 10.30.30.0/24, donde la

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    11 de 19 18/06/2013 18:11

  • mquina firewall3 (el servidor OpenVPN) tendr la IP 10.30.30.1

    Para simplificar el ejercicio se usarn las claves y certificados de ejemplo que provee OpenVPN. En un entornoreal no se podran usar esas claves, sino que deberamos generar las nuestras propias.

    Claves de ejemplo: /usr/share/doc/openvpn/examples/sample-keys/

    Certificados y claves necesarias:

    Para el servidor:certificado digital de la Autoridad Certificadora (CA) reconocida por ambos participantes: ca.crtclave privada del servidor: server.keycertificado digital del servidos: server.crt (emitido por la CA)parmetros para intercambio de clave Diffie-Hellam: dh1024.pem

    Para cada uno de los clientes que se conecten con OpenVPN:certificado digital de la Autoridad Certificadora reconocida por ambos participantes: ca.crtclave privada del servidor: client.keycertificado digital del servidor: client.crt (emitido por la CA)

    Se incluye en el Anexo 2 [*] las indicaciones para generar nuestra propia autoridad de certificacin (CA) con laque crear nuestros propios certificados digitales.

    Pasos a seguir

    Previo: Deshabilitar el firewall del ejercicio1firewall3:~# /root/iptables/firewall-iptables.sh stop (importante)

    Configuracin del servidor: en la mquina firewall3Copiar las claves/certificados necesarios al directorio /etc/openvpn :

    firewall3:~# cd /etc/openvpnfirewall3:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/ca.crt .firewall3:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/server.crt .firewall3:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/server.key .firewall3:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/dh1024.pem .

    Crear el fichero de configuracin del servidor:

    Se usar como base el ejemplo disponible en /usr/share/doc/openvpn/examples/sample-config-files/

    firewall3:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/serverfirewall3:/etc/openvpn# gunzip server.conf.gz

    Editar los parmetros concretos para nuestros tneles VPN:

    firewall3:/etc/openvpn# leafpad server.conf &

    Parmetros destacados (con '' '' se sealan los cambios efectuados para nuestro ejemplo):port 1194 /* puerto por defecto del servidor OpenVPN */

    proto udp /* protocolo por defecto del servidor OpenVPN */

    dev tun /* tipo de dispositivo de red virtual (= tarjeta de red "software") a travsdel cual se acceder al tunel cifrado establecido */

    ...

    ca /etc/openvpn/ca.crt /* parametros de cifrado */

    cert /etc/openvpn/server.crt

    1.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    12 de 19 18/06/2013 18:11

  • key /etc/openvpn/server.key

    ...

    dh /etc/openvpn/dh1024.pem

    ...

    server 10.30.30.0 255.255.255.0 /* rango de direcciones a asignar a los clientes

    OpenVPN que se vayan conectando*/

    push "route 10.10.10.0 255.255.255.0"

    push "route 10.20.20.0 255.255.255.0"

    /* configuracin de las rutas a establecer ("empujar") en losclientes para las conexiones cifradas que se vayan creando */

    /* en nuestro caso son las rutas hacia las 2 redes (interna

    y dmz) gestionadas por firewall3 */

    Configuracin de los clientes: en la mquina fuera (193.147.87.33)Copiar las claves/certificados necesarios al directorio /etc/openvpn :

    fuera:~# cd /etc/openvpnfuera:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/ca.crt .fuera:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/client.crt .fuera:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-keys/client.key .

    Crear el fichero de configuracin del cliente

    Se usar como base el ejemplo disponible en /usr/share/doc/openvpn/examples/sample-config-files/

    fuera:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/client.con

    Editar los parmetros concretos para nuestros tneles VPN

    fuera:/etc/openvpn# nano client.conf

    Parmetros destacados (con '' '' se sealan los cambios efectuados para nuestro ejemplo):client /* indica que es la configuracin para un cliente */

    dev tun /* tipo de dispositivo de red virtual (= tarjeta de red "software") a travesdel cual se acceder al tunel cifrado establecido con el servidor */

    remote 193.147.87.47 1194 /* direccin IP y puerto de escucha del servidor OpenVPN

    con el que se establecera el tunel cifrado */

    ca /etc/openvpn/ca.crt /* parametros de cifrado */

    cert /etc/openvpn/client.crt

    key /etc/openvpn/client.key

    ...

    2.

    Crear el tnel OpenVPNInciar OpenVPN en servidor (firewall3), ejecutar /etc/init.d/openvpn startInicar OpenVPN en cliente (fuera), ejecutar /etc/init.d/openvpn start

    En ambos extremos del tnel cifrado se crea un interfaz de red ''virtual'' /dev/tun0 por el que se accede alenlace cifrado que conforma la red privada virtual.

    Un interfaz tun (tambin los interfaces tap) simula un dispositivo de red ethernet, pero en lugar deenviar los datagramas Ethernet sobre un cable de red, los encapsula dentro de los paquetes de unaconexin TCP/IP establecida.

    3.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    13 de 19 18/06/2013 18:11

  • En nuestro caso se trata de una conexin SSL al puerto 1194 UDP de la mquina firewall3El enlace OpenVPN definir la red 10.30.30.0/24

    El servidor tendr la dir. IP 10.30.30.1A los clientes se les asignarn direcciones a partir de 10.30.30.6El gateway (puerta de enlace) de los clientes conectado por VPN ser 10.30.30.5, que reenvaa 10.30.30.1

    Se puede comprobar la configura en ambos extremos con ifconfig -aEn este caso las rutas hacia las dos ''redes internas'' (red dmz y red interna) se ''inyectan'' en elcliente VPN al crear el tunel

    La ruta por defecto de los equipos internos usa como gateway a firewall3 que a su vezconoce la ruta hacia las mquinas clientes VPNPor ello, en este caso concreto no es necesario indicar rutas adicionales para que los equiposdentro y dmz respondan y se comuniquen con los clientes OpenVPN

    Para el equipo firewall3 tendremos 4 redes10.10.10.0/24: red interna en el interfaz eth010.20.20.0/24: red dmz en el interfaz eth110.30.30.0/24: equipos externos conectados sobre VPN en el interfaz ''virtual'' tun0red externa en el interfaz eth2

    Comprobar el tunel creado

    Comprobar el acceso desde la mquina cliente (fuera) a las 2 redes internas detrs de firewall3.

    Desde fuera:

    fuera:~# nmap -T4 10.10.10.11 [escaneo de dentro]fuera:~# nmap -T4 10.20.20.22 [escaneo de dmz]

    Otra opcin: hacer conexin ssh + comprobar con comando who quien est conectado

    fuera:~# ssh [email protected] fuera:~# ssh [email protected]{\footnotesize\begin{verbatim}

    4.

    Parte 2: Configuracin del firewall con Shorewall (Shoreline Firewall)Nota: Por el momento omitiremos en la configuracin del firewall el enlace OpenVPN que tenemos configurado.

    Se usar el esquema three-interfaces incluido en la distribucin estndar de Shorewall y descrito enhttp://www.shorewall.net/three-interface.htm.

    La plantilla para configurar el firewall est en el directorio /usr/share/doc/shorewall/examples/three-interfaces/

    Pasos a seguir

    Todas las tareas de configuracin de Shorewall se realizarn en la mquina firewall3.

    Copiamos y descomprimimos los ficheros de configuracin en el directorio de configuracin de Shorewall(/etc/shorewall/)firewall3:~# cd /etc/shorewallfirewall3:/etc/shorewall# cp /usr/share/doc/shorewall/examples/three-interfaces/* .firewall3:/etc/shorewall# gunzip *.gz

    1.

    Configurar las zonas (/etc/shorewall/zones) [lo dejaremos como est]

    Tendremos 4 zonas:

    2.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    14 de 19 18/06/2013 18:11

  • el propio firewall (fw)la red externa (net) [accesible desde eth2]la red interna (loc) [accesible desde eth0]la dmz (dmz) [accesible desde eth1]

    firewall3:/etc/shorewall# leafpad zones &

    ################################################################################ZONE TYPE OPTIONS IN OUT# OPTIONS OPTIONSfw firewallnet ipv4loc ipv4dmz ipv4#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE

    Configurar los interfaces (/etc/shorewall/interfaces)

    Ajustar los interfaces de red de cada zona para que se ajusten a nuestra configuracin (en columnaINTERFACE)firewall3:/etc/shorewall# leafpad interfaces &

    ################################################################################ZONE INTERFACE BROADCAST OPTIONSnet eth2 detect tcpflags,routefilter,norfc1918,nosmurfs,logmartiansloc eth0 detect tcpflags,detectnets,nosmurfsdmz eth1 detect tcpflags,detectnets,nosmurfs#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    3.

    Definir las polticas (/etc/shorewall/policy)

    El fichero por defecto incluye todas las combinaciones posibles entre nuestras 3 zonas (loc, dmz, net)indicando una poltica ACCEPT para el trfico de la zona loc y una poltica por defecto de rechazar(REJECT) y generando un LOG de los ''rechazo'' realizados.

    Esta poltica slo tiene utilidad para depuracinEn nuestro caso fijaremos unas polticas restrictivas que en principio slo permitirn trfico entre lazona loc y la red externa (net)En el fichero /etc/shorewall/rules se ajustarn las excepciones pertinentes.

    firewall3:/etc/shorewall# leafpad policy &

    ################################################################################SOURCE DEST POLICY LOG LEVEL LIMIT:BURSTloc net ACCEPTnet all DROP

    # THE FOLLOWING POLICY MUST BE LASTall all REJECT info

    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

    4.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    15 de 19 18/06/2013 18:11

  • Definir enmascaramiento (/etc/shorewall/masq)

    En nuestro ejemplo enmascararemos (SNAT: source NAT) el trfico saliente de nuestras 2 redes internas(loc y dmz).firewall3:/etc/shorewall# leafpad masq &

    ###############################################################################INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARKeth2 10.10.10.0/24eth2 10.20.20.0/24#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

    Indica que para el trfico que pretenda salir de la red 10.10.10.0 y 10.20.20.0 a travs del interface eth2(red externa) se ''reescribir'' su direccin origen con la direccin IP del interfaz eth2 (IP publica defirewall3 (193.147.87.47))

    5.

    Incluir las excepciones y redirecciones en /etc/shorewall/rules Mantendremos las excepciones(reglas) incluidas en el fichero rules de muestra.

    Definen el comportamiento de servicios bsico como DNS, SSH hacia dmz y firewall, mensajesICMP de PING, etc

    Nota: hace uso de macros como Ping/DROP, SSH/ACCEPT (abrevian la notacin ahorrando elescribir los puertos concretos)

    Implementaremos parte de las restriciones de trfico descrita en el ejercicio 1:

    Se redireccionan todos los servicio pblicos (http, https, smtp y pop3) que ofrecer nuestra redhacia la DMZ (en nuestro caso a la mquina 10.20.20.22)Se permite acceso del servidor web de la DMZ (en 10.20.20.22) al servidor MySQL de la red interna(en 10.10.10.11)Se permite el acceso desde la red interna a los servidores pblicos (web y correo) alojados en laDMZ

    Aadiremos al final del fichero (antes de la lnea #LAST LINE ....) las reglas que las implementan.firewall3:/etc/shorewall# leafpad rules &

    #####################################################################################ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL ... # PORT PORT(S) DEST

    # Accept DNS connections from the firewall to the InternetDNS/ACCEPT $FW net

    # Accept SSH connections from the local network to the firewall and DMZSSH/ACCEPT loc $FWSSH/ACCEPT loc dmz....

    ....

    #### ANADIDOS para implemetar reglas de filtrado#### 1: redirec. puertos (servicios publicos: http, https, smtp, pop3) a DMZDNAT net dmz:10.20.20.22 tcp 80,443DNAT net dmz:10.20.20.22 tcp 25,110

    ## Anadidos 2: acceso del servidor web de DMZ al servidor mysqlACCEPT dmz:10.20.20.22 loc:10.10.10.11 tcp 3306

    ## Anadidos 3: acceso desde local a servidores web y correo en DMZACCEPT loc dmz tcp 80,443ACCEPT loc dmz tcp 25,110

    6.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    16 de 19 18/06/2013 18:11

  • #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    Ajustar el fichero de configuracin de Shorewall (/etc/shorewall/shorewall.conf)

    Como mnimo debe establecerse la variable STARTUP_ENABLED a yes, para que el compilador Shorewallprocese los ficheros y genere las reglas iptables.

    Tambin debe habilitarse el forwarding de paquetes: Asegurar que la variable IP_FORWARDING est a on (oKeep si se garantiza que se habilita ip forwarding antes de iniciar el firewall)firewall3:/etc/shorewall# leafpad shorewall.conf &

    ################################################################################ S T A R T U P E N A B L E D###############################################################################STARTUP_ENABLED=yes...

    ################################################################################ F I R E W A L L O P T I O N S###############################################################################IP_FORWARDING=on

    7.

    Arrancar Shorewall y comprobar las reglas generadas

    firewall3:~# shorewall start

    firewall3:~# iptables -Lfirewall3:~# iptables -t nat -L

    8.

    Pruebas a realizarAntes de hacer las pruebas: habilitar acceso exterior a MySQL en la mquinadentro(10.20.20.22) y arrancar el servidor.

    dentro~# leafpad /etc/mysql/my.cf

    (comentar la linea donde aparece bind-address 127.0.0.1) ...

    # bind-address 127.0.0.1 ...

    dentro~# /etc/init.d/mysql start

    Desde fuera (193.147.87.33):

    fuera~# nmap -T4 193.147.87.47

    Estar accesible el puerto http redireccionado a la dmz

    Desde dmz (10.10.10.11):

    dmz~# nmap -T4 10.10.10.11

    Estar accesible el puerto mysql

    Desde dentro (10.20.20.22):

    dentro~# nmap -T4 10.20.20.22dentro~# nmap -T4 193.147.87.33

    9.

    Parte 3: Integracin del enlace OpenVPN con ShorewallShorewall prevee la posibilidad de dar soporte a conexiones VPN. Veremos como integrar nuestro tnelopenVPN en Shorewall

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    17 de 19 18/06/2013 18:11

  • Pasos a seguir

    Crear una nueva zona (road) para los clientes conectado con OpenVPN en el fichero /etc/shorewall/zones

    firewall3:/etc/shorewall# leafpad zones &

    ################################################################################ZONE TYPE OPTIONS IN OUT# OPTIONS OPTIONSfw firewallnet ipv4loc ipv4dmz ipv4road ipv4

    Nota: otra opcin ms directa sera habilitar una excepcin para el trfico openVPN (puerto 1194 UDP)en el fichero /etc/shorewall/rules y anadir el interfaz tun0 a la zona loc

    De ese modo, todo el trfico que llegar al forewall mediante los tneles OpenVPN se concideraracomo perteneciente a la zona loc (red interna).

    1.

    Asociar el interfaz tun0 a la zona road en el fichero /etc/shorewall/interfaces

    firewall3:/etc/shorewall# leafpad zones &

    ################################################################################ZONE INTERFACE BROADCAST OPTIONSnet eth2 detect tcpflags,dhcp,routefilter,nosmurfs,logmartiansloc eth0 detect tcpflags,nosmurfsdmz eth1 detectroad tun+

    2.

    Definir las polticas y reglas que afectan a los clientes OpenVPN

    Haremos que los equipos conectados por openVPN (zona road) tengas las mismas restricciones/privilegiosque los de la red interna (zona loc).

    Fichero /etc/shorewall/policy

    firewall3:/etc/shorewall# leafpad policy &

    ################################################################################SOURCE DEST POLICY LOG LEVEL LIMIT:BURSTloc net ACCEPTnet all DROProad loc ACCEPT

    # THE FOLLOWING POLICY MUST BE LASTall all REJECT info

    Fichero /etc/shorewall/rules

    Replicar las entradas correspondientes a la zona loc, cambiando su campo zona de loc a road.

    firewall3:/etc/shorewall# leafpad rules &

    ...

    SSH/ACCEPT road $FWSSH/ACCEPT road dmz...

    ACCEPT road dmz tcp 80,443 ACCEPT road dmz tcp 25,110

    3.

    Dar de alta el tunel OpenVPN /etc/shorewall/tunnels4.

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    18 de 19 18/06/2013 18:11

  • firewall3:/etc/shorewall# leafpad tunnels &

    #TYPE ZONE GATEWAY GATEWAY-ZONEopenvpnserver:1194 net 0.0.0.0/0

    Comprobar la configuracin del firewall y el funcionamiento del tunel OpenVPNReiniciar el servidor OpenVPN en firewall3

    firewall3~# /etc/init.d/openvpn restart

    Arrancar el cliente OpenVPN en fuera

    fuera~# /etc/init.d/openvpn restart

    Comprobar que desde el equipo fuera se tiene acceso a las redes interna y DMZ

    fuera~# nmap -T4 10.10.10.11fuera~# nmap -T4 10.20.20.22

    5.

    Anexo 2:pendiente

    Documentacin y entregaEl material entregable de esta prctica constar de una pequea memoria (mximo 2-3 pginas) documentandolos ejercicios realizados y los resultados obtenidos en cada paso realizado, junto con las conclusiones que sederiven de dichos resultados.

    Descripcin breve de acciones realizadas y resultados obtenidos en el ejercicio 1Detallar el trfico permitido inicialmente (resultados nmaps), despus de habilitar elenmascaramiento y las redicciones y despus de aadir las reglas de filtrado finales.Explicar las reglas iptables responsables del filtrado de trfico.

    Descripcin breve de acciones realizadas y resultados obtenidos en el ejercicio 2. Documentar las pruebasrealizadas sobre el enlace OpenVPN y la configuracin de Shorewall.

    La memoria de estos ejercicios se presentar junto con las del ejercicio anterior en las mismas fechas que eltrabajo terico (23/1/2012).

    ribadas 2011-10-31

    Ejercicios de Seguridad en Redes. Firewalls y tneles cifrados http://ccia.ei.uvigo.es/docencia/SSI/1112/practicas/seg-redes-2/

    19 de 19 18/06/2013 18:11