miércoles, 15 de noviembre de 2017

Configuracion de Branch Office Tunel con IPsec entre un Firebox Watchguard y un Router Mikrotik

Todos sabemos lo traumático que puede llegar a ser configurar dispositivos de distintas marcas para establecer comunicación segura a través de un túnel Ipsec entre diversas sucursales de una organización, no hace falta más que tener control del entorno (incluyendo que puede ser lidiar con los ISP y los posibles bloqueos de puertos requeridos para establecer este tipo de conexiones) o configuraciones con nateos a partir de los enrutadores de cara a Internet para saber de lo que estamos hablando.

Pero contar con tecnologías tan potentes a través de los dispositivos Firebox Watchguard y MikroTik no es una de esas razones para no intentarlo. 

Protocolo de Internet Seguro, IPsec, nos permite establecer conexiones seguras entre nuestras oficinas o sucursales que requieran comunicación con servicios centralizados, tales como VPNs hibridas, acceso a servicios de voz y datos, monitoreo y compartimiento de información de forma segura, entre muchas otras bondades.

Procedemos entonces con el laboratorio de configuración entre un dispositivo Mikrotik RB951UI-2HND  y un dispositivo Firebox WatchGuard M440 en el otro extremo.


Inicialmente comenzaremos a configurar los parámetros del dispositivo Firebox Watchguard con los pasos a continuación:


1.     En el Policy Manager nos dirigimos hacia VPN – Branch Office Gateways – le damos clic en add, se nos abrirá el cuadro para la configuración del nuevo tunel VPN Ipsec:  

Visual de configuración de un nuevo Gateway VPN en el Policy Manager del Firebox

En este paso configuraremos los siguientes datos:

-        Gateway Name: Nombre del Gateway (peers utilizados)
-        En General Settings
Use Pre-Shared Key (Establecemos una clave para el túnel) recuerde que este valor debe ser exactamente igual en el otro extremo, sugerimos una clave de encriptamiento fuerte.
Al final en Gateway Endpoints le damos clic en add y nos aparecerá lo siguiente: 

Recuerde tomar en cuenta los detalles otorgados por su ISP, ya que requerirá las direcciones IPs de cada extremo, así como saber si cuenta con una dirección IP estática una o dirección IP dinámica otorgada por un servicio DHCP (requiere asociación a algún servicio de nombres como dyn)

En Interface externa debemos especificar la interfaz por la cual vamos a establecer el túnel.

Seguidamente seleccionamos By IP Address y colocamos la dirección IP pública correspondiente a la interface.

Luego, nos vamos a la sección Remote Gateway un poco más abajo y configuramos lo siguiente:

Si la dirección IP de nuestra sucursal remota es dinámica y se encuentra configurada con un Dyndns seleccionamos Dynamic IP Address y By Domain Information en el siguiente campo, si la dirección IP del otro extremo es estática seleccionamos Static IP Address y agregamos la dirección IP correspondiente, en la parte de abajo tildamos By IP Address tildada por defecto y asignamos la dirección IP correspondiente al otro extremo.

Luego de configurar estas opciones nos dirigimos a la pestaña Phase 1 Settings y configuramos los siguientes parámetros

(recuerde que este es un laboratorio, los mecanismos de autenticación y encriptación mientras más robustos mucho mejor)


Version: IKEv1
Mode: Aggressive
Tildamos NAT Traversal
Keep-alive Interval: 20 seconds
Tildamos IKE Keep-alive: 30 seconds
Max Failures: 5 seconds
Tildamos Dead Peer Detection
Traffic idle timeout: 20 seconds
Max retries: 5 seconds


En la sección de Transform Settings en la misma sección de Phase I

Editamos la configuración con los siguientes parámetros:

Authentication: MD5
Encrytion: 3DES
SA Life: 8 hours
Key Group: Diffie-Hellman Group1

Con esta configuración hemos finalizado la configuración de Phase I

Procedemos a Phase II y nos dirigimos a la siguiente ruta en el Policy Manager de nuestro dispositivo Firebox WatchGuard

VPN – Branch Officce Tunnels y le damos clic en add 

Sección de configuración de Fase II del túnel Ipsec a través del Policy Manager de nuestro dispositivo Firebox WatchGuard donde configuramos el direccionamiento IP o listas de acceso de las redes o host que se cruzarán tráfico a través del túnel Ipsec a establecer.

Procedemos a configurar los siguiente parametros:

Tunnel Name: Nombre para el túnel
Address: En esta sesión agregaremos la red privada local y la red remota privada que podrán comunicarse.

Luego procedemos a configurar la Phase 2 en la pestaña Phase 2 Settings

En esta sección le damos clic a add para agregar una nueva fase II y configuramos los siguientes parámetros:

Hasta este punto tenemos la configuración lista en nuestro dispositivo Firebox WatchGuard. Procedemos a configurar el otro extremo: dispositivo MikroTik, recuerde salvar los cambios.



Administramos nuestro dispositivo Mikrotik y nos vamos a la sección de Ipsec, nos aparecerá una pantalla parecida a la siguiente:



Damos clic en la pestaña Peer y configuraremos los parámetros de fase I de la siguiente forma:


En este caso el extremo donde esta nuestro dispositivo MikroTik cuenta con un direccionamiento Ip público dinámico, el otro extremo: Firebox, cuenta con direccionamiento IP público estático, es recomendable aplicar en el intercambio o modo de negociación automático en lugar de modo Main.

En Address colocamos la dirección Ip publica del dispositivo remoto, los demás parámetros los configuramos igual como lo tenemos en el otro extremo.

Luego pasamos a configurar la fase II y lo hacemos como se muestra en la captura

En Proposal o también llamado Fase II, definimos las redes que tendrán comunicación.

Nos aparecerá la siguiente pantalla, procedemos crear la misma configuración que creamos en el Firebox

Recuerde que los dos extremos deben ser exactamente iguales.
Luego de esto pasamos a crear y este punto es muy importante una política para permitir la comunicación entre las redes privadas.

Le damos clic en Ipsec, luego le damos clic en polices agregamos la política en Add New





Nos aparecerá la siguiente ventana:




En Src Address colocamos nuestra red local y en Dst Address colocamos la red local remota.

En SA SRC Address colocamos la IP pública local o en su defecto se puede colocar 0.0.0.0 que no indica cualquier red local.

En SA Dst colocamos la dirección IP publica de destino

Por último, debemos crear una Nat para permitir las redes privadas configuradas y lo hacemos de la siguiente forma:

Nos dirigimos a Firewall – NAT no saldrá la siguiente pantalla: 




Src. Address (Direccion IP privada de origen)
Dst. Address (Direccion IP privada de destino)

Ahora vamos a configurar un DYNDNS a nuestro Router Mikrotik, para ello nos dirigimos a la pestaña Sistema, Script. Creamos uno nuevo y le colocamos el nombre de DYNDNS, dentro del campo colocaremos el siguiente código:

Solo debemos modificar las primeras 3 líneas con la información de nuestra cuenta DynDns

# Define User Variables
:global ddnsuser "DYNDNSUSER"
:global ddnspass "DYNDNSPASS"
:global ddnshost "DYNDNSHOST"

# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }

:global ddnsinterface
:global ddnssystem ("mt-" . [/system package get system version] )

# Define Local Variables
:local int

# Loop thru interfaces and look for ones containing
# default gateways without routing-marks
:foreach int in=[/ip route find dst-address=0.0.0.0/0 active=yes ] do={
  :if ([:typeof [/ip route get $int routing-mark ]] != str ) do={
     :global ddnsinterface [/ip route get $int interface]
  }
}

# Grab the current IP address on that interface.
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]

# Did we get an IP address to compare?
:if ([ :typeof $ddnsip ] = nil ) do={
   :log info ("DynDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
  :if ($ddnsip != $ddnslastip) do={
    :log info "DynDNS: Sending UPDATE!"
    :local str "/nic/update?hostname=$ddnshost&myip=$ddnsip&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
    /tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
        password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
    :delay 1
    :local str [/file find name="DynDNS.$ddnshost"];
    /file remove $str
    :global ddnslastip $ddnsip
  }
}

Luego debemos programar el tiempo de actualización y lo hacemos de la siguiente forma:
Nos dirigimos a System – Scheduler  y agregamos el siguiente script:

/system scheduler
add interval=1m name=DynDns on-event=DynDns policy=ftp,reboot,read,write,policy,
test,winbox,password,sniff,sensitive,api start-time=startup 


En la línea Interval colocamos el tiempo y en name el nombre de nuestro Script.

En este punto hemos finalizado la configuración en el dispositivo MikroTik, listo para recibir las peticiones de un iniciador que bien puede ser el Firebox Watchguard o el mismo dispositivo Mikrotik.

Carlos Palomo.
Analista II/ Desarrollo de Proyectos.
Servicios de Proyectos y Consultoría SGSI 0526