Wie kann ich MFA nur anfordern, wenn es eingerichtet wurde?

Wie kann ich MFA nur anfordern, wenn es eingerichtet wurde?

Ich möchte von jedem Benutzer verlangen, MFA mit Google Authenticator zu verwenden. Jedes Mal, wenn ich einen neuen Benutzer hinzufüge, möchte ich ihm erlauben, sich nur einmal mit seinem SSH-Schlüssel anzumelden, und ihn bei der Anmeldung auffordern, einen geheimen Schlüssel zu erstellen, indem er das GAuth-Setup in seinem ausführt . Dadurch wird in seinem Home-Verzeichnis .bash_loginerstellt . Ich bin gefolgt von~/.google_authenticatordiese Anweisungensshd_config(Strg+F „Eine andere Methode, um die Erstellung zu erzwingen“), um meine und einzurichten pam.d. Hier sind sie, ohne Kommentare:

/etc/ssh/sshd_config

X11Forwarding yes
PrintMotd no

AcceptEnv LANG LC_*

Subsystem   sftp    /usr/lib/openssh/sftp-server

AllowUsers me him
PermitRootLogin no
MaxStartups 15
UsePAM yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive

/etc/pam.d/sshd

# Standard Un*x authentication.
#@include common-auth

account    required     pam_nologin.so

# Standard Un*x authorization.
@include common-account

session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close

session    required     pam_loginuid.so

session    optional     pam_keyinit.so force revoke

@include common-session

session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

session    optional     pam_mail.so standard noenv # [1]

session    required     pam_limits.so

session    required     pam_env.so # [1]

session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale

session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open

# Standard Un*x password updating.
@include common-password

auth required pam_google_authenticator.so nullok

So wie ich es verstehe, bedeutet das „nullok“ in der letzten Zeile, dass, wenn kein geheimer Schlüssel eingerichtet wurde, nichts erforderlich ist, um diese Authentifizierungsanforderung zu erfüllen. Wenn ich jedoch versuche, mich mit einem Benutzer anzumelden, der keinen geheimen Schlüssel konfiguriert hat, erhalte ich etwa Folgendes:

$ ssh him@my_device
[email protected]: Permission denied (keyboard-interactive).

Sobald die .google_authenticatorDatei erstellt ist, sollte die Anmeldung problemlos ablaufen. Wie erlaube ich diese Art der Anmeldung, solange .google_authenticatornicht vorhanden ist?

Dies ist übrigens Ubuntu 18.04 LTS.

Antwort1

Mir ist ein Update der README-Datei des Projekts aufgefallen, das Informationen zu dieser nullokOption hinzufügt.

PAM requires at least one `SUCCESS` answer from a module, and `nullok`
causes this module to say `IGNORE`. This means that if this option is
used at least one other module must have said `SUCCESS`. One way to do
this is to add `auth required pam_permit.so` to the end of the PAM
config.

aus: https://github.com/google/google-authenticator-libpam/commit/5e804ec11104a1ab17ce02d0681130ded037f39b

verwandte Informationen