GNU/Linux >> Tutoriales Linux >  >> Panels >> OpenVPN

Configurar la autenticación basada en LDAP de OpenVPN

En esta guía, vamos a aprender cómo configurar la autenticación basada en LDAP de OpenVPN. La identificación y autenticación de los usuarios suele ser el primer paso para implementar el control de acceso. El servidor OpenVPN admite múltiples protocolos de autenticación y, por lo tanto, se puede configurar para obtener información de conexión del cliente desde un servidor LDAP y usar esa información como base para autenticar al cliente además del uso de certificados y claves del cliente.

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

OpenVPN
  1. Configurar el cliente LDAP en Ubuntu 20.04 - ¿Guía paso a paso?

  2. Cómo configurar la omisión de autenticación SMTP en SmarterMail

  3. Instalar y configurar el cliente OpenVPN en Rocky Linux 8

  4. Configure OpenVPN para solicitar credenciales al iniciar sesión en sistemas Windows

  5. Instale y configure el cliente OpenVPN en CentOS 8/Ubuntu 18.04

Cómo instalar y configurar OpenVPN en OpenSUSE Leap 42.1

Cómo configurar OpenVPN en Ubuntu 16.04

Configurar la replicación multimaestro de OpenLDAP en Linux

Configurar el cliente LDAP en Ubuntu 16.04 / Debian 8

Cómo configurar el cliente LDAP en Ubuntu 20.04

Cómo instalar y configurar un servidor OpenVPN en Ubuntu 22.04