En este post veremos como configurar una VPN para usuarios móviles en pfSense y autenticando con un dominio Active Directory a través de LDAP. De esta forma los usuarios podrán utilizar sus credenciales del dominio para acceder a la VPN, y podrán conectarse a la red utilizando tanto sus computadoras como sus dispositivos móviles, ya sean Android o iOS.
Servidor de Autenticacion
Lo primero que necesitamos es agregar nuestro controlador de dominio como "Autentication Server" o Servidor de Autenticacion en pfSense. Para este ejemplo, supongamos que tenemos un dominio llamado "midominio.com", que todos los usuarios están en el contenedor por defecto para usuarios de Active Directory "Users" y que nuestro controlador de dominio tiene la IP 10.0.0.10. Para agregarlo nos movemos a "System --> User Manager" y en esta ventana nos vamos a "Authentication Servers".
En esta ventana hacemos clic en "Add" para agregar los datos del controlador de dominio que autenticara los usuarios. Completamos los datos de esta ventana de esta manera:
- Descriptive Name: Nombre con el que identificaremos el servidor, por ejemplo, MyDominio
- Hostname or IP: Nombre del host o dirección IP del controlador de dominio, en el caso de este ejemplo, 10.0.0.10
- Transport: TCP - Standard
- Base DN: DN Base del dominio, por ejemplo: "DC=midominio,DC=com"
- Autentication containers: aqui insertamos el contenedor o la OU donde están los usuarios a los cuales les permitiremos el acceso, por ejemplo, el contenedor Users: "CN=Users,DC=midominio,DC=com".
- Extended query: hacemos clic en la opción "Enable Extended query" y se habilitara la siguiente opción:
- Query: acá agregamos lo siguiente: "&(objectClass=user)" (sin las comillas). Con esto le decimos al sistema que solo consulte objetos que sean del tipo usuario.
- Bind anonymous: Esta opción debemos desactivarla para poder indicar un usuario del dominio que pfSense utilizara para conectarse al Controlador de Dominio y hacer la consulta. Al quitar la selección de este punto se habilitara la siguiente opción:
- Bind Credentials: acá indicamos el usuario y password que se utilizara para hacer la consulta en el controlador de dominio. En "User DN:" escribimos un usuario del dominio (puede ser un usuario creado para este fin, no necesita ningún privilegio especial), y lo insertamos en el formato dominio\usuario, por ejemplo: mydominio\pfsense. Luego en el campo "Password" como ya se imaginaran, se inserta el password para el usuario que indicamos previamente.
- Initial Template: Aquí seleccionamos "Microsoft AD".
Las demás opciones se dejan por defecto.
Para probar la conexión al controlador de dominio, podemos hacer clic en el botón "Select a Container", si todos los parámetros están correctos debería abrir una ventana mostrando los demás contenedores y unidades organizativas (OU) que tenga definido el dominio. Luego para probar la autenticacion, hacemos clic en el menú superior en "Diagnostic --> Authentication". En "Authentication Server" seleccionan el servidor de autenticacion que acabamos de agregar (MiDominio) y luego insertamos las credenciales de algún usuario del dominio. Si pfSense puede autenticar correctamente el usuario verán una ventana como la siguiente:
En caso de que les presente un error autenticando, deben asegurarse de que el usuario que estén probando pertenezca al contenedor que se selecciono en la configuración del servidor de autenticacion. O sea, que se encuentre, por ejemplo, en el contenedor "Users" o en el OU que hayan seleccionado.
Configuración Mobile VPN
Una vez hemos definido nuestro servidor de autenticacion, nos movemos en el menu superior a "VPN --> IPsec" y luego hacemos clic en "Mobile Clients. En esta ventana completaremos de la siguiente manera:
- IKE Extension: Seleccionamos "Enable IPSec Mobile Client Support"
- User Authentication: Hacemos clic encima del servidor de autenticacion que definimos, para el caso de este ejemplo, seleccionamos "MiDominio".
- Group Authentication: None
- Vritual Address Pool: Seleccionamos "Provide a virtual IP address to clients" e indicamos mas abajo el rango IP que asignaremos a los usuarios que se conecten via VPN, por ejemplo, 10.0.2.0 y en el campo de al lado seleccionamos 24
- Network List: Seleccionamos "Provide a list of accessible networks to clients"
- DNS Default Domain: Seleccionamos "Provide a default domain name to clients",y mas abajo indicamos el nombre de nuestro dominio Active Directory, en el caso de este ejemplo seria "midominio.com"
- DNS Servers: Seleccionamos "Provide a DNS server list to clients" y mas abajo insertamos las direcciones IP's de los servidores DNS de nuestra red, por lo general sera la misma del controlador de dominio que agregamos como Servidor de Autenticacion.
Al hacer clic en "Save" veremos un mensaje como el siguiente, donde se nos indica que debemos crear los parametros de fase 1 (Phase 1) de IPSec para el VPN que acabamos de crear, haremos clic en el boton "Create Phase 1"
En esta ventana solo necesitamos modificar las siguientes propiedades:
- Description: Descripción o nombre para el tunel, podemos usar por ejemplo "VPN Usuarios"
- Authentication Method: Seleccionamos "Mutual PSK + Xauth"
- Negocitation Mode: Aggressive
- My Identifier: Podemos usar la opcion "IP Address" e indicar la IP externa de nuestro firewall, en este ejemplo usaremos "100.50.25.5".
- Peer identifier: Aqui indicamos como el usuario se identificara incialmente con el Firewall, podemos seleccionar "KeyID tag" y en el campo de al lado insertar "vpn-users"
- Pre-Share Key: El Firewall y el usuario se autenticaran mutuamente utilizando un password compartido o "Pre-Share Key", en esta sección indicamos este password. Para el caso de este ejemplo utilizaremos "MySuperPassword".
Las demas opciones las dejamos por defecto, pero necesitaremos conocerlas para configurar los clientes:
- Encription Algorithm: AES - 256 bits
- Hash Algorithm: SHA1
- DH Group: 2 (1024 bit)
- Lifetime (Seconds): 28800
- Dead Peer Detection: Enable DPD
Al hacer clic en "Save" iremos a la pantalla "Tunnels", veremos el tunel que acabamos de crear. Aquí haremos clic en el boton "Show Phase 2 Entries", luego en boton "Add P2" para agregar las opciones de la fase 2 de IPSec.
En esta sección seleccionaremos los siguientes parametros:
- Local Network: LAN subnet
- NAT/BINAT Translation: None
- Description: Nombre para el tunel, podemos agregar "VPN-Usuarios"
- Encryption Algorithms: AES-256 bits
Hacemos clic en "Save" y luego en el boton "Apply Changes" para aplicar los cambios. Al finalizar esta parte deberíamos ver ambas fases de la siguiente manera:
Con esto ya tenemos configurado el VPN en nuestro pfSense, ahora solo tenemos que configurarlo del lado de los clientes o usuarios.
Configuración Cliente VPN en Windows
Para los usuarios Windows, usaremos el cliente IPsec de
Shrew Soft que pueden descargar
aqui. Este cliente IPsec es gratuito y muy fácil de instalar, básicamente es solo next, next, next. Pero tengan en cuenta seleccionar durante la instalación la edición "Standard", ya que la Professional requiere licencia y solo les funcionara por 30 dias. Una vez instalado el cliente, al hacer doble clic sobre "VPN Access Manager" verán la siguiente ventana:
Haremos clic en el boton "Add" para definir una nueva conexion. Los parametros que usaremos aqui son los mismos parametros que definimos en la configuracion del VPN en pfSense. En el primer tab de esta ventana insertaremos la IP publica del firewall, en este ejemplo utilizamos 100.50.25.5
Nos movemos al tab "Client", podemos dejar los valores por defecto que tiene:
El tab "Name Resolution" podemos dejarlo también con los valores por defecto que trae, y nos movemos al tab "Authentication". En "Authentication Method" seleccionamos "
Mutual PSK+XAuth". En esta misma ventana, en el tab "Local Identity", como "Identification Type" seleccionamos "Key Identifier", esta fue la forma que indicamos en la configuración del VPN, e insertamos aquí el nombre "
vpn-users". En esta misma ventana nos movemos al tab "Remote Identity" y seleccionamos "any", por ultimo nos movemos al tab "Credentials". En esta tab nos movemos a la sección "Pre-Shared Key", aqui escribiremos el password compartido que definimos en la configuración del VPN de pfSense, en este ejemplo utilizamos "
MySuperPassword".
Luego nos movemos al tab superior "Phase 1". Aquí indicaremos los parámetros de la fase 1 que configuramos previamente en pfSense (Exchange Type: Aggressive, DH Exchange: group 2, Cipher Algorithm: aes, Cipher Key Length: 256, Hash Algorithm: sha1). Lo mismo hacemos en el tab "Phase 2" (Transform Algorithm: esp-aes, Transform Key Length: 256, HMAC Algorithm: sha1, PFS Exchange: group 2).
Por ultimo, nos movemos al tab "Policy". En este tab se indican las redes o equipos que accederemos a través de la VPN. Como le indicamos a pfSense que envíe el listado de redes, seleccionamos la opción "Obtain Topology Automatically or Tunnel All".
Hacemos clic en "Save" y con esto ya creamos nuestra conexión IPsec. Volveremos entonces a la ventana principal, pero ahora veremos un pequeño icono con la dirección IP publica del pfSense. Hacemos doble clic encima y veremos la ventana de conexión. Aquí insertamos nuestro usuario y password del dominio y hacemos clic en Connect.
Si todo esta bien, veremos una ventana como la siguiente. Al hacer la conexión el botón de "Connect" cambiara a "Desconect"
Con esto ya podremos tener acceso a los recursos de la red. Recuerden que deben habilitar una regla de Firewall que permita el trafico desde la red interna del firewall y el rango de direcciones que se asignara a los usuarios VPN. En el próximo post veremos como configurar el VPN en equipos Android y Iphones. Como siempre espero que esta información les haya sido de ayuda.
Hasta el Próximo!