Sichern von OpenLDAP

von Christopher Korn | 0 | 7955 Aufrufe

Anzeige Hier werben

Die Erstinstallation und Grundkonfiguration eines OpenLDAP Servers ist schnell durchgeführt. Für den Effektiveinsatz müssen allerdings meist strenge Sicherheitsrichtlinien befolgt werden, um die gespeicherten Daten vor unbefugtem Zugriff zu schützen. Dieser Artikel zeigt einige Möglichkeiten zur Sicherung eines OpenLDAP Servers und die Implementierung von Administrativen Rollen.

Erlaubte Passwort Algorithmen

OpenLDAP ermöglicht die exakte spezifikation des verwendeten Passwort Verschlüsselungsalgorithmus über die Option password-hash. Erlaubte Werte sind hier {SSHA}, {SHA}, {SMD5}, {MD5}, {CRYPT}, und {CLEARTEXT}.

Wird keine Angabe gemacht, wird {SSHA} verwendet.

<<TODO>>

Erweiterung von /etc/openldap/slapd.conf  
Text
1
password-hash   {ssha} {sha}

Zugriffsrechte

Sicherheitsanforderungen

Über das Schlüsselwort security ist es möglich sogenannte Security Strength Factors (SSF) anzugeben die von Clients erfüllt werden müssen. Innerhalb der Einstellung können verschiedene Parameter (Format: einstellung=wert) und Werte angegeben werden.

Die Angabe der Werte erfolgt numerisch, die Angabe von 0 bedeutet, dass keine gesonderten Sicherheitseinstellungen verwendet werden. 1 stellt die Datenintegrität sicher und eine Angabe eines Wertes größer als 1 legt fest, welche (ungefähre) Schlüssellänge für die Kommunikation mit dem Server verwendet werden muss, um die definierte Aktion durchführen zu können.

Erlaubte Paramter für security sind zum Beispiel:

  • ssf - Allgemeine Security Strength Factors
  • update_ssf - Für Updates benötigte Sicherheitseinstellungen
  • simple_bind - Für einfache Verbindungen benötigte Sicherheitseinstellungen

Zugriffskontrolle via slapd.conf

<<TODO>> Statische Config in slapd.conf - Seit 2.3 auch über slapd.d via LDAP Objekte möglich, blah blah

Syntax slapd.conf  
Text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        <access directive> ::= access to <what>
                [by <who> <access> <control>]+
        <what> ::= * |
                [dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
                [filter=<ldapfilter>] [attrs=<attrlist>]
        <basic-style> ::= regex | exact
        <scope-style> ::= base | one | subtree | children
        <attrlist> ::= <attr> [val[.<basic-style>]=<regex>] | <attr> , <attrlist>
        <attr> ::= <attrname> | entry | children
        <who> ::= * | [anonymous | users | self
                        | dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
                [dnattr=<attrname>]
                [group[/<objectclass>[/<attrname>][.<basic-style>]]=<regex>]
                [peername[.<basic-style>]=<regex>]
                [sockname[.<basic-style>]=<regex>]
                [domain[.<basic-style>]=<regex>]
                [sockurl[.<basic-style>]=<regex>]
                [set=<setspec>]
                [aci=<attrname>]
        <access> ::= [self]{<level>|<priv>}
        <level> ::= none | auth | compare | search | read | write
        <priv> ::= {=|+|-}{w|r|s|c|x|0}+
        <control> ::= [stop | continue | break]

Laufzeitkonfiguration

<<TODO>> slapd.d blah blah blah

Syntax olcAccess Objekte  
Text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        olcAccess: <access directive>
        <access directive> ::= to <what>
                [by <who> <access> <control>]+
        <what> ::= * |
                [dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
                [filter=<ldapfilter>] [attrs=<attrlist>]
        <basic-style> ::= regex | exact
        <scope-style> ::= base | one | subtree | children
        <attrlist> ::= <attr> [val[.<basic-style>]=<regex>] | <attr> , <attrlist>
        <attr> ::= <attrname> | entry | children
        <who> ::= * | [anonymous | users | self
                        | dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
                [dnattr=<attrname>]
                [group[/<objectclass>[/<attrname>][.<basic-style>]]=<regex>]
                [peername[.<basic-style>]=<regex>]
                [sockname[.<basic-style>]=<regex>]
                [domain[.<basic-style>]=<regex>]
                [sockurl[.<basic-style>]=<regex>]
                [set=<setspec>]
                [aci=<attrname>]
        <access> ::= [self]{<level>|<priv>}
        <level> ::= none | auth | compare | search | read | write
        <priv> ::= {=|+|-}{w|r|s|c|x|0}+
        <control> ::= [stop | continue | break]

SSL/SASL/TLS

<<TODO>>

Weitere Artikel zu LDAP auf Webmasterpro

Weitere Informationen

Über den Autor: Christopher Korn
Christopher Korn arbeitet seit mehr als 4 Jahren für die Landeshauptstadt München im Bereich Software Administration und IT Service Management.
Profilseite betrachten