Authentification LDAP openvpn



  • Bonjour,

    Je travaille dans un milieu professionnel, nous sommes en train de migrer notre solution de firewall, vpn.
    J’ai un problème avec l’authentification ldap sur pfsense 2.4.4 Release-p3 pour mettre en place openvpn.

    Je veux que mes utilisateurs qui se connecterons via openvpn du pfsense soit authentifier par le ldap. En me basant sur ce tutoriel https://net-security.fr/system/openvpn-pfsense-part-2-lauthentification-ldap/

    Le firewall est en test, le règles sont en pass pour tout et je débute la configuration par l'authentification.

    Ce que j'ai fait :

    • Je suis allé dans : system/user Manager/ Authentification Servers

    • J’ai créé le serveur d’authentification comme demandé :
      Ldap, port 389, Entire Subtree, o=exemple.com

    • J’utilise le bouton (Select a container) pour choisir mon conteneur users.
      Le containers ressemble à: ou=users,l=exemple,o=exemple.com

    • Je mets l’utilisateur et le mot de passe dans bind crédentials, puis j’entre les attribute. :
      User naming attribute -> uid
      Group naming attribute -> cn
      Group member attribute -> member

    • Pour tester la configuration je vais dans system/user Manager/ Setting. J’obtiens :
      Attempting connection to Serveur_ldap OK
      Attempting bind to Serveur_ldap OK
      Attempting to fetch Organizational Units from Serveur_ldap OK

    Cela semble fonctionner.

    • Quand je vais sur Diagnostics / authentification et que je fais le test avec un utilisateur j’obtiens le message : Authentification failed.
    • Je vais voir les log du firewall => /diag_authentication.php: Search resulted in error: No such object

    La je sèche un peu.

    Ce que j'ai essayé :
    J’ai essayé de modifier les attributs, l’authentification container, la version du protocole, l’encodage, le username Alterations, l'extended query.
    Je me suis connecte en ssh sur le firewall et j’ai lancé la commande ldapsearch qui me retourne un résultat : ldapsearch -x -h ip_server -D "utilisateur droit lecture" -W -b "base dn"

    Question :
    Est-ce que l’un de vous serez ce qui se passe et comment je peux résoudre mon problème ?

    Merci d'avance



  • (Bon effort de présentation).

    Le lien initial est un lien qui décrit comment permettre une authentification des 'utilisateurs pfsense' dans un LDAP.

    Mais 'utilisateurs pfSense' ne veut peut-être pas dire 'utilisateurs openvpn' !? Autrement dit : est ce que OpenVpn identifie ses users depuis les 'utilisateurs pfsense'.

    Ce n'est pas certain ...
    Cela supposerait que les auteurs de pfSense ont adapté l'authentification d'OpenVpn à leur base utilisateurs fut-elle allongé d'un LDAP. Cela me semble pas forcément simple ...

    Ce qui fonctionne très facilement

    • créer une PKI avec Certificats
    • créer un serveur OpenVpn qui check les certificats fournis.
      (Si on revoke dans Certificats, le certificat révoqué ne fonctionne plus malgré une durée de validité encore longue, bien sûr)

    Perso, un certificat (éventuellement avec un mot de passe) me parait bien préférable à un compte user/mdp d'un LDAP (ou d'un AD). (Parce qu'un mdp ça se trouve et ça se donne ...)

    Et ce qui m'intéresserait serait même de faire du Two Factor Authentification ...

    Edit / en cherchant un peu dans le forum OpenVpn (International), on trouve assez vite un lien qui confirme mon gros doute sur cette méthode : le lien est dans la doc Netgate et parle d'authentifier depuis un AD les users OpenVpn. Je vois là un défaut de recherche : la doc Netgate est un départ, Les utilisateurs pfSense n'ont que très très peu d'intérêt !



  • Bonjour,

    Merci pour la réponse.

    En effet le but final est une authentification via login password et certificat.
    Je m'appuie sur différent tuto sur le net :

    Je pensai que cela serai une bonne méthode d'authentification. En effet l'utilisateur devrait passer par la validation d'un certificat et par l'authentification via un ldap.
    Sur les docs, il parle de AD, radius, je pensai faire la même chose avec un serveur ldap.

    Ou doit je monter un serveur radius en plus pour faire cela ?

    Du coup, je ne vois pas ce qui cloche sur le pfsense qui empêche de faire fonctionner l'authentification ldap. Pour apré aller gérer celle par certificat et coupler les deux.

    Je vais continuer à chercher.

    Cordialement



  • Mea culpa, le serveur OpenVpn de pfSense sait authentifier des users selon la base User de pfSense. De facto, si on permet d'avoir des users venant d'un LDAP (ou AD), on pourra valider des users dans OpenVPN.

    (Cela ne change pas ce que j'ai écris : je préfère une authentification selon des certificats à user/mdp car les gens se transmettent facilement cela !)

    Le lien 2 de votre dernier post montre comment ajouter des users depuis un LDAP, ok, bof.

    Le lien 1 du dernier post décrit bien plus précisément ce qu'il faut faire (et de 2 façons : Radius ou LDAP) en mode Certificats (ceux de System > Certs) plus user/mdp (ceux de pfSense, donc ceux de l'AD).

    Le terme utilisé est 'Two Factor Authentification. Cela me semble assez exagéré : je préfèrerai un vrai 2ième facteur de type clé (exemple Yubikey) ou smartsphone (via SMS ou application en mode One Time Password).

    Le lien 3 aurait du être votre point de départ : normal, la doc, toujours commencer par la doc, puis le forum ! En cherchant sur le forum international, on trouve ce lien ...



  • Merci pour les infos. En effet j'essaie de faire comme décrit dans les liens.

    Mon problème vient du faite que le pfsense ne semble pas retrouver mes utilisateurs dans mon ldap.
    Il y a une erreur php.

    Ne sachant pas d’où cela peut venir, je posais la question de savoir si quelqu'un avait une idée de résolution de mon problème ?

    Cordialement



  • 1 - "no such object" n'est pas une erreur PHP mais une erreur LDAP (error code 32) qui dit que ton DN ne match pas (probablement le baseDN de ton search)
    2 - une fois que tu auras résolu ce problème de DN, veille à configurer ton accès LDAP, si tu fais de l'authentification, sur le port 636, donc sur un flux encrypté car le protocole LDAP, sur le port 389, transmet les données, y compris le mot de passe lors du bind en base64, donc en clair ! C'est dommage si tu fais tous ces efforts pour empiler certificat + login/pwd de faire passer le pwd en clair :-)



  • Petit point supplémentaire: c'est triste mais le client LDAP de pfSense est fortement influencé par le fait que la grande majorité des serveurs LDAP est constituée de AD. du coup, ce client fait des suppositions sur le container pour virer la partie "domain component" s'il en trouve une, sans quoi il fait un merge avec le baseDN.
    Du coup, si to basedDN est "o=exemple" et ton conteneur user est "ou=user,o=exemple", tu devrais configurer celui-ci dans pfSense en tant que "ou=user" uniquement.


Log in to reply