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:
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:
Wählen Sie Nein und drücken Sie Enter, um fortzufahren. Sie werden aufgefordert, einen DNS-Domänennamen wie unten dargestellt anzugeben:
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:
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:
Geben Sie Ihr Administrator-Passwort ein und drücken Sie die Eingabetaste, um fortzufahren. Sie werden gebeten, die Datenbank wie unten gezeigt zu entfernen:
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:
Klicken Sie nun auf die Login-Schaltfläche. Sie sollten nun den Anmeldebildschirm von phpLDAPadmin sehen:
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“:
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.