Vielleicht ist die genaue Frage, wie man Pam so konfiguriert, dass Passwörter nicht zugelassen werden.
Richtig. Sie sind bereits auf die Tatsache gestoßen, dass die Einstellung UsePAM no
im Allgemeinen ein schlechter Rat ist. Es verhindert nicht nur jede Form von PAM-basierter Authentifizierung, sondern deaktiviert account
und session
moduliert auch. Zugriffssteuerung und Sitzungskonfiguration sind gute Dinge.
Lassen Sie uns zunächst eine Liste der Anforderungen erstellen:
- OTP über
pam_google_authenticator.so
. Dies erfordert UsePAM yes
und ChallengeResponseAuthentication yes
. Schließlich fordern Sie sie zur Eingabe eines Berechtigungsnachweises auf!
- Keine andere Form der Passwortauthentifizierung über PAM. Dies bedeutet,
auth
dass alle Module deaktiviert werden, die möglicherweise die Übermittlung eines Kennworts über keyboard-interactive
Anmeldungen zulassen . (die wir für OTP aktiviert lassen müssen)
- Schlüsselbasierte Authentifizierung. Wir benötigen eine
publickey
Authentifizierung und möglicherweise, gssapi-with-mic
wenn Sie Kerberos konfiguriert haben.
Normalerweise überspringt die Authentifizierung mit einem Schlüssel die PAM-basierte Authentifizierung vollständig. Dies hätte uns in unseren Tracks mit älteren Versionen von openssh aufgehalten, aber Debian 8 (jessie) unterstützt die AuthenticationMethods
Direktive. Dies ermöglicht es uns, mehrere Authentifizierungsmethoden zu erfordern, funktioniert jedoch nur mit Clients, die SSHv2 implementieren.
sshd config
Nachstehend die Zeilen, für die ich einen Vorschlag mache /etc/ssh/sshd_config
. Stellen Sie sicher, dass Sie eine Möglichkeit haben, auf dieses System zuzugreifen, ohne dass sshd
Sie etwas beschädigen!
# Require local root only
PermitRootLogin no
# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes
# Not needed for OTP logins
PasswordAuthentication no
# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no
# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive
# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive
Vergessen Sie nicht neu zu laden, sshd
sobald diese Änderungen vorgenommen wurden.
PAM-Konfiguration
Wir müssen PAM noch konfigurieren. Unter der Annahme einer sauberen Installation von Debian 8 (gemäß Ihrer Frage):
- Kommentar
@include common-auth
von /etc/pam.d/sshd
.
- Überprüfen
/etc/pam.d/sshd
und bestätigen Sie, dass keine Zeilen auth
vorhanden sind, die mit beginnen. Wenn dies eine saubere Installation ist, sollte es keine geben, aber es ist am besten, sicher zu sein.
auth
Eintrag für hinzufügen pam_google_authenticator.so
.
Denken Sie daran, dass lokale Kennwörter weiterhin funktionieren.
Wir haben keine Änderungen vorgenommen, die sich auf die Anmeldung über eine lokale Konsole auswirken oder verhindern würden, dass Benutzer Kennwörter verwenden, um ihre Berechtigungen über zu aktualisieren. sudo.
Dies lag außerhalb des Bereichs der Frage. Wenn Sie sich dazu entschließen, die Dinge weiterzuführen, denken Sie daran, dass root immer berechtigt sein sollte, sich lokal über ein Passwort anzumelden. Sie könnten sich versehentlich aus dem System ausschließen.
ChallengeResponseAuthentication
die tastaturinteraktive Authentifizierungsmethode unterbrochen, die für PAM-Authentifizierungsmodule erforderlich ist, die OTP verarbeiten. (gewünscht durch das OP) Deaktivieren von CRA nur sicher ist , ausführen , wenn Sie wirklich haben null PAM - Module in demauth
Stapel , dass Bedarf an Feuer. WennPasswordAuthentication
undGSSAPIAuthentication
deaktiviert sind, wird ein Passwort nur akzeptiert, wenn PAM ein aktiviertes Authentifizierungsmodul hat, das danach fragt.um die Passwortanfrage abzulehnen
Kommentar zu dieser Zeile
in /etc/pam.d/sshd
und stellen Sie sicher, dass am Ende dieser Zeile kein nullok steht, es sei denn, die Authentifizierung über ssh ohne Verwendung von OTP ist in Ordnung
quelle