01 Jan 0001, 00:00

Share

Authentification OpenVPN contre un domaine Active Directory

Une source

Installation du paquet pour authentification LDAP

sudo apt install openvpn-auth-ldap

Modifications aux fichiers de configuration du serveur

server.conf:

client-cert-not-required

# Auth LDP (Active Directory)
plugin /usr/lib/openvpn/openvpn-auth-ldap.so "/etc/openvpn/auth/auth-AD.conf"

Créer le fichier d’authentification pour qu’OpenVPN puisse aller lire l’annuaire

sudo cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/auth-AD.conf

En voici une version minimale :

<LDAP>
        # LDAP server URL
        URL             ldap://10.0.0.10:3268
        BindDN          "openvpnbinduser@mycompany.com"
        Password        mysweetsecretpassword123
        Timeout         15
        TLSEnable       no
        FollowReferrals yes
</LDAP>

<Authorization>
        BaseDN          "DC=paris,DC=myCompany,DC=com"
        # User Search Filter
        SearchFilter "(sAMAccountName=%u)"
        # Require Group Membership
        RequireGroup    true
        <Group>
                # BaseDN must be the DN of the group containing VPN-allowed users
                BaseDN          "CN=VPN Users,OU=Groups,OU=IT,DC=paris,DC=myCompany,DC=com"
                SearchFilter    "(objectClass=group)"
                MemberAttribute Member
        </Group>
</Authorization>

Il est possible de spécifier la nécessité d’appartenance à un groupe directement dans le champ SearchFilter, comme ceci :

        SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN Users,OU=Groups,OU=IT,DC=paris,DC=myCompany,DC=com))"
        RequireGroup    false

Une de mes sources

Modifications au fichier client

Supprimer les lignes fournissant le certificat/clé du client.
Ajouter une ligne contenant auth-user-pass pour demander les identifiants à la connexion.

Débuggage serveur :

En cas d’erreur lors de la connexion d’un client, on aura le message :

PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib/openvpn/openvpn-auth-ldap.so
Sun Mar 14 11:54:21 2021 82.64.166.200:1194 TLS Auth Error: Auth Username/Password verification failed for peer

L’erreur peut venir de la connexion du serveur VPN à l’AD (l’identifiant client est donc impossible à vérifier), ou bien d’un identifiant incorrect (le couple user/pass est incorrect, ou bien l’identifiant n’existe pas).

Dans les logs, si on a le message :

LDAP bind failed: Invalid credentials (80090308: LdapErr: DSID-0C090453, comment: AcceptSecurityContext error, data 52e, v3839)
Unable to bind as user@domain.com

C’est que l’identifiant de bind (l’identifiant utilisé par le serveur VPN pour se connecter sur l’AD) est incorrect.

Si on a :

LDAP user "myuser" was not found.

c’est que l’identifiant client est invalide

Si on a :

LDAP bind failed: Invalid credentials
Incorrect password supplied for LDAP DN "CN=myUser,CN=Users,DC=paris,DC=mycompany,DC=com"

c’est que l’identifiant est OK, mais le mot de passe invalide