So richten Sie den OpenLDAP-Server ein und authentifizieren die Client-Workstation

LDAP oder Lightweight Directory Access Protocol ermöglicht es jedem, Organisationen, Personen und andere Ressourcen wie Dateien und Geräte in einem Netzwerk (öffentlich/privat) zu lokalisieren und eine Verbindung zu ihnen herzustellen. LDAP folgt dem X.500-Standard, einem Standard für Verzeichnisdienste in einem Netzwerk, das normalerweise das übliche Client/Server-Paradigma verwendet. LDAP ist leichter, da es in seiner ursprünglichen Version keine Sicherheitsfunktionen enthielt. Die primäre Verwendung von Verzeichnisdiensten besteht darin, Benutzer- und Objektdaten in einem zentralen System zu speichern und diese Daten anderen Anwendungen hauptsächlich zur Authentifizierung oder als Adressbuch zur Verfügung zu stellen, und dies können wir mit einem OpenLDAP-Server bewerkstelligen. In diesem Artikel wird beschrieben, wie Sie einen OpenLDAP-Server einrichten und eine Client-Workstation mit dem Lightweight-Verzeichniszugriffsprotokoll in Ubuntu 16.04 authentifizieren

In diesem Tutorial wird beschrieben, wie Sie den OpenLDAP-Server einrichten und die Client-Workstation mit dem Lightweight-Verzeichniszugriffsprotokoll in Ubuntu 16.04 authentifizieren.

Verwendung von LDAP

→LDAP hält Benutzer und andere Netzwerkobjekte in einer zentralen Datenbank.

→LDAP speichert Informationen wie Klartextinformationen, Bilder, Binärdaten, Public-Key-Zertifikate in der zentralen Datenbank.

→LDAP bietet Authentifizierungs- und Autorisierungsdienste wie das Login-Management.

→LDAP kann auch DNS-Einträge in seiner Datenbank speichern.

→LDAP kann wie ein Verzeichnisdienst für Gelbe Seiten für jede Organisation verwendet werden.

LDAP-Terminologie

LDAP-Terminologien sind Teile der X.500-Verzeichnisspezifikation, die Knoten in einem LDAP-Verzeichnis definiert.

CN CommonName
L localityName
ST stateOrProvinceName
O Organisationsname
Name der Organisationseinheit der Organisationseinheit
C Ländername
STRASSE StraßeAdresse
DC-Domänenkomponente
UID-Benutzer-ID
DN Distinguished Name

Der letzte DN (Distinguished Name) ist eine Reihe von durch Kommas getrennten Schlüssel/Wert-Paaren, die verwendet werden, um Einträge in der Verzeichnishierarchie eindeutig zu identifizieren. Der DN ist eigentlich der vollständig qualifizierte Name des Eintrags. zB Die Zeichenfolge “CN=India,OU=Distribution Groups, DC=gp, DC=gl, DC=linoxide, DC=com” ist ein Pfad aus einer hierarchischen Struktur namens Verzeichnisinformationsbaum und sollte von rechts (Wurzel) nach links (Blatt) gelesen werden.

In diesem Artikel richten wir den OpenLDAP-Server in Ubuntu 16 ein und konfigurieren einen OpenLDAP-Client, der Anmeldeinformationen vom Server abruft und die Benutzer authentifiziert.

IP Adresse
OpenLDAP-Server
10.0.0.196
OpenLDAP-Client
10.0.0.33

OpenLDAP-Server installieren

Installieren Sie OpenLDAP und seine Dienstprogramme mit apt-get und aktivieren Sie es während des Starts. Während der Installation wird nach der Angabe gefragt admin Passwort.

# sudo apt-get update
# apt-get install slapd ldap-utils
# systemctl enable slapd

Überprüfen Sie mit netstat, ob slapd auf dem Port Nr. 389 läuft

# netstat -pltn

Ubuntu 16 wird standardmäßig mit Firewall-UFW ausgeliefert. Wenn UFW aktiviert ist, öffnen Sie den Port Nr. 389 mit den folgenden Befehlen.

# sudo ufw allow 389/tcp
# sudo ufw reload

Das OpenLDAP-Paket wurde installiert und jetzt werden wir alle Standardeinstellungen neu konfigurieren, die mit Ubuntu geliefert werden. Führen Sie den folgenden Befehl aus, um das Paketkonfigurationstool aufzurufen.

# sudo dpkg-reconfigure slapd

Das Paketkonfigurationstool stellt eine Reihe von Fragen zur Neukonfiguration von OpenLDAP

→OpenLDAP-Serverkonfiguration auslassen?

→DNS-Domainname: linoxide.com

→Name der Organisation: Linoxid

→Enter Passwort und bestätigen Sie es: Passwort

→Zu verwendendes Datenbank-Backend: HDB

→Möchten Sie, dass die Datenbank entfernt wird, wenn slapd gelöscht wird?

→Alte Datenbank verschieben?

→ LDAPv2-Protokoll zulassen?

OpenLDAP neu starten

# systemctl restart slapd

Sie können die ändern admin Passwort für OpenLDAP zu einem späteren Zeitpunkt mit dem folgenden Befehl.

# ldappassword

Zu diesem Zeitpunkt haben wir den OpenLDAP-Server installiert und neu konfiguriert. So finden Sie den Eintrag für admin in der OpenLDAP-Datenbank verwenden wir den Befehl ldapsearch. ldapsearch fragt nach admin Passwort, das wir bei der Neukonfiguration von OpenLDAP bereitgestellt haben.

# ldapsearch -x -W -D cn=admin,dc=linoxide,dc=com -b dc=linoxide,dc=com -LLL

Enter LDAP Password:
dn: dc=linoxide,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linoxide
dc: linoxide

dn: cn=admin,dc=linoxide,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9MkdIK2p1enlxQ3hFNmtMSE56TUE5NzZzOFQxVGdxSUE=

Organisationseinheit (OU) hinzufügen

Um OU hinzuzufügen, erstellen wir eine LDIF-Datei (LDAP Data Interchange Format), das Standardtextformat zum Austausch von Informationen vom LDAP-Server. Fügen Sie eine Organisationseinheit mit dem Namen “Gruppen” hinzu.

# vi ou_group.ldif

dn: ou=groups,dc=linoxide,dc=com
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: groups

Wir verwenden ldapadd, um die obige Organisationseinheit hinzuzufügen.

# ldapadd -W -D "cn=admin,dc=linoxide,dc=com" -f ou_group.ldif

Organisationseinheit (OU) ändern

Um eine Organisationseinheit zu ändern, erstellen Sie eine ldif-Datei mit dem folgenden Inhalt. In diesem example, fügen wir der bestehenden OU einen Eintrag für die Postleitzahl hinzu.

# vi modify_ou.ldif
dn: ou=groups,dc=linoxide,dc=com
changetype: modify
add: postalCode
postalCode: 788109
-

Verwenden Sie ldapmodify, um die OU zu ändern

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_ou.ldif
Enter LDAP Password:
modifying entry "ou=groups,dc=linoxide,dc=com"

Organisationseinheit (OU) löschen

Um eine Organisationseinheit zu löschen, verwenden Sie ldapdelete und geben Sie den Distinguished Name für die OU an

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "ou=groups,dc=linoxide,dc=com"
Enter LDAP Password:

Gruppen hinzufügen

Um eine Posix-Gruppe hinzuzufügen, erstellen wir eine LDIF-Datei dafür.

# vi irc_users.ldif
dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
objectClass: posixGroup
objectClass: top
cn: ircusers
gidNumber: 4000

Verwenden Sie den Befehl ldapadd wie zuvor, um die Gruppe hinzuzufügen

# ldapadd -x -W -D "cn=admin,dc=linoxide,dc=com" -f irc_users.ldif
Enter LDAP Password:
adding new entry "cn=ircusers,ou=groups,dc=linoxide,dc=com"

Gruppen ändern

Definieren Sie die ldif-Datei zum Ändern von Gruppen, wir fügen ‘Beschreibung’ für die vorhandene ircusers-Gruppe hinzu.

# vi modify_irc_users.ldif
dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
changetype: modify
add: description
description: Groups under OU

Verwenden Sie ldapmodify, um die Gruppe zu ändern

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_irc_users.ldif
Enter LDAP Password:
modifying entry "cn=ircusers,ou=groups,dc=linoxide,dc=com"

Gruppen löschen

Um eine Gruppe zu löschen, verwenden Sie ldapdelete und geben Sie den eindeutigen Namen für die Gruppe an.

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "cn=ircusers,ou=groups,dc=linoxide,dc=com"
Enter LDAP Password:

Benutzer hinzufügen

Generieren Sie zunächst das SSHA-Passwort für den Benutzer mit slappasswd

# slappasswd -h {SSHA} -s mypass
{SSHA}d9NeiNx4RLSEtXNuMxq7+jWK/5yxwCWT

Als nächstes erstellen Sie eine ldif-Datei für einen Benutzer

# vi mike_user.ldif
dn: uid=mike,ou=groups,dc=linoxide,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mike
sn: smith
givenName: mike
cn: mike
uidNumber: 4000
gidNumber: 4000
userPassword: {SSHA}d9NeiNx4RLSEtXNuMxq7+jWK/5yxwCWT
loginShell: /bin/bash
homeDirectory: /home/mike

Stellen Sie sicher, dass Sie die richtige Gruppen-ID-Nummer (gidNumber) angeben, die in unserem Fall 4000 beträgt. Fügen Sie den obigen Benutzer mit dem Befehl ldapadd hinzu.

# ldapadd -x -W -D "cn=admin,dc=linoxide,dc=com" -f mike_user.ldif
Enter LDAP Password:
adding new entry "uid=mike,ou=users,dc=linoxide,dc=com"

Benutzer löschen

Um einen Benutzer zu löschen, verwenden Sie den Befehl ldapdelete

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "uid=mike,ou=groups,dc=linoxide,dc=com"

Überprüfen Sie mit dem folgenden Befehl, ob der Eintrag gelöscht wurde.

# ldapsearch -x -b "dc=linoxide,dc=com"

Benutzer ändern

Um einen Benutzer zu ändern, erstellen Sie eine ldif-Datei und verwenden Sie dann ldapmodify, um dies zu erreichen.

# vi modify_mike.ldif
dn: uid=mike,ou=groups,dc=linoxide,dc=com
changetype: modify
replace: smith
sn: smt
-
add: title
title: Grand Poobah
-
add: jpegPhoto
jpegPhoto: /tmp/smith.png

Führen Sie nun den Befehl ldapmodify aus

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_mike.ldif
Enter LDAP Password:
modifying entry "uid=mike,ou=users,dc=linoxide,dc=com"

OpenLDAP-Datenbank durchsuchen

Auf dem Server selbst können Sie nun überprüfen, ob Sie die Datenbank lesen können. Der folgende Befehl wird das gesamte Verzeichnis ausgeben.

# ldapsearch -x -LLL -H ldap:/// -b dc=linoxide,dc=com
dn: dc=linoxide,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linoxide
dc: linoxide

dn: cn=admin,dc=linoxide,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

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

dn: ou=users,dc=linoxide,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users

dn: cn=dbagrp,ou=groups,dc=linoxide,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 678
cn: dbagrp

dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
objectClass: posixGroup
objectClass: top
cn: ircusers
gidNumber: 4000

dn: uid=mike,ou=users,dc=linoxide,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mike
sn: smith
givenName: mike
cn: mike
uidNumber: 4000
gidNumber: 4000
loginShell: /bin/bash
homeDirectory: /home/mike

Verwenden von phpMyAdmin

Wir haben OU, Gruppen und Benutzer über die Befehlszeile erstellt/bearbeitet/durchsucht. Sie können jedoch dasselbe mit einer Weboberfläche namens phpldapadmin tun. Der phpldapadmin wird standardmäßig zusammen mit Ubuntu ausgeliefert. Verwenden Sie apt-get, um es zu installieren.

# sudo apt-get install phpldapadmin

Bearbeiten Sie die Konfigurationsdatei für phpldapadmin, um die zuvor erstellte Verzeichnisstruktur widerzuspiegeln.

# vi /etc/phpldapadmin/config.php
$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','LDAP-SERVER-IP');
$servers->setValue('server','base',array('dc=linoxide,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=linoxide,dc=com');

Sie können jetzt über https://LDAP-SERVER-IP/phpldapadmin auf phpldapadmin zugreifen. Melden Sie sich mit dem Benutzer als Standardverzeichnisstruktur und dem Kennwort als ‘Kennwort’ an. Um den phpldapadmin-Speicherort mit einem Passwort zu schützen, erstellen Sie einen Benutzer mit Apache utils htpasswd.

# sudo htpasswd -c /etc/apache2/htpasswd ldapadminuser
New password:
Re-type new password:
Adding password for user ldapadminuser

Fügen Sie den folgenden Abschnitt in der Hauptkonfigurationsdatei von Apache /etc/apache2/apache2.conf . an

# vi /etc/apache2/apache2.conf

<Location /phpldapadmin>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/apache2/htpasswd
Require valid-user
</Location>

Neustart Apache

# systemctl restart apache2

Aktualisieren Sie die phpldapadmin-Seite, Sie sehen die Passwortabfrage, die Sie mit htpasswd utils konfiguriert haben.

OpenLDAP-Client installieren

Wir werden einige Pakete auf dem Client-Rechner installieren, damit die Authentifizierung mit einem OpenLDAP-Server korrekt funktioniert.

# apt-get install ldap-auth-client nscd

Ihnen wird eine Reihe von Fragen gestellt, die denen während der Serverkonfiguration ähneln.

→ Uniform Resource Identifier des LDAP-Servers: ldap://10.0.0.196

→ Distinguished Name der Suchbasis: dc=linoxide,dc=com

→LDAP-Version: 3

→Lokale Root-Datenbank erstellen admin:

→Erfordert die LDAP-Datenbank eine Anmeldung?

→LDAP-Konto für root: cn=admin,dc=Linoxid,dc=com

→Passwort des LDAP-Root-Kontos: Passwort

Sie können die Konfiguration jederzeit ändern, indem Sie den folgenden Befehl im Terminal ausführen.

#  sudo dpkg-reconfigure ldap-auth-config

OpenLDAP-Client konfigurieren

Wir müssen die Datei /etc/nsswitch.conf bearbeiten, um die Authentifizierungsdateien über das Vorhandensein eines OpenLDAP-Servers zu informieren. Bearbeiten Sie die Datei /etc/nsswitch.conf und ändern Sie die Zeilen, die mit passwd, group, shadow beginnen, so, dass sie wie folgt aussehen.

# vi /etc/nsswitch.conf
passwd:         ldap compat
group:            ldap compat
shadow:         ldap compat

Bearbeiten Sie /etc/pam.d/common-session und die folgende Zeile am Ende der Datei.

# vi /etc/pam.d/common-session
....................
....................

session required        pam_mkhomedir.so skel=/etc/skel umask=0022

Richten Sie nss mit auth-client-config mit ldap ein

# auth-client-config -t nss -p lac_ldap
# cd /usr/share/pam-configs/
# vi mkhomedir

Name: Create home directory on login for Linoxide
Default: yes
Priority: 0
Session-Type: Additional
Session-Interactive-Only: yes
Session:
required                        pam_mkhomedir.so umask=0022 skel=/etc/skel

Die letzte Zeile der obigen Datei erstellt ein Home-Verzeichnis auf dem Client-Rechner, wenn sich ein LDAP-Benutzer anmeldet und kein Home-Verzeichnis hat. Aktualisieren Sie nun die Pam-Authentifizierung.

# pam-auth-update

Aktivieren Sie die Zeile “Home-Verzeichnis beim Anmelden erstellen……” und wählen Sie “Ok”. nscd neu starten.

# /etc/init.d/nscd restart
[ ok ] Restarting nscd (via systemctl): nscd.service.

Listen Sie den Eintrag der Passwortdatei mit getent auf. Die Liste enthält den LDAP-Benutzer ‘mike’, den wir zuvor auf dem Server erstellt haben.

# getent passwd
mike:x:4000:4000:mike:/home/mike:/bin/bash

Wenn Sie SSH nicht früher installiert haben, installieren Sie es mit SSH.

# apt-get install ssh

Stellen Sie sicher, dass Sie in /etc/ssh/sshd_config Folgendes auf yes gesetzt haben

PermitRootLogin yes
UsePAM yes

Verbinden Sie sich mit dem LDAP-Server über SSH

# ssh [email protected]

Eine andere Möglichkeit, die Hülle von Mike zu erhalten, ist die Verwendung von sudo auf dem Client-Rechner.

# su - mike
mike@ip-10-0-0-33:~$

Bei der Konfiguration des OpenLDAP-Servers haben wir den LDAP-Administrator mit dem Distinguished Name “cn= .” erstelltadmin,dc=linoxid,dc=com” Dieser Wert admin abgestimmt mit dem admin Gruppe, die standardmäßig in Ubuntu vorhanden ist. Die von uns erstellten LDAP-Benutzer für die admin Gruppe hat Zugriff auf die sudo Befehl, da es einen Eintrag dafür in der Datei /etc/sudoers wie unten gibt-

%admin ALL=(ALL) ALL

So widerrufen Sie den Zugriff auf sudo für die admin group, kommentieren Sie die obige Zeile, indem Sie eine Raute an den Anfang der Zeile setzen. Sie können auch gewähren sudo Zugriff auf einen bestimmten Benutzer durch Hinzufügen von %user ALL=(ALL) ALL zur Datei /etc/sudoers.

Fazit

Die Vorteile der Verwendung des OpenLDAP-Servers bestehen darin, dass Informationen einer gesamten Organisation in einem zentralen Repository abgelegt werden können. LDAP kann als zentrales Verzeichnis verwendet werden, auf das von überall im Netzwerk aus zugegriffen werden kann, anstatt Benutzer jeder Gruppe separat zu verwalten. Auch LDAP unterstützt Secure Sockets Layer (SSL) und Transport Layer Security (TLS), sodass die sensiblen Daten vor neugierigen Blicken geschützt werden können. Durchsuche OpenLDAP-Dokumentation um mehr über die OpenLDAP-Verwaltung zu erfahren.