Uff, das erhöht die Komplexität aber noch mehr, oder?
Ich will nichts anderes mehr.
Mein LDAP Setup ein ein Primär-Server (ldap1) und eine Replikation (ldap2) - das sind die kleinen VPS100 mit Alpine die ihr manchmal bei mir rumfliegen seht.
LDAP regelt bei mir:
- PAM (Unix / POSIX Login)
Jeder Nutzer ist im LDAP hinterlegt mit Login, Passphrase, Homeverzeichnis, Shell, UID. Zusätzlich werden noch die Unix-Gruppen über LDAP verwaltet.
SSH und PTY Logins können entweder über Gruppenzugehörigkeiten oder über andere Attribute verwaltet werden.
Ich kann also jeden Nutzer für jeden Dienst einzelnd freischalten.
SFTP Jails ebenfalls.
Die Nutzer sind von den einzelnen Maschinen aus readOnly. Das Passwort kann zentral an einer Stelle (portal.h6g.de) geändert werden.
Es könnte auch über passwd geändert werden, das habe ich aber deaktiviert.
Unix Logins werden durch SSSD https://pagure.io/SSSD/sssd realisiert und nicht über PAM_LDAP. SSSD cached zudem, sodass im Falle eines Ausfalls beider LDAP Server ein Login trotzdem möglich ist.
Sudoers werden über Gruppenzugehörigkeit verwaltet. Es besteht die Möglichkeit den Nutzern nur Sudo-Rechte für ein System zu geben, sofern gewünscht.
- Viele andere Dienste
LDAP ist Industriestandard für Authentifikation (nebst Radius und Kerberos). Viele Applikationen erlauben LDAP als Auth-Quelle:
- gitea
- sogo
- redmine
um nur ein paar zu nennen.
Ja bitte. Ich bin mit meinem eigenen Schema noch unzufrieden, da besteht noch Verbesserungsbedarf.
Postfix und Dovecot nutzen beide LDAP als Quelle für die User, Postfächer (User = Postfach bei mir) und Aliase.
postfix/main.cf
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap-mailbox.cf
virtual_mailbox_domains = ldap:/etc/postfix/ldap-domains.cf
local_recipient_maps = $virtual_mailbox_maps
ldap-aliases.cf:
server_host = ldaps://ldap.h6g-server.net:636
search_base = ou=alias,ou=mail,dc=ldap,dc=h6g,dc=de
query_filter = (|(mail=%s)(mailAlternateAddress=%s))
result_attribute = janetMailbox #sehr verbesserungswürdig. Ich habe mit den Standard OpenLDAP Schemata gearbeitet.
bind_dn = cn=postfix,ou=service,dc=ldap,dc=h6g,dc=de
bind_pw = ******
ldap-domains.cf:
server_host = ldaps://ldap.h6g-server.net:636
search_base = ou=domain,ou=mail,dc=ldap,dc=h6g,dc=de
query_filter = (associatedDomain=%s)
result_attribute = associatedDomain
...
ldap-mailbox.cf:
server_host = ldaps://ldap.h6g-server.net:636
search_base = ou=user,dc=ldap,dc=h6g,dc=de
query_filter = (mail=%s)
result_attribute = janetMailbox
...
Display More
dovecot/dovecot.conf
passdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap.conf
}
userdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap.conf
}
dovecot-ldap.conf:
uris = ldaps://ldap.h6g-server.net:636
auth_bind = yes
ldap_version = 3
base = dc=ldap,dc=h6g,dc=de
user_filter = (|(mail=%u)(uid=%u))
pass_filter = (&(objectClass=posixAccount)(uid=%u))
dn = cn=dovecot,ou=service,dc=ldap,dc=h6g,dc=de
dnpass = ********
scope = subtree
user_attrs = \
homeDirectory=home, \
=user=%{ldap:uid}
Display More
Ein einfaches Tool zum Ändern von Passwörtern: https://github.com/jirutka/ldap-passwd-webui
Ich habe mein eigenes Tool in Verwendung in Kombination mit Apache DS.
Als LDAP Server nutze ich OpenLDAP mit MDB Memory Database