VyOS: Configuración Firewall I

Como ya se explicó en otro post, con la adquisición por parte de Brocade de Vyatta, se abandonó la versión Community del popular router, naciendo VyOS como fork para del proyecto. En otros post 1,2 y 3 vimos como configurar Vyatta o a partir de ahora VyOS para funcionar como un router básico con NAT. En esta ocasión, vamos a configurar un firewall para nuestra red.

El primer paso es decidir qué infraestructura queremos implementar, en este ejemplo, el mismo que planteo en las clases, supondremos una red local (LAN) y una DMZ que deberá aceptar conexiones desde el exterior. A nivel de simulación, se plantea el siguiente modelo, donde una VM hará de equipo de la LAN, otra máquina actuará como servidor web y finalmente una tercera VM VyOS que hará la función router firewall, como podemos ver en la siguiente imagen.

2017-04-17_0938

Las dos máquinas que harán de equipo local y servidor, se configuran en el VirtualBox como red interna, de la misma manera que dos de las interfícies de la VM de VyOS. Como en el aula quiero que todos los VyOS accedan a la red local para que los alumnos puedan interactuar, la tercera interfície del VyOS la configuraremos en mode adaptador-puente, saliendo a Internet a través del router del aula.

Un tema muy importante cuando se trabaja con el firewall, es tener claro el sentido del tráfico. Esto, suele ser una fuente habitual de errores, debido a que se interpreta de forma errónea qué es tránsito de entrada o de salida.

El criterio para determinar si el tránsito es de entrada o de salida se debe mirar sobre la interfície donde se aplica el firewall, como se ve en el siguiente dibujo.

2017-04-17_0946

Así, si trabajamos sobre eth0, el tránsito de salida es el que va hacia Internet, pero si queremos aplicar el filtrado sobre eth1, esos mismos paquetes que van hacia el exterior son tránsito de entrada, puesto que entran en el router.

Una cuestión de buenas prácticas es que a la hora de dar nombre a los firewall se utilice un criterio indicando si es de entrada o salida y sobre qué interfície se aplica, por ejemplo, FW0IN indica que se aplicará sobre eth0 de entrada.

Instalación VM

Aunque en los post mencionados anteriormente ya se explicó el proceso detallado, aquí haremos un breve resumen de los pasos previos.

Crearemos una máquina virtual con tres interfícies: la primera en modo puente (eht0) y las otras dos (eth1 y eth2) en modo red interna. Le asignamos una memoria de 1024 MiB y un espacio de disco de 10 GiB. Simplemente le conectamos la ISO de vyOS que podéis descargar de aquí.

Una vez arranca el sistema, entramos user: vyos password: vyos y procederemos a instalar el el sistema mediante el comando:

install image

Seguiremos las instrucciones y al finalizar, desconectamos la ISO de la máquina virtual y la reiniciamos.

Configuración de las interfícies y del sistema

El siguiente paso será configurar las interfícies. En este ejemplo configuraré eth0 con 192.168.2.30, eth1 con 192.168.20.254 (que corresponde a la puerta de enlace de la LAN) y eth2 con 192.168.120.254 (para la puerta de enlace de la DMZ).

Para configurar vyOS hay que entrar en el modo edición con el comando configure

set interfaces ethernet eth0 address 192.168.2.20/24

set interfaces ethernet eth1 address 192.168.20.254/24

set interfaces ethernet eth2 address 192.168.120.254/24

commit

Para confirmar los cambios habrá que introducir el comando commit.

A continuación, configuraremos el sistema para que se pueda comunicar con el router que le dará acceso a Internet (en mi caso 192.168.2.254).

set system gateway-address 192.168.2.254

set system name-server 8.8.8.8

commit

Es muy importante recordar que para que los cambios sean permanentes, deberemos guardarlos antes de salir del modo edición, con el comando save.

Configuración NAT

Como queremos simular que la máquina virtual vyOS se comporte como el router-firewall de un sistema, configuraremos la traducción de direcciones (NAT) tal como sería necesario hacerlo para salir con una sola IP pública. Si quisieramos que simplemente actuara como un firewall sin NAT, tendríamos que configurar el enrutamiento.

En primer lugar configuramos el NAT de salida para permitir que tanto la LAN como la DMZ puedan conectarse al exterior.

set nat source rule 1 outbound-interface eth0

set nat source rule 1 source address 192.168.20.0/24

set nat source rule 1 translation address masquerade

set nat source rule 2 outbound-interface eth0

set nat source rule 2 source address 192.168.120.0/24

set nat source rule 2 translation address masquerade

commit

A continuación configuramos el NAT de entrada para permitir que la DMZ reciba conexiones entrantes, en este caso para el puertos 443.

set nat destination rule 1 inbound-interface eth0.

set nat destination rule 1 protocol tcp

set nat destination rule 1 destination port 443

set nat destination rule 1 translation address 192.168.120.1

commit

Guardamos las configuraciones realizadas y comprobamos el correcto funcionamiento del entorno, donde tendremos una máquina cliente con IP 192.168.20.1 y un servidor Ubuntu con Apache configurado para funcionar con https y servicio ssh instalado, con IP 192.168.120.1.

Desde el cliente y servidor se debe poder tener acceso a Internet. Por otro lado, desde otra máquina de la red 192.168.2.0/24 deberíamos poder conectarnos a nuestro servidor web introduciendo la IP del router (192.168.2.20).

Configuración firewall: ejemplos sencillos

Las reglas básicas del firewall son DROP o REJECT para descartar o rechazar un paquete o ACCEPT para dejarlo pasar. Por ejemplo podemos pensar en un primer cortafuegos que permita salir todo el tráfico hacia Internet excepto a una dirección concreta. Lo aplicaremos sobre la interfície eth0:

set firewall name FW0OUT default-action accept

set firewall name FW0OUT rule 1 action drop

set firewall name FW0OUT rule 1 destination address 136.243.172.77

commit

Si quisiéramos incluir más reglas, simplemente se irían añadiendo condiciones rule 2, rule 3, etc.

Por ejemplo, una segunda regla para impedir conexiones FTP hacia el exterior desde la DMZ y la LAN:

set firewall name FW0OUT rule 2 action reject

set firewall name FW0OUT rule 2 protocol tcp

set firewall name FW0OUT rule 2 destination port 21

commit

Ahora queda aplicar el firewall definido sobre la interface correspondiente (aquí es de mucha utilidad usar el criterio de nombre mencionado antes):

set interfaces ethernet eth0 firewall out name FW0OUT

commit

Ahora solo quedaría comprobar el funcionamiento correcto del firewall, haciendo pruebas desde los equipos virtuales.

En el siguiente post, veremos más configuraciones del firewall.

Anuncios

IP Fire: un vistazo rápido

En el post anterior vimos el proceso de instalación de IPFire, un UTM basado en Linux que nos va a permitir cubrir en el laboratorio los temas de firewall, proxy, IDS y VPN. En este artículo haremos una breve presentación de las diferentes opciones que nos ofrece su menú.

2014-12-23_1011

La primera opción Sistema, contiene las configuraciones básicas:

2014-12-24_0901

Aquí las dos opciones más interesantes son la configuración del acceso remoto per ssh (por defecto vienen deshabilitado) y las opciones de respaldo donde podemos hacer copias de seguridad y respaldo a partir de estas copias. Otras opciones que incluye a parte del apagado de la máquina, son configurar el aspecto gráfico del GUI y el Dialup que sólo tiene sentido en el caso que nuestro dispositivo estuviera conectado por PPP hacia el exterior.

De las opciones ssh hay que destacar que permite configurar de forma extremadamente sencilla si queremos permitir la conexión remota con autenticación con password o mediante sistema de clave pública:

2014-12-24_0902

Por lo que respecta a respaldo, nos permite hacer copias de seguridad, incluso en formato iso (ideal para crear una imagen de nuestro UTM ya configurado y desplegarlo de forma rápida).

2014-12-24_0903

En información del sistema, a parte de ver información sobre la versión, podemos registrar el perfil.

2014-12-24_0904

La siguiente categoría del menú es la de status y aquí básicamente tenemos la opción de monitorizar el funcionamiento y el rendimiento del sistema: CPU, RAM, disco, red, etc. Presenta la información con unas gráficas de lectura sencilla.

2014-12-24_0905 2014-12-24_0906

En la categoría red tenemos las configuraciones y servicios ligados a la conexión de red: webproxy, filtro contenidos, DHCP, Wake-on-LAN,  rutas, etc.

2014-12-24_0923

Desde servicios configuraremos los servicios básicos instalados, por defecto VPN, IPsec, DDNS, QoS y el IDS (Snort). También tiene una utilidad para gestionar las unidades de disco.

2014-12-24_0925

El Firewall es sin duda el servicio estrella de IPFire y tiene su categoría propia, donde podremos administrar de forma sencilla las reglas y grupos del firewall. Incluye un asistente sencillo para la administración de conexiones P2P y como no podía ser menos, permite editar directamente iptables.

2014-12-24_1003

En IPFire tenemos la gestión de paquetes y actualizaciones, englobada en la herramienta Pakfire:

2014-12-24_1004

Finalmente, la última categoría de logs nos permite explorar los logs de los diferentes servicios del sistema.

2014-12-24_0926

Hasta aquí este breve recorrido por el menú de IPFire. En el siguiente post nos centraremos en la configuración del firewall.

IPFire: Instalación y configuración

ipfire_tux_420x420Tradicionalmente he utilizado Vyatta como solución de seguridad en mis clases. De hecho en este mismo blog le he dedicado diversas entradas. Sin embargo, tras su adquisición por parte de Brocade, se ha discontinuado la versión Community, que permitía disfrutar del producto sin ningún tipo de coste.  Aunque VyOS ha retomado el espíritu de Vyatta Community, he decidido probar alguna otra alternativa (aunque seguro que dedicaremos también entradas a VyOS).

La solución elegida es IPFire, una distribución Linux orientada a ofrecer un UTM (Unified Threat Management), esto a proteger nuestra red corporativa de ataques desde el exterior así como a cumplir las políticas que se establezcan. Por ese motivo, ofrece firewall, webproxy, NAT, IDS, VPN con posibilidad de ir incluyendo más módulos si son necesarios.

El primer paso, será descargarse la ISO de la página del proyecto (ipfire.org) y en nuestro caso, como suele ser habitual, crearemos una máquina virtual, con dos interfícies de red, una para la red interna y la de conexión al exterior, que en este caso utilizará la opción de NAT del virtualizador para salir a través del PC físico. Recomiendan un espacio de disco mínimo de 10 GB para poder guardar logs, configuraciones, etc.

2014-12-23_0924

 Elegimos la opción de instalar y a continuación seleccionaremos el idioma

2014-12-23_0926

A continuación debemos aceptar las condiciones de la licencia, que como podemos ver es GNU GPL, lo que garantiza que aunque se pueda distribuir o modificar libremente, deberemos mantener las condiciones de dicha licencia.2014-12-23_0928El siguiente paso será la configuración del disco donde instalaremos nuestro UTM. Por defecto, el formato de archivos será ext4 pero podemos elegir otros, en función de las preferencias o del tipo de soporte que queramos utilizar.

2014-12-23_0930

2014-12-23_0931

Procederá a instalar y cuando finalice aparecerá el siguiente mensaje que nos invita a reiniciar la máquina. Hasta aquí el proceso de instalación.
2014-12-23_0932El sistema se inicia y procederemos a las configuraciones iniciales

2014-12-23_0933

Seleccionaremos las opciones deseadas tanto en el teclado como en la zona horaria.

2014-12-23_0934

2014-12-23_0935

Asignamos el nombre que le queremos dar al equipo así como el dominio

2014-12-23_0936

2014-12-23_0937

Por defecto tendremos dos usuarios: root que es el usuario que puede iniciar sesión en la máquina y admin que es el usuario para administrar via web el sistema. El siguiente paso será asignar un password a cada uno de ellos.

2014-12-23_0938

2014-12-23_0939

A continuación deberemos configurar las tarjetas de red. IPFire utiliza un sistema curioso para identificar las diferentes interfícies de red mediante colores:

Red WAN External network, Connected to the Internet (typically a connection to your ISP)
Green LAN Internal/Private network, connected locally
Orange DMZ The DeMilitarized Zone, an unprotected/Server network accessible from the internet
Blue WLAN Wireless Network, A separate network for wireless clients

En nuestro caso tendremos dos interfícies correspondientes a Green para la LAN y Red para WAN. Vale la pena ir a la configuración del virtualizador y anotar las direcciones MAC generadas para cada adaptador de red, para asegurarnos que el que está configurado en bridged sea Green y el que está en NAT sea Red.

2014-12-23_0940

2014-12-23_0941

El primer paso será asignar cada adaptador de red (en nuestro caso virtuales) a la dos interficies green y red.

2014-12-23_0943

A continuación configuramos el adaptador green, que recordemos corresponde a la red interna y por tanto, actuará de puerta de enlace de nuestro entorno

2014-12-23_0944

2014-12-23_0945

Repetimos el proceso con la interfície red. Aquí nos permite elegir entre una configuración estática, una conexión PPP por ejemplo a un modem o a una línea ADSL y la configuración DHCP. Como hemos configurado el adaptador vmWare por NAT, será ésta la opción a escoger.

2014-12-23_0946

2014-12-23_0947

Como buena puerta de enlace, permite configurar los clientes mediante DHCP, pudiendo activar la selección y configurar sus parámetros. Nosotros lo dejaremos desactivado porque en el entorno de laboratorio, los diferentes servidores DHCP se estorbarían enter sí.

2014-12-23_0948

Con esto ya tenemos correctamente configurado nuestro IPFire:

2014-12-23_0950

Vamos a conectar un cliente, en este caso un Windows 8.1, para ello lo configuramos como un equipo de la red interna, utilizando la dirección de Green como puerta de enlace y servidor de nombres (se encarga del DNS forwarding).

2014-12-23_1007

Nos conectamos desde el navegador del cliente, ignorando el aviso del certificado

2014-12-23_1009

Comprobando como entramos en la página de gestión del equipo con IPFire.

2014-12-23_1011

En próximos posts, veremos como configurar algunas de la características más interesantes de IPFire como son el firewall o el webproxy.