So installieren und konfigurieren Sie OpenLDAP und phpLDAPadmin unter Ubuntu 16.04

Einführung

LDAP (Lightweight Directory Access Protocol) ist ein Standardprotokoll zum Verwalten und Zugreifen auf hierarchische Verzeichnisinformationen über ein Netzwerk. Es kann zum Speichern jeglicher Art von Informationen verwendet werden, wird jedoch am häufigsten als zentrales Authentifizierungssystem oder für Unternehmens-E-Mail- und Telefonverzeichnisse verwendet.

In diesem Handbuch wird erläutert, wie Sie den OpenLDAP-Server unter Ubuntu 16.04 installieren und konfigurieren. Anschließend installieren wir phpLDAPadmin, ein Webinterface zum Anzeigen und Bearbeiten von LDAP-Informationen. Wir sichern das Webinterface und den LDAP-Dienst mit SSL-Zertifikaten von Let’s Encrypt, einem Anbieter kostenloser und automatisierter Zertifikate.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, sollten Sie einen Ubuntu 16.04-Server mit Apache und PHP einrichten. Folgen Sie unserem Tutorial How To Install Linux, Apache, MySQL, PHP (LAMP) -Stack unter Ubuntu 16.04, wobei Schritt 2 übersprungen wird, da der MySQL-Datenbankserver nicht benötigt wird.

Da wir außerdem Passwörter in die Weboberfläche eingeben, sollten wir Apache mit SSL-Verschlüsselung sichern. Lesen Sie So sichern Sie Apache mit Let’s Encrypt unter Ubuntu 16.04 um kostenlose SSL-Zertifikate herunterzuladen und zu konfigurieren. Sie benötigen einen Domainnamen, um diesen Schritt abzuschließen. Wir werden dieselben Zertifikate auch verwenden, um sichere LDAP-Verbindungen bereitzustellen.

Schritt 1 - Installieren und Konfigurieren des LDAP-Servers

Unser erster Schritt ist die Installation des LDAP-Servers und einiger zugehöriger Dienstprogramme. Glücklicherweise sind die Pakete, die wir brauchen, alle in Ubuntus Standard-Repositorys verfügbar.

Melden Sie sich bei Ihrem Server an. Da wir in dieser Sitzung zum ersten Mal "+ apt-get +" verwenden, aktualisieren wir unseren lokalen Paketindex und installieren dann die gewünschten Pakete:

sudo apt-get update
sudo apt-get install slapd ldap-utils

Während der Installation werden Sie aufgefordert, ein Administratorkennwort für LDAP auszuwählen und zu bestätigen. Sie können hier alles eingeben, da Sie die Möglichkeit haben, es in einem Moment zu aktualisieren.

Obwohl wir das Paket gerade erst installiert haben, werden wir es sofort neu konfigurieren. Das "+ slapd +" - Paket bietet die Möglichkeit, viele wichtige Konfigurationsfragen zu stellen. Standardmäßig werden sie jedoch beim Installationsvorgang übersprungen. Wir erhalten Zugriff auf alle Eingabeaufforderungen, indem wir unserem System mitteilen, dass das Paket neu konfiguriert werden soll:

sudo dpkg-reconfigure slapd

In diesem Prozess sind einige neue Fragen zu beantworten. Wir werden die meisten Standardeinstellungen akzeptieren. Gehen wir die Fragen durch:

  • OpenLDAP-Serverkonfiguration weglassen?

  • DNS-Domainname?

  • Diese Option bestimmt die Basisstruktur Ihres Verzeichnispfads. Lesen Sie die Nachricht, um genau zu verstehen, wie dies implementiert wird. Sie können tatsächlich einen beliebigen Wert auswählen, auch wenn Sie nicht Eigentümer der eigentlichen Domain sind. In diesem Lernprogramm wird jedoch davon ausgegangen, dass Sie einen korrekten Domänennamen für den Server haben. Verwenden Sie diesen. Im gesamten Lernprogramm wird * example.com * verwendet.

  • Name der Organisation?

  • In diesem Handbuch verwenden wir * example * als Namen unserer Organisation. Sie können alles wählen, was Sie für angemessen halten.

  • Administrator-Passwort?

  • Datenbank-Backend?

  • Datenbank entfernen, wenn slapd gelöscht wird?

  • Alte Datenbank verschieben?

  • LDAPv2-Protokoll zulassen?

Zu diesem Zeitpunkt ist Ihr LDAP-Server konfiguriert und läuft. Öffnen Sie den LDAP-Port Ihrer Firewall, damit externe Clients eine Verbindung herstellen können:

sudo ufw allow ldap

Testen wir unsere LDAP-Verbindung mit "+ ldapwhoami +". Dies sollte den Benutzernamen zurückgeben, mit dem wir verbunden sind:

ldapwhoami -H ldap:// -x
Outputanonymous

"+ anonymous " ist das erwartete Ergebnis, da wir " ldapwhoami +" ausgeführt haben, ohne uns beim LDAP-Server anzumelden. Dies bedeutet, dass der Server ausgeführt wird und Fragen beantwortet. Als Nächstes richten wir eine Webschnittstelle zur Verwaltung von LDAP-Daten ein.

Schritt 2 - Installation und Konfiguration des phpLDAPadmin Webinterface

Obwohl es sehr gut möglich ist, LDAP über die Befehlszeile zu verwalten, fällt es den meisten Benutzern leichter, eine Weboberfläche zu verwenden. Wir werden phpLDAPadmin installieren, eine PHP-Anwendung, die diese Funktionalität bietet.

Die Ubuntu-Repositories enthalten ein phpLDAPadmin-Paket. Sie können es mit + apt-get installieren:

sudo apt-get install phpldapadmin

Dadurch wird die Anwendung installiert, die erforderlichen Apache-Konfigurationen aktiviert und Apache neu geladen.

Der Webserver ist jetzt für die Bereitstellung der Anwendung konfiguriert, es müssen jedoch einige zusätzliche Änderungen vorgenommen werden. Wir müssen phpLDAPadmin so konfigurieren, dass unsere Domain verwendet wird und die LDAP-Anmeldeinformationen nicht automatisch ausgefüllt werden.

Öffnen Sie zunächst die Hauptkonfigurationsdatei mit Root-Rechten in Ihrem Texteditor:

sudo nano /etc/phpldapadmin/config.php

Suchen Sie nach der Zeile, die mit + $ servers→ setValue ('server', 'name' + beginnt. In + nano + können Sie nach einem String suchen, indem Sie + STRG-W +, dann den String und dann + ENTER + eingeben. Ihr Cursor wird auf die richtige Zeile gesetzt.

Diese Zeile ist ein Anzeigename für Ihren LDAP-Server, den die Webschnittstelle für Header und Nachrichten über den Server verwendet. Wählen Sie hier etwas Passendes aus:

/etc/phpldapadmin/config.php

$servers->setValue('server','name','');

Bewegen Sie sich als nächstes nach unten zur Zeile "+ $ servers→ setValue (" server "," base "". Diese Konfiguration teilt phpLDAPadmin mit, wo sich das Stammverzeichnis der LDAP-Hierarchie befindet. Dies basiert auf dem Wert, den wir bei der Neukonfiguration des Pakets ` slapd ` eingegeben haben. In unserem Beispiel haben wir " example.com " ausgewählt und müssen dies in LDAP-Syntax umsetzen, indem wir jede Domain-Komponente (alles, was kein Punkt ist) in eine " dc = +" -Notation setzen:

/etc/phpldapadmin/config.php

$servers->setValue('server','base', array(''));

Suchen Sie nun die Login + bind_id + Konfigurationszeile und kommentieren Sie diese mit einem + # + am Zeilenanfang aus:

/etc/phpldapadmin/config.php

$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');

Diese Option füllt die Anmeldedaten des Administrators in der Weboberfläche vorab aus. Diese Informationen sollten wir nicht weitergeben, wenn unsere phpLDAPadmin-Seite öffentlich zugänglich ist.

Das Letzte, was wir anpassen müssen, ist eine Einstellung, die die Sichtbarkeit einiger phpLDAPadmin-Warnmeldungen steuert. Standardmäßig zeigt die Anwendung einige Warnmeldungen zu Vorlagendateien an. Diese haben keinen Einfluss auf unsere derzeitige Nutzung der Software. Sie können ausgeblendet werden, indem Sie nach dem Parameter "+ hide_template_warning +" suchen, das Kommentarzeichen in der Zeile entfernen und den Wert auf "true" setzen:

/etc/phpldapadmin/config.php

$config->custom->appearance['hide_template_warning'] = ;

Dies ist das Letzte, was wir anpassen müssen. Speichern und schließen Sie die Datei, um den Vorgang abzuschließen. Es ist kein Neustart erforderlich, damit die Änderungen wirksam werden.

Als Nächstes melden wir uns bei phpLDAPadmin an.

Schritt 3 - Anmelden am phpLDAPadmin-Webinterface

Nachdem Sie die erforderlichen Konfigurationsänderungen an phpLDAPadmin vorgenommen haben, können Sie es jetzt verwenden. Navigieren Sie in Ihrem Webbrowser zur Anwendung. Stellen Sie sicher, dass Sie den markierten Bereich unten durch Ihre Domain ersetzen:

https:///phpldapadmin

Die Zielseite von phpLDAPadmin wird geladen. Klicken Sie im linken Menü auf der Seite auf den Link * Login *. Ein Anmeldeformular wird angezeigt:

Der * Login DN * ist der Benutzername, den Sie verwenden werden. Es enthält den Kontonamen als Abschnitt "+ cn = " und den Domänennamen, den Sie für den Server ausgewählt haben, unterteilt in Abschnitte " dc = +", wie in den vorherigen Schritten beschrieben. Das Standard-Administratorkonto, das wir während der Installation eingerichtet haben, heißt * admin *. In unserem Beispiel würden wir also Folgendes eingeben:

cn=admin,

Geben Sie nach Eingabe der entsprechenden Zeichenfolge für Ihre Domain das Administratorkennwort ein, das Sie während der Konfiguration erstellt haben, und klicken Sie dann auf die Schaltfläche * Authentifizieren *.

Sie werden zur Hauptschnittstelle weitergeleitet:

Zu diesem Zeitpunkt sind Sie bei der phpLDAPadmin-Schnittstelle angemeldet. Sie können Benutzer, Organisationseinheiten, Gruppen und Beziehungen hinzufügen.

LDAP ist flexibel in der Strukturierung Ihrer Daten- und Verzeichnishierarchien. Sie können jede Art von Struktur erstellen, die Sie möchten, und Regeln für deren Interaktion erstellen.

Da dieser Vorgang unter Ubuntu 16.04 derselbe ist wie in früheren Versionen, können Sie die Schritte ausführen, die im Abschnitt "Hinzufügen von Organisationseinheiten, Gruppen und Benutzern" im Abschnitt "https://www.digitalocean.com/community/tutorials/" beschrieben sind. Anleitung zum Installieren und Konfigurieren eines einfachen LDAP-Servers auf einem Ubuntu 12-04-vps # Hinzufügen von Organisationseinheiten, Gruppen und Benutzern [LDAP-Installationsartikel für Ubuntu 12.04].

Diese Schritte werden bei dieser Installation von phpLDAPadmin gut funktionieren. Befolgen Sie diese Schritte, um sich mit der Benutzeroberfläche vertraut zu machen und zu lernen, wie Sie Ihre Daten strukturieren.

Nachdem wir uns angemeldet und mit der Weboberfläche vertraut gemacht haben, nehmen wir uns einen Moment Zeit, um unseren LDAP-Server sicherer zu machen.

Schritt 4 - Konfigurieren der StartTLS-LDAP-Verschlüsselung

Obwohl wir unsere Weboberfläche verschlüsselt haben, stellen externe LDAP-Clients weiterhin eine Verbindung zum Server her und geben Informationen im Klartext weiter. Verwenden Sie unsere Option "SSL-Zertifikate verschlüsseln", um unseren LDAP-Server zu verschlüsseln.

Kopieren der Let’s Encrypt-Zertifikate

Da der Daemon "+ slapd " als Benutzer "* openldap *" ausgeführt wird und "Let's Encrypt" -Zertifikate nur vom Benutzer "* root *" gelesen werden können, müssen einige Anpassungen vorgenommen werden, um " slapd " den Zugriff auf die Zertifikate zu ermöglichen. Wir erstellen ein kurzes Skript, das die Zertifikate in " / etc / ssl / " kopiert, das Standardsystemverzeichnis für SSL-Zertifikate und -Schlüssel. Der Grund dafür, dass wir ein Skript erstellen, anstatt die Befehle manuell einzugeben, besteht darin, dass wir diesen Vorgang automatisch wiederholen müssen, wenn die Let's Encrypt-Zertifikate erneuert werden. Wir werden den Cron-Job " certbot +" später aktualisieren, um dies zu ermöglichen.

Öffnen Sie zunächst eine neue Textdatei für das Shell-Skript:

sudo nano /usr/local/bin/renew.sh

Dies öffnet eine leere Textdatei. Fügen Sie das folgende Skript ein. Aktualisieren Sie unbedingt den Abschnitt "+ SITE = ", um den Speicherort Ihrer Let's Encrypt-Zertifikate anzugeben. Sie finden den richtigen Wert, indem Sie das Zertifikatverzeichnis mit ` sudo ls / etc / letsencrypt / live +` auflisten.

/usr/local/bin/renew.sh

#!/bin/sh

SITE=

# move to the correct let's encrypt directory
cd /etc/letsencrypt/live/$SITE

# copy the files
cp cert.pem /etc/ssl/certs/$SITE.cert.pem
cp fullchain.pem /etc/ssl/certs/$SITE.fullchain.pem
cp privkey.pem /etc/ssl/private/$SITE.privkey.pem

# adjust permissions of the private key
chown :ssl-cert /etc/ssl/private/$SITE.privkey.pem
chmod 640 /etc/ssl/private/$SITE.privkey.pem

# restart slapd to load new certificates
systemctl restart slapd

Dieses Skript verschiebt sich in das Let’s Encrypt-Zertifikatverzeichnis, kopiert Dateien nach "+ / etc / ssl " und aktualisiert dann die Berechtigungen des privaten Schlüssels, um sie für die * ssl-cert * -Gruppe des Systems lesbar zu machen. Außerdem wird " slapd " neu gestartet, wodurch sichergestellt wird, dass neue Zertifikate geladen werden, wenn dieses Skript von unserem " certbot +" - Erneuerungs-Cron-Job ausgeführt wird.

Speichern und schließen Sie die Datei und machen Sie sie dann ausführbar:

sudo chmod u+x /usr/local/bin/renew.sh

Führen Sie dann das Skript mit + sudo + aus:

sudo /usr/local/bin/renew.sh

Stellen Sie sicher, dass das Skript funktioniert hat, indem Sie die neuen Dateien in + / etc / ssl + auflisten:

sudo su -c 'ls -al /etc/ssl/{certs,private}/*'

Der obige Befehl + sudo + ist ein wenig anders als normal. Der + su -c '' + Teil umschließt den gesamten + ls + Befehl in einer * root * Shell, bevor er ausgeführt wird. Andernfalls wird die Dateinamenerweiterung "+ * " mit den Berechtigungen Ihres Nicht-Sudo-Benutzers ausgeführt und schlägt fehl, da " / etc / ssl / private +" von Ihrem Benutzer nicht gelesen werden kann.

+ ls + gibt Details zu den drei Dateien aus. Vergewissern Sie sich, dass der Besitz und die Berechtigungen korrekt sind:

Output-rw-r--r-- 1 root root     1793 May 31 13:58 /etc/ssl/certs/.cert.pem
-rw-r--r-- 1 root root     3440 May 31 13:58 /etc/ssl/certs/.fullchain.pem
-rw-r----- 1 root ssl-cert 1704 May 31 13:58 /etc/ssl/private/.privkey.pem

Als nächstes automatisieren wir dies mit "+ certbot +".

Aktualisieren des Certbot Renewal Cron-Jobs

Wir müssen Ihren Cron-Job "+ certbot" aktualisieren, um dieses Skript auszuführen, wenn die Zertifikate aktualisiert werden:

sudo crontab -e

Sie sollten bereits eine "+ certbot renew +" - Zeile haben. Fügen Sie den hervorgehobenen Teil unten hinzu:

crontab

15 3 * * * /usr/bin/certbot renew --quiet

Speichern und schließen Sie die Crontab. Jedes Mal, wenn "+ certbot " die Zertifikate erneuert, wird unser Skript ausgeführt, um die Dateien zu kopieren, Berechtigungen anzupassen und den " slapd +" - Server neu zu starten.

Slapd für das Anbieten sicherer Verbindungen konfigurieren

Wir müssen den Benutzer * openldap * zur Gruppe * ssl-cert * hinzufügen, damit + slapd + den privaten Schlüssel lesen kann:

sudo usermod -aG ssl-cert openldap

Starten Sie + slapd + neu, damit die neue Gruppe übernommen wird:

sudo systemctl restart slapd

Schließlich müssen wir "+ slapd " konfigurieren, um diese Zertifikate und Schlüssel tatsächlich zu verwenden. Zu diesem Zweck speichern wir alle Konfigurationsänderungen in einer _LDIF_-Datei, die für das LDAP-Datenaustauschformat steht. Anschließend laden wir die Änderungen mit dem Befehl " ldapmodify +" in unseren LDAP-Server.

Öffnen Sie eine neue LDIF-Datei:

cd ~
nano ssl.ldif

Dies öffnet eine leere Datei. Fügen Sie Folgendes in die Datei ein und aktualisieren Sie die Dateinamen entsprechend Ihrer Domain:

ssl.ldif

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/.fullchain.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/.cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/.privkey.pem

Speichern und schließen Sie die Datei und übernehmen Sie die Änderungen mit + ldapmodify +:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ssl.ldif
OutputSASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

Wir müssen nicht "+ slapd " neu laden, um die neuen Zertifikate zu laden. Dies geschah automatisch, als wir die Konfiguration mit " ldapmodify " aktualisierten. Führen Sie den Befehl " ldapwhoami " noch einmal aus, um dies zu überprüfen. Diesmal müssen wir den richtigen Hostnamen verwenden und die Option " -ZZ +" hinzufügen, um eine sichere Verbindung zu erzwingen:

ldapwhoami -H ldap:// -x -ZZ

Bei Verwendung einer sicheren Verbindung benötigen wir den vollständigen Hostnamen, da der Client überprüft, ob der Hostname mit dem Hostnamen auf dem Zertifikat übereinstimmt. Dies verhindert Man-in-the-Middle-Angriffe, bei denen ein Angreifer Ihre Verbindung abfängt und sich als Server ausgibt.

Der Befehl "+ ldapwhoami " sollte " anonym +" ohne Fehler zurückgeben. Wir haben unsere LDAP-Verbindung erfolgreich verschlüsselt.

Fazit

In diesem Tutorial haben wir den OpenLDAP-Server "+ slapd " und das LDAP-Webinterface "phpLDAPadmin" installiert und konfiguriert. Wir haben auch die Verschlüsselung auf beiden Servern eingerichtet und " certbot " aktualisiert, um " slapd +" automatisch zu verarbeiten. Lassen Sie uns den Zertifikatserneuerungsprozess verschlüsseln.

Das von uns eingerichtete System ist sehr flexibel, und Sie können Ihr eigenes Organisationsschema entwerfen und Ressourcengruppen nach Bedarf verwalten. Weitere Informationen zum Verwalten von LDAP, einschließlich weiterer Befehlszeilentools und -techniken, finden Sie in unserem Lernprogramm unter https://www.digitalocean.com/community/tutorials/how-to-manage-and-use-ldap-servers-with-openldap- Dienstprogramme [Verwalten und Verwenden von LDAP-Servern mit OpenLDAP-Dienstprogrammen]. Ausführlichere Informationen zum Sichern eines LDAP-Servers und zum Erzwingen der Verwendung sicherer Verbindungen für alle Clients finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-encrypt-openldap-connections-using- starttls [So verschlüsseln Sie OpenLDAP-Verbindungen mit STARTTLS].

Related