Además, con la autenticación OpenLDAP, se puede eliminar el problema de tener que generar certificados de cliente OpenVPN individuales para cada cliente que se conecte.
Aprenda cómo instalar y configurar el servidor OpenLDAP en CentOS 8 siguiendo el enlace a continuación;
Instalar y configurar OpenLDAP en CentOS 8
Configurar la autenticación basada en LDAP de OpenVPN
Instalar complemento OpenVPN para autenticación LDAP
Para configurar la autenticación basada en OpenVPN LDAP, debe instalar el complemento OpenVPN para la autenticación LDAP. El complemento se llama openvpn-auth-ldap
e implementa la autenticación de nombre de usuario/contraseña a través de LDAP para OpenVPN.
En CentOS 7, necesita repositorios EPEL para instalar el complemento;
yum install epel-release
yum install openvpn-auth-ldap
En sistemas Ubuntu;
apt install openvpn-auth-ldap
En CentOS 8, desafortunadamente, los repositorios de EPEL no proporcionan este paquete al momento de escribir este artículo.
En esta demostración, estamos ejecutando un servidor OpenVPN en el sistema CentOS 7.
Después de la instalación de openvpn-auth-ldap
paquete, ahora debería tener los módulos necesarios en /usr/lib64/openvpn
directorio.
Los módulos también se pueden encontrar en /usr/lib/openvpn
, directorio.
El paquete también instala el archivo de configuración de autenticación LDAP de OpenVPN, /etc/openvpn/auth/ldap.conf
.
En los sistemas Ubuntu, encontrará la configuración de autenticación de OpenVPN LDAP de muestra en;
/usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf
Configurar servidor OpenVPN para autenticación basada en LDAP
Una vez que tenga los complementos necesarios en su lugar, lo siguiente sería configurar el servidor OpenVPN para la autenticación basada en LDAP.
Abra el archivo de configuración de autenticación basada en OpenVPN LDAP y defina los detalles de su servidor OpenLDAP;
Cree una copia de seguridad de la configuración.
cp /etc/openvpn/auth/ldap.{conf,.old}
Si el directorio/archivo no existe, simplemente cree uno;
mkdir /etc/openvpn/auth
Una vez hecho esto, copie el archivo de configuración de muestra;
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/ldap.conf
A continuación, abra el archivo de configuración para editarlo.
vim /etc/openvpn/auth/ldap.conf
A continuación se muestra nuestra configuración de muestra (sin líneas comentadas) según la configuración de nuestro servidor OpenLDAP. Haga sus configuraciones apropiadas;
<LDAP>
URL ldap://ldapmaster.kifarunix-demo.com
BindDN cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
Password [email protected]
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "(uid=%u)"
RequireGroup false
</Authorization>
En lo que respecta a la autenticación de grupo, si desea aplicar un control de acceso de OpenVPN más detallado, de modo que solo los usuarios específicos que se autentiquen a través de OpenLDAP puedan conectarse al servidor de OpenVPN, puede utilizar la membresía de grupo de OpenLDAP.
Por ejemplo, en nuestro servidor OpenLDAP, tenemos un grupo de solo VPN que contiene solo usuarios que pueden conectarse al servidor OpenVPN;
ldapsearch -Y ExTERNAL -H ldapi:/// -b ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com -LLL -Q "(cn=vpnonly)"
dn: cn=vpnonly,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: groupOfNames cn: vpnonly member: uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com member: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
Vea cómo crear una membresía de grupo OpenLDAP siguiendo la guía a continuación;
Cómo crear grupos de miembros de OpenLDAP
Por lo tanto, para habilitar la autenticación de membresía de grupo, establezca el valor de RequireGroup
opción para verdadero y editar la sección del grupo de modo que su configuración se vea como:
<LDAP>
URL ldap://ldapmaster.kifarunix-demo.com
BindDN cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
Password [email protected]
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "(uid=%u)"
RequireGroup true
<Group>
BaseDN "ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "memberOf=cn=vpnonly,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
MemberAttribute uniqueMember
</Group>
</Authorization>
En este caso, solo el usuario koromicha y johndoe puede conectarse al servidor OpenVPN.
Guarde y salga de la configuración después de realizar los cambios apropiados.
A continuación, configure el servidor OpenVPN para usar OpenLDAP para la autenticación agregando la siguiente línea al archivo de configuración del servidor OpenVPN.
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Simplemente puede agregar esta línea al archivo de configuración del servidor OpenVPN de la siguiente manera:
echo "plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf" >> /etc/openvpn/server/server.conf
Asegúrese de establecer la ruta correcta al módulo. Por ejemplo, en Ubuntu 18.04/20.04, la ruta es /usr/lib/openvpn/openvpn-auth-ldap.so
.
Por lo tanto, la línea se vería así:
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Habilitar la autenticación de nombre de usuario/contraseña del cliente
A continuación, edite el archivo de configuración del cliente para incluir el auth-user-pass directiva para habilitar el método de autenticación de nombre de usuario/contraseña.
Por ejemplo, este es nuestro archivo de configuración de cliente de muestra basado en la configuración de nuestro servidor OpenVPN.
client tls-client pull dev tun proto udp remote 192.168.2.132 1194 resolv-retry infinite nobind #user nobody #group nogroup persist-key persist-tun key-direction 1 remote-cert-tls server comp-lzo verb 3 auth-nocache dhcp-option DNS 8.8.8.8 dhcp-option DNS 10.8.0.1 auth SHA512 auth-user-pass tls-auth /home/johndoe/ta-key ca /home/johndoe/ca.crt cert /home/johndoe/johndoe.crt key /home/johndoe/johndoe.key
Reinicie el servicio del servidor OpenVPN;
systemctl restart [email protected]
Verificar la autenticación LDAP del cliente OpenVPN
Nuestra configuración ya está lista. Para verificar que todo está bien, inicie la conexión OpenVPN en el cliente;
sudo openvpn johndoe.ovpn
Sat Apr 18 08:50:11 2020 OpenVPN 2.4.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov 1 2019 Sat Apr 18 08:50:11 2020 library versions: OpenSSL 1.1.1 FIPS 11 Sep 2018, LZO 2.08 Enter Auth Username: johndoe Enter Auth Password: ************* ... Sat Apr 18 08:50:26 2020 /sbin/ip addr add dev tun0 10.8.0.60/24 broadcast 10.8.0.255 Sat Apr 18 08:50:26 2020 /sbin/ip route add 192.168.2.132/32 via 10.0.2.2 Sat Apr 18 08:50:26 2020 /sbin/ip route add 0.0.0.0/1 via 10.8.0.1 Sat Apr 18 08:50:26 2020 /sbin/ip route add 128.0.0.0/1 via 10.8.0.1 Sat Apr 18 08:50:26 2020 Initialization Sequence Completed
Si la autenticación falla;
... Sat Apr 18 08:53:36 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Apr 18 08:53:36 2020 AUTH: Received control message: AUTH_FAILED Sat Apr 18 08:53:36 2020 SIGTERM[soft,auth-failure] received, process exiting
En el servidor OpenVPN, verá una línea de este tipo en los registros;
tail -f /var/log/openvpn/openvpn.log
... 192.168.56.1:53489 [johndoe] Peer Connection Initiated with [AF_INET]192.168.56.1:53489 johndoe/192.168.56.1:53489 OPTIONS IMPORT: reading client specific options from: /etc/openvpn/ccd/johndoe johndoe/192.168.56.1:53489 PLUGIN_CALL: POST /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so/PLUGIN_CLIENT_CONNECT status=0 johndoe/192.168.56.1:53489 OPTIONS IMPORT: reading client specific options from: /tmp/openvpn_cc_565148162b7cd88618c8c5e6efba7007.tmp johndoe/192.168.56.1:53489 MULTI: Learn: 10.8.0.60 -> johndoe/192.168.56.1:53489 johndoe/192.168.56.1:53489 MULTI: primary virtual IP for johndoe/192.168.56.1:53489: 10.8.0.60 johndoe/192.168.56.1:53489 PUSH: Received control message: 'PUSH_REQUEST'
Intente conectarse al servidor OpenVPN como janedoe
, que no está en el vpnonly
grupo. Esto fallará automáticamente.
sudo openvpn janedoe.ovpn
Sat Apr 18 10:00:05 2020 OpenVPN 2.4.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov 1 2019 Sat Apr 18 10:00:05 2020 library versions: OpenSSL 1.1.1 FIPS 11 Sep 2018, LZO 2.08 Enter Auth Username: janedoe Enter Auth Password: ************** ... Sat Apr 18 10:00:19 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Apr 18 10:00:19 2020 AUTH: Received control message: AUTH_FAILED Sat Apr 18 10:00:19 2020 SIGTERM[soft,auth-failure] received, process exiting
Estupendo. Ha configurado con éxito sus clientes OpenVPN para autenticarse a través del servidor OpenLDAP.
Eso marca el final de nuestra guía sobre cómo configurar la autenticación basada en LDAP de OpenVPN. Disfruta.
Tutoriales relacionados
Asigne direcciones IP estáticas para clientes OpenVPN
Conéctese a OpenVPN usando Network Manager en CentOS 8/Ubuntu 18.04
Configurar el servidor OpenVPN en CentOS 8
Configurar IPSEC VPN usando StrongSwan en Debian 10