Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

OpenBSD, frontale SSH et authentification sur LDAP

6 réponses
Avatar
Deepthroat
Bonjour,

je suis en train de revoir notre réseau à mon travail et nous passons
toutes les machines en classe privée. Cependant historiquement, les
utilisateurs ont l'habitude de se connecter depuis l'exterieur sur leur
machines en SSH, et j'ai donc pensé à une frontale ssh. Sécurité
maximum, pourquoi pas openbsd.

J'aimerai utiliser le ldap deja present dans notre structure pour
l'authentification sur la frontale, mais je n'ai pas trouvé comment
interfacer openssh et l'auth ldap. Habitué à Linux je m'etais tourné
vers PAM, mais d'apres mes lectures, ca ne marche pas sous openbsd. Je
suis bien tombé sur des authentifications via radius ou kerberos mais ca
ne me convient pas tres bien.

Existe t'il un moyen de faire fonctionner tout ca ?

Merci

6 réponses

Avatar
Bruno Rohee
On 2005-04-12, Deepthroat wrote:
Bonjour,

je suis en train de revoir notre réseau à mon travail et nous passons
toutes les machines en classe privée. Cependant historiquement, les
utilisateurs ont l'habitude de se connecter depuis l'exterieur sur leur
machines en SSH, et j'ai donc pensé à une frontale ssh. Sécurité
maximum, pourquoi pas openbsd.

J'aimerai utiliser le ldap deja present dans notre structure pour
l'authentification sur la frontale, mais je n'ai pas trouvé comment
interfacer openssh et l'auth ldap. Habitué à Linux je m'etais tourné
vers PAM, mais d'apres mes lectures, ca ne marche pas sous openbsd. Je
suis bien tombé sur des authentifications via radius ou kerberos mais ca
ne me convient pas tres bien.

Existe t'il un moyen de faire fonctionner tout ca ?


Oui. Sous OpenBSD l'équivalent fonctionnel de PAM est login.conf(5)
et tu trouve dans l'arbre des ports login_ldap (/usr/ports/sysutils/login_ldap)
qui devrait faire tout ce que tu veux. Ou directement un package pour
ton architecture préférée...

Avatar
Deepthroat

Oui. Sous OpenBSD l'équivalent fonctionnel de PAM est login.conf(5)
et tu trouve dans l'arbre des ports login_ldap (/usr/ports/sysutils/login_ldap)
qui devrait faire tout ce que tu veux. Ou directement un package pour
ton architecture préférée...


Sur tes conseils, j'ai donc essayé login_ldap, mais ca ne marche pas et
je ne comprends pas pourquoi. J'ai configuré login.conf comme cela :

ldap:
:auth=-ldap:
:x-ldap-server=IP-DU-SERVER:
:x-ldap-port89:
:x-ldap-basedn=DN-DE-RECHERCHE:
:x-ldap-binddn=CN-COMPTE:
:x-ldap-bindpw=PASSWD:
:x-ldap-filter=(&(objectClass=posixAccount)(uid=%u)):

Quand je lance login_-ldap a la main il me sort :

#/usr/local/libexec/auth/login_-ldap -d -s login LOGIN ldap; echo $?
Password:
uri = ldap://IP-DU-SERVEUR:389/
filter = (&(objectClass=posixAccount)(uid=LOGIN))
search result 0x0
reject
0


J'ai essayé de sniffé avec ettercap, la connexion avec le serveur LDAP
est tres courte et pratiquement sans contenu, l'auth avec le binddn
n'apparait meme pas.

Est-ce que quelqu'un ici a deja reussi a faire marcher login_ldap ?

Le meme type d'authentification avec une mandrake et pam_ldap marche
tres bien, et avec le meme serveur LDAP et les memes parametres.

Avatar
F. Senault

Bon, je n'utilise pas OpenBSD et login_ldap, mais FreeBSD, nss_ldap,
pam_ldap and co. Malgré tout, quelques conseils et questions pour
rechercher la source du problème...

Quand je lance login_-ldap a la main il me sort :

#/usr/local/libexec/auth/login_-ldap -d -s login LOGIN ldap; echo $?
Password:
uri = ldap://IP-DU-SERVEUR:389/
filter = (&(objectClass=posixAccount)(uid=LOGIN))


Si tu fais la recherche avec ldapsearch, est-ce que tu trouves ?

Est-ce que tu sais si la recherche à une portée de BASE ou de SUB ?
Sais-tu où elle est ancrée ?

search result 0x0


En gros, dans un premier temps, le login-ldap semble chercher s'il y a
un objet de type posixAccount avec pour uid ton login. Il ne fait pas
encore de bind.

Il me semble qu'openldap donne plus d'infos dans le log du serveur
lui-même ; avec loglevel 768, chez moi, j'ai le scope, la chaîne de
recherche, la base, et les résultats...

Par exemple, un login Samba donne :

| Apr 13 16:28:25 vodka slapd[455]: connY43 op=2 SRCH base="ou=Liege,dc=mims,dc¾" scope=2
| deref=0 filter="(&(uid=lg)(objectClass=sambaSamAccount))"
| Apr 13 16:28:25 vodka slapd[455]: connY43 op=2 SRCH attr=uid uidNumber gidNumber homeDirectory
| sambaPwdLastSet sambaPwdCanChange sambaPwdMustChange sambaLogonTime sambaLogoffTime
| sambaKickoffTime cn displayName sambaHomeDrive sambaHomePath sambaLogonScript
| sambaProfilePath description sambaUserWorkstations sambaSID sambaPrimaryGroupSID
| sambaLMPassword sambaNTPassword sambaDomainName objectClass sambaAcctFlags
| sambaMungedDial sambaBadPasswordCount sambaBadPasswordTime sambaPasswordHistory
| modifyTimestamp sambaLogonHours modifyTimestamp
| Apr 13 16:28:25 vodka slapd[455]: connY43 op=2 ENTRY dn="cn=lg,ou=Users,ou=Liege,dc=mims,dc¾"
| Apr 13 16:28:25 vodka slapd[455]: connY43 op=2 SEARCH RESULT tag1 err=0 nentries=1 text
(Si tu as des centaines d'utilisateurs, à ne pas laisser trop longtemps,
évidemment... :) )

Fred
--
True multitasking is being able to type and pet the cat in your lap at
the same time. (Steve McAndrewSmith in the SDM)

Avatar
Deepthroat

#/usr/local/libexec/auth/login_-ldap -d -s login LOGIN ldap; echo $?
Password:
uri = ldap://IP-DU-SERVEUR:389/
filter = (&(objectClass=posixAccount)(uid=LOGIN))




Si tu fais la recherche avec ldapsearch, est-ce que tu trouves ?


Oui, ldapsearch me renvoie bien les bons enregistrements.

Est-ce que tu sais si la recherche à une portée de BASE ou de SUB ?
Sais-tu où elle est ancrée ?



La recherche doit se faire dans tout l'arbre, j'ai essayé avec
x-ldap-uscope=subtree mais ca fonctionne pas mieux

search result 0x0


Il me semble qu'openldap donne plus d'infos dans le log du serveur
lui-même ; avec loglevel 768, chez moi, j'ai le scope, la chaîne de
recherche, la base, et les résultats...


En fait je n'ai pas acces aux logs du slapd, c'est pour ca que je
m'occupe en sniffant les paquets. Ettercap me donne uniqement ce paquet
la quand je fais un login_-ldap a la main :



17:37:47 IP-SERVEUR:389 --> IP-OBSD:43607 | seq 86827a9c ack 2aec5c0e |
flags SA |


17:37:47 IP-SERVEUR:389 --> IP-OBSD:43607 | seq 86827a9d ack 2aec5c55 |
flags A |


17:37:47 IP-SERVEUR:389 --> IP-OBSD:43607 | seq 86827a9d ack 2aec5c55 |
flags AP |

0000: 300c 0201 0161 070a 0100 0400 0400 0....a........


17:37:47 IP-SERVEUR:389 --> IP-OBSD:43607 | seq 86827aab ack 2aec5cb5 |
flags AP |

0000: 300c 0201 0265 070a 0100 0400 0400 0....e........


17:37:47 IP-SERVEUR:389 --> IP-OBSD:43607 | seq 86827ab9 ack 2aec5cbd |
flags FA |

C'est maigre !!


Avatar
F. Senault


Est-ce que tu sais si la recherche à une portée de BASE ou de SUB ?
Sais-tu où elle est ancrée ?


La recherche doit se faire dans tout l'arbre, j'ai essayé avec
x-ldap-uscope=subtree mais ca fonctionne pas mieux


Pourtant, ça devrait rester, ça. Par défaut, souvent, les recherches ne
se font pas en subtree AFAIK. A vérifier, peut-être.

Il me semble qu'openldap donne plus d'infos dans le log du serveur
lui-même ; avec loglevel 768, chez moi, j'ai le scope, la chaîne de
recherche, la base, et les résultats...


En fait je n'ai pas acces aux logs du slapd,


Ah.

c'est pour ca que je
m'occupe en sniffant les paquets. Ettercap me donne uniqement ce paquet
la quand je fais un login_-ldap a la main :
/Knitz/

C'est maigre !!


A tel point que ça me semble douteux. Puisque ça ne semble pas être du
sldap, tu devrais peut-être essayer un autre sniffer ? Avec assez
d'options, tcpdump sort souvent pas mal d'infos.

Fred
--
I wake up in the morning And I raise my weary head I've got an old
coat for a pillow And the earth was last night's bed I don't know
where I'm going Only God knows where I've been I'm a devil on the run
A six gun lover A candle in the wind (Bon Jovi, Blaze of Glory)


Avatar
Deepthroat

Existe t'il un moyen de faire fonctionner tout ca ?



C'etait juste pour dire, qu'en fait openBSD+login_ldap ca marche tres
bien. J'avais du merder en oubliant des cap_mkdb.