it-swarm.com.de

Wie verwende ich den SSH-Server mit PAM, verbiete aber die Kennwortauthentifizierung?

In vielen Tutorials werden Sie aufgefordert, Ihren SSH-Server folgendermaßen zu konfigurieren:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no 

aber mit diesem Setup können Sie PAM nicht verwenden, da ich 2 Factor Auth mit Google Authenticator (OTP Onetime Password) verwenden möchte. Ich benötige PAM.

Also, wie man ein neues Debian Jessie SSH Deamon konfiguriert, wenn ich die Anmeldung mit dem normalen Passwort verhindern möchte, aber trotzdem PAM verwenden möchte.

vielleicht ist die genaue Frage, wie man pam so konfiguriert, dass Passwörter nicht zugelassen werden.

Details zur PAM-Authentifizierung

Das Deaktivieren der PAM-basierten Kennwortauthentifizierung ist nicht intuitiv. Es wird auf so ziemlich allen GNU/Linux-Distributionen (mit Ausnahme von Slackware) zusammen mit FreeBSD benötigt. Wenn Sie nicht vorsichtig sind, können Sie PasswordAuthentication auf "no" setzen und sich dennoch mit nur einem Kennwort über die PAM-Authentifizierung anmelden. Es stellt sich heraus, dass Sie 'ChallengeResponseAuthentication' auf 'no' setzen müssen, um die PAM-Authentifizierung wirklich zu deaktivieren. Die FreeBSD-Manpages haben Folgendes zu sagen, was helfen kann, die Situation ein wenig zu klären:

Beachten Sie, dass, wenn ChallengeResponseAuthentication 'yes' ist und die PAM-Authentifizierungsrichtlinie für sshd pam_unix (8) enthält, die Kennwortauthentifizierung unabhängig vom Wert von PasswordAuthentication über den Challenge-Response-Mechanismus zulässig ist.

http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html

13
c33s

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 das Setzen von UsePAM no Im Allgemeinen ein schlechter Rat ist. Es verhindert nicht nur jede Form der PAM-basierten Authentifizierung, sondern deaktiviert auch die Module account und session. Zugriffskontrolle 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, dass alle auth - Module deaktiviert werden müssen, die möglicherweise die Übertragung eines Kennworts über keyboard-interactive - Anmeldungen ermöglichen. (was 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 Anweisung AuthenticationMethods. Dies ermöglicht es uns, mehrere Authentifizierungsmethoden zu erfordern, funktioniert jedoch nur mit Clients, die SSHv2 implementieren.


sshd config

Unten sind die Zeilen aufgeführt, die ich für /etc/ssh/sshd_config Vorschlage. Stellen Sie sicher, dass Sie ohne sshd auf dieses System zugreifen können, falls Sie etwas kaputt machen!

# 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, sshd neu zu laden, sobald diese Änderungen vorgenommen wurden.

PAM-Konfiguration

Wir müssen PAM noch konfigurieren. Angenommen, eine Neuinstallation von Debian 8 (gemäß Ihrer Frage):

  • Kommentar @include common-auth Von /etc/pam.d/sshd.
  • Überprüfen Sie /etc/pam.d/sshd Und stellen Sie sicher, dass keine Zeilen vorhanden sind, die mit auth beginnen. Es sollte keine saubere Installation geben, aber es ist am besten, sicher zu sein.
  • Fügen Sie einen auth -Eintrag für pam_google_authenticator.so Hinzu.

Denken Sie daran, dass lokale Passwörter immer noch funktionieren.

Wir haben keine Änderungen vorgenommen, die sich auf die Anmeldung über eine lokale Konsole auswirken oder Benutzer daran hindern würden, Kennwörter zu verwenden, um ihre Berechtigungen über Sudo. Zu aktualisieren. Dies lag außerhalb des Bereichs der Frage. Wenn Sie sich entscheiden, weiter zu gehen, denken Sie daran, dass root immer die Möglichkeit haben sollte, sich lokal über ein Passwort anzumelden. Andernfalls besteht die Gefahr, dass Sie sich versehentlich aus dem System herausschließen.

23
Andrew B

um die Passwortanfrage zu verbieten

kommentar diese Zeile

#auth       substack     password-auth

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

auth required pam_google_authenticator.so
1
JOduMonT