Debian LDAP

Aus Wiki
Zur Navigation springen Zur Suche springen

Allgemein

Mittels LDAP (Lightweigh Directory Access Protocol) können User-Informationen in einer zentralen, hierarchischen Datenbank abgelegt werden, die unter anderem Netzwerkweit zur User-Authentifizierung verwendet werden kann. Dadurch müssen einzelne User nur einmalig angelegt und gepflegt werden und stehen auf allen mit dem LDAP-Server verbundenen Systemen zur Verfügung. Die Userinformationen können nicht nur zur Userauthentifizierung für die Linux-Shell, sondern auch für zahlreiche weitere Dienste wie Email, FTP, Webserver, Groupware, usw. verwendet werden.

In der LDAP Datenbank werden die Daten hierarchisch in Baumform angelegt.

  • Die Basis (dn: Distinguished Name) des LDAP Directories wird üblicherweise vom Domainnamen abgeleitet. Z.B. die Domain test.homelinux.org wird in LDAP folgendermaßen abgebildet: LDAP_Base: dc=test,dc=homelinux,dc=org.
  • Elemente darunter könnten z.B. User (People) und Gruppen (Groups) sein, in denen die jeweiligen Linux-User und Gruppen definiert werden. Diese sog. Organizational Units (ou) werden folgendermaßen in LDAP abgebildet: ou=People,dc=test,dc=homelinux,dc=org.
  • Ein User Tux könnte dann z.B. folgendermaßen angesprochen werden: uid=tux,ou=People,dc=test,dc=homelinux,dc=org.
  • Es können aber auch noch deutlich mehr Ebenen abgebildet werden.


LDAP Server Installation

Installation der Pakete

apt-get install slapd ldap-utils

Folgende Informationen eingeben:

  • Administrator password: LDAP_ADMIN_PWD
  • Confirm password: LDAP_ADMIN_PWD


Konfiguration

vi /etc/ldap/ldap.conf

Folgende Einstellungen vornehmen:

URI  ldap://IP_DES_SERVER 
BASE LDAP_Base  z.B. dc=test,dc=homelinux,dc=org

Informationen werden mit Hilfe von .ldif Files in's LDAP Directory übertragen. Es ist empfehlenswert diese Files zentral in einem eigenen Unterverzeichnis zu verwalten, wobei die Files nach dem Import in die LDAP Datenbank eigentlich gar nicht mehr benötigt werden.

mkdir /root/ldap_ldif

Mit Hilfe von Indizes kann die Suche im LDAP Directory beschleunigt werden.

vi /root/ldap_ldif/index.ldif

Folgende Zeilen einfügen (ohne zusätzliche Leerzeilen zwischen den Informationen):

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq
-
add: olcDbIndex
olcDbIndex: cn eq
-
add: olcDbIndex
olcDbIndex: ou eq
-
add: olcDbIndex
olcDbIndex: dc eq
-
add: olcDbIndex
olcDbIndex: memberUid eq
-
add: olcDbIndex
olcDbIndex: member eq
-
add: olcDbIndex
olcDbIndex: gidNumber eq

Die Informationen ins LDAP Directory übernehmen:

ldapmodify -QY EXTERNAL -H ldapi:/// -f /root/ldap_ldif/index.ldif

Üblicherweise werden User und Gruppen in Organisational Units (ou) innerhalb von LDAP verwaltet. Um die Units anzulegen, folgendermaßen vorgehen:

vi /root/ldap_ldif/tree.ldif

Folgende Zeilen einfügen (incl. Leezeile zwischen people und groups OU):

dn: ou=people,dc=test,dc=homelinux,dc=org
ou: people
objectClass: organizationalUnit

dn: ou=groups,dc=test,dc=homelinux,dc=org
ou: groups
objectClass: organizationalUnit

Die Informationen ins LDAP Directory übernehmen:

ldapadd -cxWD cn=admin,dc=test,dc=homelinux,dc=org -f /root/ldap_ldif/tree.ldif


Loglevel

Standardmäßig konfiguriert Debian LDAP, sodass keine Logausgaben erfolgen. Zur Fehlersuche sind aber Loginforamtionen meist sehr hilfreich. Evtl. Logausgaben werden im Syslog (/var/log/syslog) ausgegeben. Loginformationen können folgendermaßen ein- und ach wieder deaktiviert werden:

 vi /root/ldap_ldif/loglevel.ldif

Logausgaben aktivieren:

Folgende Zeilen einfügen:

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

Logausgaben deaktivieren:

Folgende Zeilen einfügen:

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: none

Die Informationen ins LDAP Directory übernehmen:

ldapmodify -QY EXTERNAL -H ldapi:/// -f /root/ldap_ldif/loglevel.ldif


Funktionstest Server

Mit dem Befehl slapcat werden zahlreiche Informationen des LDAP-Directories ausgegeben.

slapcat

Die Ausgabe könnte folgendermaßen aussehen:

dn: dc=test,dc=homelinux,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: test.homelinux.org
dc: test
structuralObjectClass: organization
entryUUID: 95bcb4b4-9eab-1031-9b24-5d17a552c400
creatorsName: cn=admin,dc=test,dc=homelinux,dc=org
createTimestamp: 20120929180232Z
entryCSN: 20120929180232.259042Z#000000#000#000000
modifiersName: cn=admin,dc=test,dc=homelinux,dc=org
...

Directory durchsuchen:

ldapsearch -xLLL

Die Ausgabe könnte folgendermaßen aussehen:

dn: dc=test,dc=homelinux,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: test.homelinux.org
dc: test

dn: cn=admin,dc=test,dc=homelinux,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

dn: ou=people,dc=test,dc=homelinux,dc=org
ou: people
objectClass: organizationalUnit

dn: ou=groups,dc=test,dc=homelinux,dc=org
ou: groups
objectClass: organizationalUnit


User und Gruppen anlegen

Bulbgraph.png Hinweis:

Es empfiehlt sich, die User- und Gruppen- ID (uid/gid) >2000 zu wählen, damit die LDAP User und Gruppen nicht mit den "normalen" Unix Usern (/etc/passwd) und Gruppen (/etc/groups) kolliedieren, die im Berich >1000 angelegt werden.


Gruppe

Um eine Gruppe GROUP mit der ID GID anzulegen folgendermaßen vorgehen (GROUP und ID müssen eindeutig sein):

vi /root/ldap_ldif/group.ldif

Folgende Zeilen einfügen und anpassen:

dn: cn=GROUP,ou=groups,dc=test,dc=homelinux,dc=org
cn: GROUP
gidNumber: GID
objectClass: top
objectClass: posixGroup
ldapadd -cxWD cn=admin,dc=test,dc=homelinux,dc=org -f /root/ldap_ldif/group.ldif


User

Um einen User USER mit der ID UID, der zur Gruppe mit ID GID gehört, folgendermaßen vorgehen (USER, GROUP und ID müssen eindeutig sein):

vi /root/ldap_ldif/user.ldif

Folgende Zeilen einfügen und anpassen:

dn: uid=USER,ou=people,dc=test,dc=homelinux,dc=org
uid: ccolumbus
uidNumber: UID
gidNumber: GID
cn: Christopher
sn: Columbus
objectClass: top
objectClass: inetOrgPerson
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
homeDirectory: /home/USER
ldapadd -cxWD cn=admin,dc=test,dc=homelinux,dc=org -f /root/ldap_ldif/ueser.ldif

Passwort für den User USER vergeben:

ldappasswd -x -D cn=admin,dc=test,dc=hoemlinux,dc=org -W -S uid=USER,ou=people,dc=test,dc=homelinux,dc=org


Optional: SSL Verschlüsselung serverseitig akzeptieren

Die Übertragung der LDAP-Daten (z.B. User und Passwort-Hashes) kann mittels SSL-Vershlüsselung abgesichert werden.

Voraussetzung: CA-Root Zertifikat (cacert.pem) und Keyfile (ldap-server.key) und Serverzertifikat (ldap-server-cert.pem), das die IP-Adresse oder den Hostnamen des LDAP-Serers enthält. Diese evtl. erst erstellen (siehe hier: Debian_OpenSSL).

Zertifikate ablegen

Zertifikate in die entsprechenden Ordner kopieren:

mkdir /etc/ldap/ssl
cp /etc/ssl/CA/cacert.pem /etc/ldap/ssl
cp /etc/ssl/CA/keys/ldap-server.key /etc/ldap/ssl
cp /etc/ssl/CA/certs/ldap-server-cert.pem /etc/ldap/ssl
chown -R root:openldap /etc/ldap/ssl
chmod -R o-rwx /etc/ldap/ssl

Konfiguration

OpenLDAP ldif-File erstellen:

vi /root/ldap_ldif/tls.ldif

Folgende Zeilen einfügen:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/ldap-server-cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/ldap-server.key

TLS-Konfiguration ins LDAP Directory einbinden:

ldapmodify -QY EXTERNAL -H ldapi:/// -f /root/ldap_ldif/tls.ldif

SSL aktivieren (ldaps://):

vi /etc/default/slapd

Die Zeile

SLAPD_SERVICES="ldap:/// ldapi:///"

folgendermaßen erweitern:

SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"

LDAP-Konfig-File:

vi /etc/ldap/ldap.conf

Folgende Einstellungen vornehmen:

URI  ldaps://IP_DES_SERVER 
BASE LDAP_Base  z.B. dc=test,dc=homelinux,dc=org
TLS_CACERT /etc/ldap/ssl/cacert.pem
TLS_REQCERT never

OpenLDAP neu starten:

/etc/init.d/slapd restart


Funktionstest Server SSL

ldapsearch -xLLL

Ausgaben analog zu LDAP Funktionscheck


Optional: Grafisches Usser Account Admin Tool

Im folgenden wird der LDAP Acccount Manager (LAM) näher beschrieben, mit dessen Hilfe Linux User/Gruppen, Samba User Details usw. auf relativ einfache Art-und Weise grafisch im Webbrowser administriert werden können. Dies ist erheblich einfacher und weniger fehleranfällig, als oben beschriebene Vorgehensweise mittels .lidif File.

Bulbgraph.png Hinweis:
Der LDAP Account Manager kann, muss aber nicht zwingend auf dem selben Server installiert werden, wie der LDAP-Server. Nachdem Apache nötig ist, empfiehlt es sich, den LDAP-Manager auf dem Webserver zu installieren.


Installation

Debian Repository

LDAP Account Manager ist in den Debian-Repositories enthalten. Die Version ist allerdings bereits etwas älter, sodass nicht alle Features zur Verfügung stehen.

apt-get install ldap-account-manager


Debian Paket Download und Installation

Neben obiger Version aus den Debian Repositories, kann die jeweils aktuelle stabile Version auch als Debian Paket heruntergeladen und installiert werden. Diese Vorgehensweise ist nur geringfügig aufwändiger als obiges Vorgehen.

cd /usr/local/src
wget http://sourceforge.net/projects/lam/files/LAM/4.0.1/ldap-account-manager_4.0.1-1_all.deb
apt-get install php5-ldap php-fpdf php5-gd
dpkg -i ldap-account-manager_4.0.1-1_all.deb

Konfiguration

  • Webbrowser öffnen und http://IP_DES_SERVER/lam eingeben


General Settings

  • Links oben auf den Link LAM configuration" klicken
  • Edit general settings anwählen
  • Passwort eingeben (LAM_MASTER_PWD Standardmäßig nach der Installation: lam)
  • Hier können je nach Bedarf eingie Einstellungen vorgenommen werden:
    • Session Timeout: Nach längerer Inaktivität (Session Timeout in Minuten) muss das Passwort erneut eingegeben werden.
    • Allowed Hosts: Zugriffsbeschränkung auf bestimmte IP-Adressen/Hosts
    • Password Policy: Beschränkungen für Passwörter.
    • Logging: Falls Probleme mit LAM auftauchen kann es evtl. hilfreich sein, den Loglevel zu erhöhen (z.B. auf Debug), um mehr Hinweise zu erhalten
    • Es kann auch hilfreich sein, die Logausgaben in ein eigenes File (z.B. /var/log/lam.log) ausgeben zu lassen. Dieses muss mit touch /var/log/lam.log angelegt und die Zugriffsrechte mit chmod 777 /var/log/lam.log erhöht werden.
    • Change master Password (LAM_MASTER_PWD): Setzt ein neues Masterpasswort, das den Zugriff auf die LAM-Settings schützt (nicht das Zugriffspasswort auf das LDAP Directory).
    • Nachdem alle Einstellungen vorgenommen sind, den Button Ok anklicken
    • Anschließend kehrt LAM zum Login-Bildschirm rurück

Server Profiles

  • Links oben auf den Link LAM configuration" klicken
  • Edit server profiles anwählen
  • Passwort eingeben (LAM_MASTER_PWD)
  • General Settings
    • Server Adress: ldap://localhost:389 bzw. ldaps://localhost falls SSL-Verschlüsselung eingerichtet ist. Falls der LDAP-Server nicht auf dem selben Server läuft, entsprechend die IP-Adresse bzw. Hostname des LDAP-Servers eintragen.
    • Activate TLS: Sollte nicht zusammen mit ldaps:// (Port 636) verwendet werden, da dieses Protokoll bereits SSL-verschlüsselt ist. TLS kann zusammen mit ldap:// (Port 389)verwendet werden, wenn die voraussetzungen für SSL gegeben sind.
    • Tree suffis: LDAP_Base z.B. dc=test,dc=homelinux,dc=org
    • Default language: Hier kann die Sprache auf Deutsch umgestellt werden. Im folgenden werden trotzdem die englischen Begriffe verwendet.
    • list of Valid Users: cn=admin,LDAP_Base z.B. cn=admin,dc=test,dc=homelinux,dc=org
  • Account Types
    • Users LDAP suffix: ou=people,LDAP_Base z.B. ou=people,dc=test,dc=homelinux,dc=org
    • Grups LDAP suffix: ou=groups,LDAP_Base z.B. ou=groups,dc=test,dc=homelinux,dc=org
    • Hosts LDAP suffix: ou=computers,LDAP_Base z.B. ou=computers,dc=test,dc=homelinux,dc=org
    • Samba Domains LDAP suffix: LDAP_Base z.B. dc=test,dc=homelinux,dc=org
  • Modules
Es sollten nur diejenigen Module aktiviert werden, die auch installiert und für LDAP eingerichtet sind (z.B. Samba), da es ansosten zu Fehlern beim Anlegen bzw. Ändern von Accounts kommt.
  • Module Settings
Minimale und maximale Grenzen für UID und GID Einträge evtl. anpassen.


  • Mit Save sämtliche Änderungen übernehmen


LDAP Login

  • Webbrowser öffnen und http://IP_DES_SERVER/lam eingeben
  • Passwort des LDAP-Adimin Unsers (LDAP_ADMIN_PWD) eingeben.
  • Button Login anklicken


Bulbgraph.png Hinweis:
Falls eine Org-Einheit im LDAP fehlen sollte, erscheint ein Hinweis, um den entsprechenden ou-Eintrag zu erzeugen.

Die weitere Bedienung sollte selbsterklärend sein.