Wie authentifiziere ich mich mit LDAP über die Befehlszeile?

35

Der LDAP-Server wird unter Solaris gehostet. Der Client ist CentOS. OpenLDAP / NSLCD / SSH-Authentifizierung über LDAP funktioniert einwandfrei, aber ich kann die ldapsearch-Befehle nicht zum Debuggen von LDAP-Problemen verwenden.

[root@tst-01 ~]# ldapsearch
SASL/EXTERNAL authentication started
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
        additional info: SASL(-4): no mechanism available:
[root@tst-01 ~]# cat /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://ldap1.tst.domain.tld ldap://ldap2.tst.domain.tld
BASE dc=tst,dc=domain,dc=tld
[root@tst-01 ~]# ls -al /etc/openldap/cacerts
total 12
drwxr-xr-x. 2 root root 4096 Jun  6 10:31 .
drwxr-xr-x. 3 root root 4096 Jun 10 10:12 ..
-rw-r--r--. 1 root root  895 Jun  6 10:01 cacert.pem
lrwxrwxrwx. 1 root root   10 Jun  6 10:31 cf848aa4.0 -> cacert.pem
[root@tst-01 ~]#

Ich habe versucht, mich mit einem Zertifikat über ldapsearch zu authentifizieren, wobei ich /etc/openldap/cacerts/cacert.pem als Parameter angegeben habe, aber es hat dieses Zertifikat für die Authentifizierung nicht akzeptiert.

ujjain
quelle

Antworten:

60

Möglicherweise möchten Sie SASL deaktivieren und die einfache Authentifizierung mit der Option "-x" verwenden. Zum Beispiel eine Suche nach einem bestimmten Benutzer

ldapsearch -x -D "uid=search-user,ou=People,dc=example,dc=com" \
           -W -H ldap://ldap.example.com -b "ou=People,dc=example,dc=com" \
           -s sub 'uid=test-user'

Findet "Test-User" von

  • -D - Bindungsbenutzer "Suchbenutzer" verwenden
  • -W - Passwort eingeben
  • -H - URL des LDAP-Servers. Nicht-SSL in diesem Fall; Verwenden Sie "ldaps: //" für SSL
  • -b - Die Suchbasis
  • -s - Suchbereich - dh Basis für Basis des Baums, eine für eine Ebene nach unten und eine für eine rekursive Suche nach unten im Baum (kann eine Weile dauern)
  • Schließlich der Suchfilter als Nichtoptionsargument. In diesem Fall werden wir nach der Benutzer-ID von "test-user" suchen.
Fred Clausen
quelle
2
Fred hat es richtig gemacht, außer dass Sie nicht die /etc/openldap/ldap.confSuchbasis oder den Host angeben müssen, wenn Sie mit den hier angegebenen zufrieden sind. Das sollte wahrscheinlich funktionieren: ldapsearch -x -D "<bind dn>" -W <query >
Jason Tan
Wie geben wir den Benutzernamen für ldap login an
myloginid
Es kommt darauf an, was Sie mit "Benutzername" meinen. Der Bind-DN ​​(zur Authentifizierung, um die Abfrage tatsächlich auszuführen) wird durch das Argument -D angegeben. Die eigentliche Suche, in diesem Beispiel nach einem Benutzerdatensatz, wird im Filter als letztes Argument angegeben.
Fred Clausen
1
Danke vielmals! Du hast mein Leben gerettet :)
Marslo
6

Scheint, dass ich die gleiche Frage stelle: https://stackoverflow.com/questions/27571558/how-was-authentication-built-on-ldap

Siehe http://thecarlhall.wordpress.com/2011/01/04/ldap-authentication-authorization-dissected-and-digested/ :

  • Stellen Sie eine Verbindung zum LDAP-Server her.
  • Binden Sie als der Anwendungsbenutzer.
  • Suchen Sie nach dem DN (Distinguished Name) des zu authentifizierenden Benutzers.
  • Binden Sie als zu authentifizierender Benutzer unter Verwendung von DN ab Schritt 3.

Das kann zusammengefasst werden als (Experiment in der Kommandozeile):

$ ldapsearch -x -h ldap.company.com -s sub -b 'dc=europe,dc=com' "uid=XYZ"
....
dn: uid=XYZ,dc=sales,dc=europe,dc=com
...
$ ldapsearch -W -h ldap.company.com -D 'uid=XYZ,dc=sales,dc=europe,dc=com' \
    -s sub -b 'dc=europe,dc=com' "uid=XYZ"
gavenkoa
quelle
1

Hinweis: Wenn Sie Ihren vollständigen Bindungs-DN nicht kennen, können Sie auch einfach Ihren normalen Benutzernamen oder Ihre E-Mail-Adresse mit verwenden -U

ldapsearch -v -h contoso.com -U [email protected] -w 'MY_PASSWORD' -b 'DC=contoso,DC=com' '(objectClass=computer)'
turiyag
quelle
0

Wir verwenden FreeIPA / IDM, und ich konnte mich anhand der folgenden Kriterien authentifizieren:

$ ldapsearch -h idm-01a.somednsdom.com \
    -D 'uid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com' \
    -o ldif-wrap=no \
    -b 'cn=accounts,dc=somedcdom,dc=com' \
    -W uid=<my username>
Erläuterung
  • Dadurch werden alle Details rund um das zurückgegeben uid=<my username>
  • uid=<my username> ist der Filter (RFC 4515-kompatibler LDAP-Suchfilter)
  • Das uid=<my username>ist die Abfrage / der Filter, die / der durchgeführt werden soll
  • o ldif-wrap=no Deaktiviert das Umbrechen von Ergebnissen
  • Die -Werzwungene ldapsearchAbfrage des Kennworts für den definierten Bindungsnamenuid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com
  • Wenn Sie zur Eingabe des Kennworts für diesen Benutzer aufgefordert werden, sieht die Eingabeaufforderung folgendermaßen aus:

    Enter LDAP Password:
    
Referenzen

Als Referenz aus der ldapsearchManpage & CLI-Hilfe:

   -D binddn
          Use the Distinguished Name binddn to bind to the LDAP directory.  
          For SASL binds, the server is expected to ignore this value.

   -b searchbase
          Use searchbase as the starting point for the search instead of the 
          default.

   -W     Prompt for simple authentication.  This is used instead of specifying 
          the password on the command line.

  -o <opt>[=<optparam] general options
             nettimeout=<timeout> (in seconds, or "none" or "max")
             ldif-wrap=<width> (in columns, or "no" for no wrapping)

Vollständiges Beispiel

$ ldapsearch -h idm-01a.somednsdom.com \
    -D 'uid=joeuser,cn=users,cn=accounts,dc=somedcdom,dc=com' \
    -o ldif-wrap=no \
    -b 'cn=accounts,dc=somedcdom,dc=com' \
    -W uid=joeuser

# extended LDIF
#
# LDAPv3
# base <cn=accounts,dc=somedcdom,dc=com> with scope subtree
# filter: uid=joeuser
# requesting: ALL
#

# joeuser, users, accounts, somedcdom.com
dn: uid=joeuser,cn=users,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=sysadmin,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=sudorules,cn=sudo,dc=somedcdom,dc=com
memberOf: cn=eng-systems,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=hbac,dc=somedcdom,dc=com
memberOf: cn=admins,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=sudorules,cn=sudo,dc=somedcdom,dc=com
memberOf: cn=User Administrator,cn=roles,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=User Administrators,cn=privileges,cn=pbac,dc=somedcdom,dc=com
memberOf: cn=System: Add User to default group,cn=permissions,cn=pbac,dc=somedcdom,dc=com
...
...
krbLoginFailedCount: 0
krbLastFailedAuth: 20190320223946Z
loginShell: /bin/bash
krbExtraData:: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
krbPasswordExpiration: 20190829144625Z
krbLastPwdChange: 20190302144625Z
krbLastAdminUnlock: 20190111080021Z
ipaSshPubKey: ssh-rsa A....XXXXXXXXXXXX...jelByox0PM5Q== [email protected]
mepManagedEntry: cn=joeuser,cn=groups,cn=accounts,dc=somedcdom,dc=com
displayName: Joe User
uid: joeuser
krbCanonicalName: [email protected]
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
objectClass: inetuser
objectClass: posixaccount
objectClass: krbprincipalaux
objectClass: krbticketpolicyaux
objectClass: ipaobject
objectClass: ipasshuser
objectClass: ipaSshGroupOfPubKeys
objectClass: mepOriginEntry
initials: JU
gecos: Joe User
sn: Mingolelli
homeDirectory: /home/joeuser
mail: [email protected]
krbPrincipalName: [email protected]
givenName: Joe
cn: Joe User
ipaUniqueID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
uidNumber: 900000000
gidNumber: 900000000
krbPwdPolicyReference: cn=admins,cn=SOMEDCDOM.COM,cn=kerberos,dc=somedcdom,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
slm
quelle