すべてのユーザーにGoogle AuthenticatorによるMFAの使用を義務付けたいと思います。新しいユーザーを追加するたびに、SSHキーを使用してログインすることを1回だけ許可し、ログイン時にGAuthセットアップを実行して秘密鍵を作成するように要求します.bash_login
。これにより、~/.google_authenticator
ホームディレクトリに秘密鍵が作成されます。私は次のようにしました。これらの指示(Ctrl+F「作成を強制する別の方法」) を使用して、およびを設定しますsshd_config
。pam.d
コメントを削除した内容は次のとおりです。
/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
私の理解では、最後の行の「nullok」は、秘密鍵が設定されていない場合、その認証要件を満たすために何も必要ないことを意味します。ただし、秘密鍵が設定されていないユーザーでログインしようとすると、次のようなメッセージが表示されます。
$ ssh him@my_device
[email protected]: Permission denied (keyboard-interactive).
ファイルが作成されると、ログインは正常に続行されるはずです。が存在しない.google_authenticator
場合に、この種のログインを許可するにはどうすればよいですか?.google_authenticator
ちなみにこれはUbuntu 18.04 LTSです。
答え1
プロジェクトの README にnullok
オプションに関する情報が追加された更新に気付きました。
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.