Wie installiert und konfiguriert man OpenLDAP und phpLDAPadmin unter Ubuntu 20.04

LDAP ist ein Lightweight Directory Access Protocol, das für den Zugriff auf und die Verwaltung von verteilten Verzeichnissen über ein Internet-Protokoll verwendet wird. phpLDAPadmin ist ein webbasierter LDAP-Client, der für die Verwaltung und Administration des LDAP-Servers verwendet wird. Seine leistungsstarke Suchfunktionalität und die hierarchische Baumansicht erleichtern die Verwaltung des LDAP-Servers über den Webbrowser. Mit phpLDAPadmin können Sie Datensätze hinzufügen und löschen, Bildattribute anzeigen und bearbeiten, Benutzerpasswort-Hashes verwalten und vieles mehr.

In diesem Tutorial werden wir erklären, wie phpLDAPadmin unter Ubuntu 20.04 installiert wird.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein gültiger Domain-Name, der auf Ihre Server-IP zeigt.
  • Der Server ist mit einem Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, ist es immer empfehlenswert, Ihr System mit der neuesten Version der Pakete zu aktualisieren. Sie können es mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald alle Pakete aktualisiert sind, können Sie mit dem nächsten Schritt fortfahren.

OpenLDAP-Server installieren und konfigurieren

Zuerst müssen Sie Slapd und andere LDAP-Dienstprogramme auf Ihrem Server installieren. Sie können sie installieren, indem Sie den folgenden Befehl ausführen:

apt-get install slapd ldap-utils

Während der Installation werden Sie aufgefordert, ein Administrator-Passwort wie unten gezeigt einzurichten:

Konfigurieren von slapd

Geben Sie Ihr sicheres Passwort ein und drücken Sie Enter, um fortzufahren. Sobald die Installation abgeschlossen ist, müssen Sie das SLAPD-Paket neu konfigurieren, um Ihre Domäneninformationen einzustellen.

Sie können es mit dem folgenden Befehl rekonfigurieren: Geben Sie Ihr sicheres Passwort ein und drücken Sie Enter, um fortzufahren:

dpkg-reconfigure slapd

Sie werden gebeten, die Konfiguration des OpenLDAP-Servers auszulassen, wie unten dargestellt:

OpenLdap-Konfiguration

Wählen Sie Nein und drücken Sie Enter, um fortzufahren. Sie werden aufgefordert, einen DNS-Domänennamen wie unten dargestellt anzugeben:

Konfigurieren von slapd

Geben Sie Ihren Domainnamen ein und drücken Sie die Eingabetaste, um fortzufahren. Sie werden gebeten, den Organisationsnamen wie unten gezeigt einzugeben: Geben Sie Ihren Domainnamen ein und drücken Sie Enter, um fortzufahren:

Name der Organisation

Geben Sie den gewünschten Organisationsnamen ein und drücken Sie die Eingabetaste, um fortzufahren. Sie werden nach dem Admin-Passwort gefragt, wie unten gezeigt: Geben Sie Ihren gewünschten Organisationsnamen ein und drücken Sie Enter, um fortzufahren:

Administrator-Passwort

Geben Sie Ihr Administrator-Passwort ein und drücken Sie die Eingabetaste, um fortzufahren. Sie werden gebeten, die Datenbank wie unten gezeigt zu entfernen:

Datenbank bereinigen

Wählen Sie Ja und drücken Sie Enter, um die Konfiguration abzuschließen.

Jetzt können Sie Ihre LDAP-Informationen mit dem folgenden Befehl verifizieren: Geben Sie Ihr Administrator-Passwort ein und drücken Sie Enter, um fortzufahren:

slapcat

Sie sollten die folgende Ausgabe erhalten:

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
structuralObjectClass: organization
entryUUID: 971829cc-ac5f-103a-8e42-9f8486ff5685
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.103064Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20201027051828Z

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Tm5OYlpSMktkYjVnUUprb284MHFPTEVkMjQrQXpQWEk=
structuralObjectClass: organizationalRole
entryUUID: 9718c198-ac5f-103a-8e43-9f8486ff5685
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.107057Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20201027051828Z

OpenLDAP-Benutzerkonten erstellen

Zuerst müssen Sie die Container für Organisationseinheiten erstellen, um Benutzer- und Gruppeninformationen zu speichern. Sie können sie mit dem folgenden Befehl erstellen:

nano users-ou.ldif

Fügen Sie die folgenden Zeilen hinzu:

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

Speichern und schließen Sie die Datei, wenn Sie fertig sind, und passen Sie dann die Zugriffskontrollen der SLAPD-Datenbank an, indem Sie die folgende Datei erstellen:

nano update-mdb-acl.ldif

Fügen Sie die folgenden Zeilen hinzu:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  by self write
  by anonymous auth
  by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by dn.exact="cn=readonly,ou=people,dc=example,dc=com" read 
  by * none
olcAccess: to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
olcAccess: to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by users read 
  by * none

Speichern und schließen Sie die Datei und aktualisieren Sie dann die Datenbank-ACL mit den oben genannten Informationen, indem Sie den folgenden Befehl ausführen:

ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldif

Sie sollten die folgende Ausgabe erhalten:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"

Aktualisieren Sie als nächstes die Datenbank mit den OU-Informationen des Benutzers, indem Sie den folgenden Befehl ausführen:

ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldif

Sie sollten die folgende Ausgabe erhalten:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "ou=people,dc=example,dc=com"

adding new entry "ou=groups,dc=example,dc=com"

Erstellen Sie als nächstes ein neues Benutzerkonto mit dem Namen hiteshj, indem Sie die folgende Datei erstellen:

nano hitesh.ldif

Fügen Sie die folgenden Zeilen hinzu:

dn: uid=hiteshj,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: hiteshj
cn: Hitesh
sn: Jethva
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/hiteshj
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0

dn: cn=hiteshj,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: hiteshj
gidNumber: 10000
memberUid: hiteshj

Speichern und schließen Sie die Datei und fügen Sie dann den Benutzer mit folgendem Befehl zur Datenbank hinzu:

ldapadd -Y EXTERNAL -H ldapi:/// -f hitesh.ldif

Sie sollten die folgende Ausgabe erhalten:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "uid=hiteshj,ou=people,dc=example,dc=com"

adding new entry "cn=hiteshj,ou=groups,dc=example,dc=com"

Als nächstes müssen Sie das Passwort für den Benutzer festlegen. Sie können es mit dem folgenden Befehl setzen:

ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=hiteshj,ou=people,dc=example,dc=com"

Sie sollten die folgende Ausgabe erhalten: Als nächstes müssen Sie das Passwort für den Benutzer setzen:

New password: 
Re-enter new password: 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

OpenLDAP-Bind-DN erstellen

Als nächstes müssen Sie Benutzername und Passwort für die Abfrage des Verzeichnisservers definieren. Erzeugen Sie zunächst den Passwort-Hash für den bind-DN-Benutzer mit dem folgenden Befehl:

slappasswd

Sie sollten die folgende Ausgabe erhalten:

New password: 
Re-enter new password: 
{SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb

Als Nächstes erstellen Sie einen Bind-DN-Namen schreibgeschützt mit folgendem Befehl: Sie sollten die folgende Ausgabe erhalten

nano readonly-user.ldif

Fügen Sie die folgenden Zeilen hinzu:

dn: cn=readonly,ou=people,dc=example,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb
description: Bind DN user for LDAP Operations

Speichern und schließen Sie die Datei, wenn Sie fertig sind, und fügen Sie dann den BIND-Benutzer mit folgendem Befehl zur Datenbank hinzu:

ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldif

Sie sollten die folgende Ausgabe erhalten:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=readonly,ou=people,dc=example,dc=com"

Überprüfen Sie als Nächstes die Bind DN ACL mit dem folgenden Befehl:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccess

Sie sollten die folgende Ausgabe erhalten:

dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowExpire by self writ
 e by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=ext
 ernal,cn=auth" manage  by dn.exact="cn=readonly,ou=people,dc=example,dc=com" 
 read  by * none
olcAccess: {1}to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subt
 ree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * non
 e
olcAccess: {2}to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uid
 Number=0,cn=peercred,cn=external,cn=auth" manage by users read  by * none

Installieren und Konfigurieren von phpLDAPadmin

Das Paket phpLDAPadmin ist standardmäßig im Standard-Repository von Ubuntu 20.04 verfügbar. Sie können es installieren, indem Sie den folgenden Befehl ausführen:

apt-get install phpldapadmin -y

Nach der Installation von phpLDAPadmin müssen Sie phpLDAPadmin konfigurieren und Ihre Domain-Informationen definieren. Sie können dies tun, indem Sie die Datei /etc/phpldapadmin/config.php bearbeiten:

nano /etc/phpldapadmin/config.php

Ändern Sie die folgenden Zeilen:

$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','69.87.216.102');
$servers->;setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
$servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000));

Speichern und schliessen Sie die Datei, wenn Sie fertig sind.

Konfigurieren Sie Apache für phpLDAPadmin

Die Standardkonfigurationsdatei phpLDAPadmin für Apache befindet sich unter /etc/apache2/conf-available/phpldapadmin.conf. Nehmen Sie keine Änderungen vor und verwenden Sie die Standardeinstellungen.

Deaktivieren Sie als Nächstes die Standardkonfigurationsdatei des virtuellen Hosts Apache und starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen:

a2dissite 000-default.conf
systemctl restart apache2

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Zugriff auf die Web-Benutzeroberfläche phpLDAPadmin

Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL http://your-server-ip/phpldapadmin auf den phpLDAPadmin zu. Sie sollten den folgenden Bildschirm sehen:

phpladpadmin

Klicken Sie nun auf die Login-Schaltfläche. Sie sollten nun den Anmeldebildschirm von phpLDAPadmin sehen:

phpladpadmin-Anmeldung

Geben Sie Ihren Login-DN und Ihr Passwort ein und klicken Sie auf die Schaltfläche Authenticate. Auf dem folgenden Bildschirm sollten Sie das phpLDAPadmin-Dashboard sehen: Klicken Sie jetzt auf die Schaltfläche „Authentifizieren“:

Ldap-Dashboard

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben phpLDAPadmin erfolgreich auf dem Ubuntu 20.04 Server installiert und konfiguriert. Sie können nun Ihren LDAP-Server verwalten und verschiedene Aufgaben durchführen, darunter das Hinzufügen von Organisationseinheiten, Gruppen und Benutzern mit phpLDAPadmin web UI. Zögern Sie nicht, mich zu fragen, wenn Sie irgendwelche Fragen haben.

Das könnte dich auch interessieren …