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.)
Sie können dies also erreichen, aber die eigentlichen Berechtigungsprüfungen werden sshd-seitig durchgeführt (der Dienst entscheidet selbst, ob Benutzer akzeptiert werden oder nicht). Unter Linux geschieht dies normalerweise im PAM-Modul der LDAP-Client-Software (entweder nslcd oder sssd).
und möglicherweise den entsprechenden Schlüssel zurückgeben, um Zugriff zu gewähren.
Beachten Sie den Unterschied zwischen Authentifizierung und Autorisierung. Ersterer überprüft, wer der Benutzer ist; Letzterer überprüft, was der Benutzer tun darf.
Also während es ist möglich Um die LDAP-Software so zu konfigurieren, dass sie keine Schlüssel zurückgibt (da sie bereits weiß, dass der Benutzer später abgelehnt wird), funktionieren LDAP-Clients standardmäßig nicht und sind möglicherweise schwieriger zu implementieren.
Stattdessen ist es normal, dass der LDAP-Server würde immer Geben Sie die SSH-Schlüssel zurück, die der sshd während der Authentifizierungsphase akzeptieren würde - denn wenn der Benutzer dies nicht darf benutzen dem Server werden sie in der Autorisierungsphase ohnehin abgelehnt.
Die letztere Methode hat den Vorteil, dass sie unabhängig vom Authentifizierungsmechanismus gleich gut funktioniert. Unabhängig davon, ob sich der Benutzer mit einem Kennwort, einem SSH-Schlüssel oder einer Smartcard oder einem Kerberos-Token authentifiziert, werden sie dennoch abgelehnt (oder akzeptiert).
Nach einigen Recherchen scheint es möglich zu sein, dies zu tun, aber ich konnte nirgendwo finden, wo es für bestimmte Server ist.
Wie oben erwähnt, kann es einfacher sein, das Abrufen von Schlüsseln von der Autorisierung zu trennen.
Konfigurieren Sie die LDAP-Client-Software (SSSD oder nslcd), um Benutzerinformationen aus dem Verzeichnis abzurufen und die Autorisierung anhand einiger Regeln zu überprüfen. (Die traditionellste Methode ist die Verwendung von host:
Attribute für Benutzerkonten.)
Testen Sie mit, ob pam_sss von SSSD (oder pam_ldap von nslcd) die Berechtigungen korrekt überprüft pamtester sshd Someusername acct_mgmt
.
Konfigurieren Sie eine AuthorizedKeysCommand
in sshd_config, um die Schlüssel von LDAP abzurufen. Wenn Sie sich früher für SSSD entschieden haben, ist hierfür ein Hilfsprogramm integriert. Andernfalls müssen Sie möglicherweise Ihre eigenen schreiben.
stoßen auf verschiedene Probleme wie Prüfsumme für Konfigurationsdateien usw.
OpenLDAP hat zwei Konfigurationsformate:
- Eine einfache Textdatei
slapd.conf
, die direkt bearbeitet werden kann und nicht Prüfsummen haben.
- Das LDAP-basierte
cn=config
, die - obwohl in Form von LDIF-Textdateien auf der Festplatte gespeichert - nicht direkt bearbeitet werden sollen. Sobald Sie eine cn = config erstellt haben, sollten Sie dies tun alles Bearbeitung über LDAP selbst (oder über slapadd
wenn erforderlich).
Sie haben Prüfsummen gefunden, als Sie sich die 2. Variante angesehen haben. Ich kann nur davon ausgehen, dass sie als Abschreckung gegen direkte Bearbeitung da sind (es ist aber nicht unmöglich sollte nicht (außer in Notfällen).