Erzwingen Sie die Authentifizierung mit öffentlichem SSH-Schlüssel für bestimmte Benutzer

10

Ist es möglich, bestimmte Benutzer zu zwingen, sich mit einem öffentlichen Schlüssel anzumelden, während andere Benutzer sich mit einem Kennwort anmelden können? Da die Authentifizierung mit öffentlichem Schlüssel (mit Passphrase) stärker ist als die Authentifizierung nur mit Kennwort, möchten wir, dass sich Sudoer mit öffentlichem Schlüssel anmelden. Es ist jedoch weniger bequem, normale Benutzer dazu zu zwingen. In sshd_configwird keine richtlinienbezogene Konfiguration angezeigt.

Crend King
quelle

Antworten:

10

Sie haben einige Möglichkeiten. In dieser Antwort gehe ich davon aus, dass Sie eine sudoersGruppe definiert haben.

Schauen Sie sich die sshd_configManpage an und suchen Sie nach der MatchDirektive. Auf diese Weise können Sie Konfigurationsblöcke angeben, die nur für eine Teilmenge Ihrer SSH-Verbindungen gelten. Sie könnten so etwas tun:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

Theoretisch könnten Sie mit einer PAM-Konfiguration etwas Ähnliches erreichen, bei der Authentifizierungsversuche von Personen in der sudoersGruppe einfach fehlschlagen . Dies würde wahrscheinlich das Modul pam_succeed_if betreffen ... Sie könnten Ihrer authKonfiguration für sshd so etwas hinzufügen:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

Dies bedeutet, dass nur Personen, die nicht zur sudoersGruppe gehören, sich über PAM authentifizieren können. Beachten Sie, dass dies nicht getestet wurde. Sie können auch das Modul pam_listfile verwenden , um etwas Ähnliches zu tun.

Larsks
quelle
1
Vielen Dank! Ich muss auch beachten, dass die Match-Direktive in OpenSSH 5.0 eingeführt wird. Für konservative Distributionen wie CentOS ist es möglicherweise nicht nativ verfügbar.
Crend King
Dies bricht OpenSSH 7.7p1 - Ich musste die ChallengeResponseAuthentication-Direktive entfernen, um sie neu zu starten.
Rbsec
2

Eine andere mögliche Antwort, als @larsks, hat bei meiner Version von nicht funktioniert, ssh_dda meine Version anscheinend die hier gefundene Dokumentation verwendet, in der es heißt:

In den Zeilen nach einem Match-Schlüsselwort darf nur eine Teilmenge von Schlüsselwörtern verwendet werden. Verfügbare Schlüsselwörter sind. . .

Diese Liste von Schlüsselwörtern enthält nicht : ChallengeResponseAuthentication.

Ein wirklich lustiger Weg, den ich gefunden habe, war zu verwenden, AuthenticationMethodswas in Ihrem Fall so funktionieren würde:

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods Nimmt eine Liste von durch Kommas getrennten Werten, die eine Reihe von Methoden darstellen, die ein Benutzer übergeben muss, bevor er auf den Server zugreift.

AuthenticationMethods 'publickey,password' würde den Benutzer zwingen, mit einem öffentlichen Schlüssel und dann einem Passwort zu übergeben.

Um mehr zu lesen man sshd_config.

Rassig
quelle