Mit dem Befehl ldapsearch kann man LDAP-Abfragen an einen LDAP-Server stellen und damit Verzeichnisinformationen ermitteln. Da die meisten Active Directory keine anonyme Anfragen erlauben, benötigt man ein Dienstkonto im Active Directory, das die nötigen Rechte für die erforderlichen LDAP-Anfragen besitzt.
Der grundsätzliche Syntax einer LDAP-Abfrage mit ldapsearch lautet:
ldapsearch -x -D „USERNAME@ADDOMAIN“ -w „DIENSTKONTOPASSWORT“ -b „searchbase“ -H LDAPSERVERURL „FILTER“ PROPERTY1 PROPERTY2 PROPERTYN
-x = Use simple authentication instead of SASL
-D = Use the Distinguished Name binddn to bind to the LDAP directory
-w = Use passwd as the password for simple authentication
-b = Use searchbase as the starting point for the search instead of the default
-H = Specify URI(s) referring to the ldap server(s)
FILTER = Die eigentliche LDAP-Abfrage
PROPERTYX = Propertys der Objekte, die im Ergebnis angezeigt werden sollen
Beispiel:
ldapsearch -x -D „ldap@domain.local“ -w „badladappasswort“ -b „dc=domain,dc=local“ -H „ldaps://dc.domain.local:636“ „(sn=USERNAME)“ description dn
Obige Abfrage ermittelt die description und den dn des Accounts USERNAME.
Um bei ldapsearch nicht immer alle Parameter für die Verbindung angeben zu müssen, kann man in seinem Homeverzeichnis eine Datei namens .ldaprc anlegen.
#Beispielinhalt:
URI ldaps://dc.domain.local:636 #Liste mit LDAP Servern (Parameter -H)
BASE dc=domain,dc=local #Search Base DN (Parameter -b)
BINDDN ldap@domain.local #Dienstkonto für die LDAP Verbindung (Parameter -D)
TLS_CACERT /etc/ssl/certs/rootca.pem #CA Zertifikat der Root CA des DC SSL Zertifikats
Um nicht jedes Mal das Passwort für die Verbindung LDAP-Verbindung angeben zu müssen, kann man eine Datei mit dem Passwort erstellen und diese bei ldapsearch mit der Option -y angeben.
Die Passwortdatei muss man zwingend ohne Steuerzeichen erstellen. Dies gelingt z.B. mit dem Befehl echo und dem Parameter -n.
echo -n DIENSTKONTOPASSWORT > .ldappasswd
So sieht nun der verkürzte Syntax der ldapsearch Anfrage aus:
ldapsearch -x -y ./.ldappasswd „(sn=USERNAME)“ description dn