Ein Benutzer versucht also, auf eine Box zuzugreifen, die mit den Server- und Benutzerdetails an den LDAP-Server gesendet wird. Dies würde dann prüfen, ob diese Person Zugriff auf diesen Server hat
Ja und nein. Der Zweck eines LDAP-Servers besteht darin, Informationen zu speichern und keine willkürlichen Prüfungen durchzuführen. (Es ist nur eine Datenbank.)
So können Sie dies erreichen, aber die eigentlichen Berechtigungsprüfungen werden auf der sshd-Seite durchgeführt (der Dienst selbst entscheidet, ob Benutzer akzeptiert werden oder nicht). Unter Linux geschieht dies normalerweise innerhalb des zur LDAP-Clientsoftware gehörenden PAM-Moduls (entweder nslcd oder sssd).
und möglicherweise den korrelierenden Schlüssel zurückgeben, um Zugriff zu gewähren.
Beachten Sie den Unterschied zwischen Authentifizierung und Autorisierung. Erstere überprüft, wer der Benutzer ist. Letztere überprüft, was der Benutzer tun darf.
Es ist zwar möglich, die LDAP-Software so zu konfigurieren, dass keine Schlüssel zurückgegeben werden (da bereits bekannt ist, dass der Benutzer später abgelehnt wird), LDAP-Clients funktionieren jedoch nicht standardmäßig und sind möglicherweise schwieriger zu implementieren .
Stattdessen ist es normal, dass der LDAP - Server würde immer den SSH - Schlüssel kehrt die sshd sie während der Authentifizierungsphase akzeptieren würde - denn wenn der Benutzer nicht erlaubt ist, zu verwenden, um den Server, werden sie in der Genehmigungsphase ohnehin abgelehnt werden.
Die letztere Methode hat den Vorteil, dass sie unabhängig vom Authentifizierungsmechanismus gleich gut funktioniert. Unabhängig davon, ob der Benutzer sich mit einem Kennwort, einem SSH-Schlüssel oder einer Smartcard oder einem Kerberos-Token authentifiziert, werden sie alle gleich abgelehnt (oder akzeptiert).
Nach einigen Nachforschungen scheint es möglich zu sein, dies zu tun, aber ich konnte nirgends finden, wo es für bestimmte Server ist.
Wie oben erwähnt, kann es einfacher sein, den Schlüsselabruf von der Autorisierung zu trennen.
Konfigurieren Sie die LDAP-Clientsoftware (SSSD oder nslcd), um Benutzerinformationen aus dem Verzeichnis abzurufen und die Berechtigung anhand einiger Regeln zu überprüfen. (Die traditionellste Methode ist die Verwendung von
host:
Attributen für Benutzerkonten.)Testen Sie, ob pam_sss von SSSD (oder pam_ldap von nslcd) die Berechtigungen mit Hilfe von überprüft
pamtester sshd Someusername acct_mgmt
.Konfigurieren Sie eine
AuthorizedKeysCommand
in sshd_config, um die Schlüssel von LDAP abzurufen. Wenn Sie SSSD zuvor ausgewählt haben, verfügt es über ein integriertes Hilfsprogramm. Andernfalls müssen Sie möglicherweise Ihre eigenen schreiben.
stoßen Sie auf verschiedene Probleme wie Prüfsumme in Konfigurationsdateien usw.
OpenLDAP hat zwei Konfigurationsformate:
- Eine einfache Textdatei
slapd.conf
, die direkt bearbeitet werden kann und keine Prüfsummen enthält. - Die LDAP-basierte
cn=config
Software, die - obwohl sie in Form von LDIF-Textdateien auf der Festplatte gespeichert ist - nicht direkt bearbeitet werden soll. Nachdem Sie eine cn = config erstellt haben, sollten Sie die gesamte Bearbeitung über LDAP selbst (oderslapadd
ggf. über) vornehmen .
Sie haben Prüfsummen gefunden, als Sie sich die 2. Variante angesehen haben. Ich kann nur davon ausgehen, dass sie als Abschreckung gegen das direkte Editieren vorhanden sind (dies ist nicht unmöglich, sollte aber nur in Notfällen durchgeführt werden).