[Openvpn] pb sur auth-user-pass-verify

Fermé
snub Messages postés 3 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 23 mars 2007 - 15 janv. 2007 à 11:06
 rarenlys - 16 nov. 2008 à 00:55
Bonjour,



J'aimeria savoir si quelqu'un a essayé de faire un vpn implémentant une authentification login/pwd en plus de ses certificats, ou une athentificaiton LDAP(même si je doute d'avoir beaucoup de réponse sur ce sujet).

J'ai essayé de le faire mais je suis bloqué.

Mon architecture :


client: windows
serveur :linux Fedora core 6
tunnel vpn niveau 3 (tun)

j'en appel donc à votre génie. Cependant je ne vais pas vous laisser en plan sans rien vous dire, je vais faire une sorte de "tuto" sans en etre un.

Tous d'abord il existe plusieurs façon de faire de l'authentificaiton sur un vpn autre que par les certificats (cf man openvpn et howto)


Using Script Plugins
Using Shared Object or DLL Plugins
Using username/password authentication as the only form of client authentication


C'est donc cette dernière solution que j'essaie de mettre en place.
Pour cela que faut-il faire?

Côté Client:
il faut rajouter la ligne auth-user-pass dans le fichier de conf et c'est tous !! (du moins je pense ^^)

Côté Serveur:

D'abord il faut rajouter les lignes:


client-cert-not-required
username-as-common-name

puis rajouter :


auth-user-pass-verify <script> via... (vai-env ou via-file)

Et c'est tous pour le fichier de conf.

Maintenant quoi mettre dans notre script?
Pour cela openvpn mets à notre disposition des scripts déja fait.
Donc dans un premier temps on va utiliser le srcipt ucn.pl, un script un PERL qui vérifi si le username = le common name.


Citation :


#!/usr/bin/perl -t

# OpenVPN --auth-user-pass-verify script.
# Only authenticate if username equals common_name.
# In OpenVPN config file:
# auth-user-pass-verify ./ucn.pl via-env

$username = $ENV{'username'};
$common_name = $ENV{'common_name'};

exit !(length($username) > 0 && length($common_name) > 0 && $username eq $common_name);







ce script utilise donc la méthode via-env de l'option auth-user-pass-verify
donc comment dit en commentaire dans le script la ligne à mettre dans son fichier de conf est : auth-user-pass-verify ./ucn.pl via-env

Voila c'est ici que moi je bloque.

au lancement du client windows une fenêtre s'ouvre et demande à l'utilisateur de rentrer un login et un pass. Dans le cas présant il faut rentrer le common_name comme login le pass moi je le laisse vide (peut etre une source d'erreur????)

Coté serveur, au lancement d'openvpn tous va bien, jusqu'a la demande de connexion du client, là après initialisation et la vérification du certificat j'ai un beau message dans les logs me disant tous simplement Failed to execute "le chemin de mon script".


Voila donc mon explication s'arrete ici.
Cela fait plus d'une semaine que je trifouille le net pour trouver la solution mais je ne trouve aucune solution.

Si quelqu'un à déja mis en place ce system d'authentification, j'aimerai bien qu'il m'explique ce qu'il cloche.
Ce n'est pas les droits car sur mon script je lui est mits un petit RWX RWX RWX comme ça je suis sur que l'on puisse executer mon script.
Le chemin pour acceder à mon script c'est pareil le reste du monde peut y accéder.

Je vous remercie d'avance pour votre aide

Snub

4 réponses

Bonjour,

si tu as mis "./" je suppose que ton script est dans le meme répertoire que openVPN.

Je te conseille soit :
-d'enlever le ./
-mettre le chemin complet du script
0
snub Messages postés 3 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 23 mars 2007 1
29 janv. 2007 à 14:23
oui j'ai déja testé avec le chemin complet, puis en recopiant le fichier dans d'autre dossier. Mais ça ne change rien les droits de ce fichiers sont 777 donc ya pas de soucis de droit normalement.
0
Bonjour,

As-tu la solution au probleme ?
je suis --fortement-- interessé !

Merci

Nicolas
0
En fait voici la syntaxe exacte :

client-cert-not-required
username-as-common-name
auth-user-pass-verify "/chemin/ucn.pl" via-env

Avec ca ca devrait être bon!

@+

Julien
0
Ajoute la ligne
script-secutiry 2 (si tu utilise la méthode via-file)

ou

script-security 3 (si tu utilises via-env)
0