FreeIPA: Admin Benutzer des Directory Servers absichern

Posted on Do 26 Dezember 2024 in Blog

Ich habe schon in unterschiedlichsten Beiträgen, siehe FreeIPA, pgbouncer und Postgres oder Data Engineering, Datensicherheit und Zugriffsrechte, berichtet, wie ich FreeIPA einsetze, um die Berechtigungen für Personen zu verwalten.

Ich will heute kurz zeigen, wie man den Zugriff Admin-Benutzer Directory Manager einschränken kann, um die Sicherheit der eigenen IPA-Instanz zu erhöhen.

Inhalt:

Einleitung

FreeIPA besteht aus unterschiedlichsten Komponenten und bietet die Möglichkeit, Benutzer:innen zentral zu verwalten. Ich nutze dies, wie eingangs bereits erwähnt, um die unterschiedlichsten Datenbank-Nutzer:innen und deren Rechte zu verwalten. Der inkludierte LDAP-Server selbst, kann natürlich auch noch wesentlich besser abgesichert werden, als es standardmäßig der Fall ist.

Aus Sicherheitsgründen wäre es gut, wenn man den Zugriff des Admin-Benutzers Directory Manager limitieren würden. Dieser kann sich standardmäßig von jedem Rechner im Netzwerk einloggen, der mit dem LDAP-Server kommunizieren kann.

Zugriffsbeschränkungen im 389 Directory Server

Der 389 Directory Server, der bei FreeIPA inkludiert ist, bietet die Möglichkeit auch zusätzliche Plug-ins zu aktivieren. Eines davon nennt sich Root DN Access Control und ermöglicht es, den Zugriff auf den Admin-Account Directory Manager auf unterschiedlichste Arten zu beschränken. ACHTUNG: bevor man sich an dem Plug-in versucht, sollte man jedenfalls ein Backup machen, da man sonst im Falle einer Fehlkonfiguration den Zugriff auf den Directory-Server verlieren könnte.

Aus Sicherheitsgründen sollte der Zugriff auf den Admin-Account nur von ausgewählten Hosts möglich sein. Für den Directory Managergelten die normalen Möglichkeiten User einzuschränken nicht, da er über den normalen ACI-Regeln steht. Daher gibt es dieses zusätzliche Plug-in.

Zusätzlich neben der Einschränkung nach Hosts, bietet das Plug-in auch die Möglichkeit den Zugriff zeitlich (Zeit, Tage) zu begrenzen. Damit könnte beispielsweise der Zugriff außerhalb von Bürozeiten verhindert werden.

In einem ersten Schritt, kann man sich die Liste der Plug-ins ausgeben lassen, um zu sehen, ob das Plug-in auch wirklich vorhanden ist:

    dsconf -D "cn=Directory Manager" ldap://example.com plugin list

Hier sollte dann RootDN Access Control in der Liste auftauchen. Wenn dem so ist, dann kann man das Plug-in aktivieren:

    dsconf -D "cn=Directory Manager" ldap://example.com plugin root-dn enable

Danach kann man die Hosts aktivieren, von denen man zugreifen will. Dabei kann man auch mehrere IP-Adressen angeben. ACHTUNG: alle IP-Adressen, die nicht erlaubt sind, sind automatisch verboten. Daher sollte man sehr gut überlegen, welche Adressen man angibt. Denn bei einer Fehlkonfiguration kann man sonst sehr leicht den Zugriff auf den Directory Server verlieren.

    dsconf -D "cn=Directory Manager" ldap://example.com plugin root-dn set --allow-ip 127.0.0.1 999.999.999.999

Die Änderungen selbst haben erst nach einem Neustart des LDAP-Servers einen Effekt. Allerdings kann man sich davor schon überzeugen, ob die Änderungen in die entsprechenden Dateien geschrieben worden sind:

    cat /etc/dirsrv/slapd-NAME_MEINES_SERVERS/dse.ldif | grep -i 'allow-ip'

Wenn alles funktioniert hat, dann sollte es nach einem Neustart, von allen nicht erlaubten Servern bei Abfragen mit dem Benutzer Directory Manager folgende Meldung geben:

    ldap_bind: Server is unwilling to perform (53)
            additional info: RootDN access control violation

Weitere Informationen:

Fazit

Das Plug-in RootDN Access Control bietet eine mächtige, aber auch gefährliche Möglichkeit, um den Admin-Zugriff auf den Server abzusichern.

Warum gefährlich?

Bei einer Fehlkonfiguration kann man sich vom LDAP-Server ausschließen. Andrerseits bietet es auch eine gute Möglichkeit, um die Nutzungsmöglichkeiten auf bestimmte Hosts einzuschränken und damit die Angriffsoberfläche zu reduzieren.