Cómo integrar OpenVPN con Active Directory en pfSense

La instalación de OpenVPN en pfSense es una solución eficaz para asegurar conexiones remotas. Aunque el proceso clásico no es complicado, como se detalla en mi post Instalar y Configurar un Servidor OpenVPN en pfSense, se puede optimizar al integrar Active Directory. Esta integración permite reutilizar las credenciales existentes, simplificando la gestión de usuarios.

pfsense-openvpn-active-directory
pfsense-openvpn-active-directory

Al integrar OpenVPN con Active Directory, eliminas la necesidad de crear credenciales adicionales en pfSense, lo que no solo reduce la carga administrativa, sino que también mejora la seguridad al centralizar la autenticación. En esta guía, te mostraremos cómo llevar a cabo esta integración de manera efectiva, facilitando el acceso a la red de tu organización.

Como funciona OpenVPN con la autenticación de Active directory

Cuando un usuario intenta conectarse a OpenVPN, el proceso sigue estos pasos:

  1. Conexión Inicial: El usuario inicia sesión en el cliente OpenVPN utilizando su nombre de usuario y contraseña de Active Directory.
  2. Validación con pfSense: El servidor OpenVPN en pfSense recibe la solicitud de conexión y, en lugar de verificar las credenciales localmente, las envía al servidor de Active Directory de Windows Server.
  3. Autenticación con Active Directory (AD):
    • El servidor pfSense consulta AD usando los parámetros configurados (como Base DN y filtros de grupos, si los hay).
    • AD verifica si el nombre de usuario y la contraseña son correctos y si el usuario cumple con los criterios definidos, como pertenecer a un grupo específico (por ejemplo, un grupo de VPN).
  4. Acceso autorizado: Si las credenciales son válidas y el usuario cumple con las condiciones, Active Directory responde a pfSense confirmando la autenticación, lo que permite que OpenVPN establezca la conexión.
  5. Conexión a la red: El usuario accede de forma segura a la red de la organización a través de la VPN, utilizando sus credenciales de AD sin necesidad de cuentas adicionales.

Vamos a ello!!

¿Que debes saber antes?

Creo que es necesario que se sepan algunas definiciones antes de pasar a la parte práctica:

  • Common Name (CN): es un atributo que representa el nombre de un objeto (usuario, ordenador, grupo) pero no
  • Distinguished Name (DN): Es una cadena única que identifica de manera precisa un objeto dentro del directorio, como un usuario, grupo, unidad organizativa o cualquier otro objeto, y define su ubicación dentro de la jerarquía de objetos de Active Directory. Saber cúal es el DN de objeto es crucial para seguir este post…

¿Cómo saber el DN de un objeto? Dentro de la herramienta de Usuarios y equipos de Active Directory (dsa.msc), clicamos en: Ver > Características avanzadas…

Ahora hacemos clic derecho sobre el objeto (UO, usuario, grupo…) > propiedades > Editor de atributos, en esta pestaña se muestran todos los atributos de un objeto, como el teléfono, nombre, apellido, etc…

El DN de mi usuario bindVPN es el siguiente:

CN=bindVPN,OU=VPN-REMOTO,OU=USUARIOS,OU=NAVARRA,OU=ESPAÑA,OU=LABSMAC,DC=ad,DC=labsmac,DC=es

Preparación inicial (opcional)

  • Para que pfSense se comunique correctamente con Active Directory (AD), es recomendable crear un usuario dedicado que será utilizado exclusivamente para realizar consultas en el directorio. Aunque puedes utilizar cualquier usuario estándar, te recomiendo crear uno específico para mantener todo más organizado. Un buen nombre para este usuario podría ser bindVPN.
  • Si planeas que toda tu organización tenga acceso a la VPN, puedes saltarte este paso. Sin embargo, si deseas que solo un grupo específico de usuarios pueda utilizar la VPN, deberás crear un grupo en Active Directory, como GrupoVPN. De esta manera, solo los miembros de este grupo tendrán permiso para autenticarse y conectarse a la VPN.

Conectar pfSense con la base de datos de Active Directory

*Si no menciono algún apartado de configuración es porque hay que dejarlo con los valores que nos indica pfSense

Para conectar pfSense con Active Directory vamos a: System > User Managre > Authentication Servers > Add

  • Descriptive name: recomiendo escribir el dominio, ejemplo: ad.labsmac.es
  • Type: LDAP
  • Hostname or IP address: la dirección IP o nombre del DC, ejemplo: 192.168.1.100
  • Search scope: Define el nivel de profundidad de las búsquedas en Active Directory. Se recomienda utilizar Entire Subtree para incluir todos los usuarios y grupos en todo el árbol jerárquico desde la Base DN especificado.
  • Base DN: Aquí indicamos el punto de partida desde donde empezarán las búsquedas, ejemplo:
DC=ad,DC=labsmac,DC=es
  • Authentication containers (obligatorio): permite afinar aún más la búsqueda, limitándola a uno o más contenedores, ejemplo:
OU=USUARIOS,OU=NAVARRA,OU=ESPAÑA,OU=LABSMAC,DC=ad,DC=labsmac,DC=es
  • Extended query (opcional): Si deseas realizar consultas más avanzadas, activa esta opción. Por ejemplo, si en un contenedor (OU) tienes varios usuarios y solo quieres permitir el acceso a un grupo específico, marca la casilla y establece la consulta en Query.
  • Query: En este campo, puedes filtrar usuarios por grupo usando el atributo memberOf. Por ejemplo:
memberOf=CN=GrupoVPN,OU=VPN-REMOTO,OU=USUARIOS,OU=NAVARRA,OU=ESPAÑA,OU=LABSMAC,DC=ad,DC=labsmac,DC=es
  • Bind anonymous: Desmarcamos!!
  • Bind credentials: Especifica el DN del usuario (como bindVPN) que pfSense usará para conectarse al AD, junto con su contraseña.
CN=bindVPN,OU=VPN-REMOTO,OU=USUARIOS,OU=NAVARRA,OU=ESPAÑA,OU=LABSMAC,DC=ad,DC=labsmac,DC=es
  • User naming attribute: Especifica el atributo que pfSense usará para comparar lo que introduce el usuario con lo almacenado en la base de datos de AD. Debemos usar samAccountName, este es el atributo en AD que almacena el nombre de inicio de sesión de un usuario
  • Group naming attribute: Es el atributo utilizado para identificar un grupo, dejamos CN
  • Group member attribute: Es el atributo de un usuario que indica que es miembro de un grupo. Podemos utilizar el valor por defecto, memberOf.

Finalmente guardamos y ahora toca hacer pruebas

Pruebas de conexión entre pfSense y AD

Antes de proceder con la configuración de la VPN, es fundamental asegurarse de que la autenticación a través de Active Directory esté funcionando correctamente. Para realizar estas pruebas en pfSense, sigue estos pasos:

  1. Ve a Diagnostics > Authentication en el panel de pfSense.
  2. Ingresa las credenciales de un usuario de AD que debería tener acceso.
  3. Si la configuración es correcta, el sistema validará el usuario y mostrará un mensaje de éxito. Solo los usuarios con los permisos adecuados podrán autenticarse correctamente.

En este proceso, pfSense realiza consultas a la base de datos de AD a través del usuario especificado (por ejemplo, bindVPN), verificando quién tiene acceso autorizado.

Esto garantiza que pfSense se esté comunicando bien con el Active Directory antes de montar la VPN.

Desplegar CA, Certificado y VPN

No volveré a explicar cómo desplegar la VPN, ya que ese proceso está cubierto en detalle en el siguiente post, donde profundizo en la configuración de OpenVPN. Ahí encontrarás una guía paso a paso centrada exclusivamente en el despliegue de OpenVPN, incluyendo la creación de la Autoridad Certificadora (CA), los certificados necesarios y la configuración completa de la VPN.

Solo tienes que tener en cuenta lo siguiente…

  • Server mode: Aquí seleccionamos cómo se llevará a cabo la autenticación y conexión de los clientes.
    • Remote Access (User Auth), aquí solo se usa la contraseña. Todo el mundo usa el mismo archivo ovpn.
    • Remote Acess (SSL/TLS + User Auth), aquí cada cliente tiene su certificado y contraseña de AD, el certificado se crea desde el apartado de Certificates de pfSense. Cada usuario tiene su archivo ovpn.

Dependerá de tus necesidades cual elegir, lo dejo a tu elección.

  • Backend for authentication: En este apartado, seleccionamos el servidor de autenticación que configuramos en el paso anterior. En mi caso, el servidor se llama ad.labsmac.es.

Al seleccionar este servidor, la VPN utilizará los usuarios de Active Directory para la autenticación, permitiendo que solo los usuarios con permisos en AD puedan conectarse.

Mencionado estos puntos, la VPN debería funcionar, solo tienes que enviar los archivos de VPN a los clientes y hacer pruebas.

Conclusión

Integrar OpenVPN con Active Directory en pfSense optimiza la gestión de conexiones remotas, permitiendo el uso de credenciales existentes sin la necesidad de crear cuentas adicionales. Esta solución no solo mejora la seguridad al centralizar la autenticación, sino que también reduce la carga administrativa en la gestión de usuarios.

Espero que les haya gustado el post, nos vemos en el siguiente!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.