おそらく正確な質問は、パスワードを許可しないようにpamを構成する方法ですか?
正しい。あなたはすでに設定UsePAM noが一般に悪いアドバイスであるという事実につまずきました。PAMベースの認証のあらゆる形式を防ぐだけでなくaccount、sessionモジュールを無効にします。アクセス制御とセッション構成は良いことです。
まず、要件のリストを作成しましょう。
- OTP経由
pam_google_authenticator.so。これが必要ですUsePAM yesとChallengeResponseAuthentication yes。結局、資格情報の入力を求めています!
- PAMを介した他の形式のパスワード認証はありません。これは
auth、keyboard-interactiveログインを介してパスワードを送信できる可能性があるモジュールを無効にすることを意味します。(OTPを有効にしておく必要があります)
- キーベースの認証。
publickey認証を要求する必要がありgssapi-with-micます。Kerberosが構成されている場合はおそらく。
通常、キーを使用した認証は、PAMベースの認証を完全にスキップします。これは、opensshの古いバージョンを使用したトラックで私たちを止めましたが、Debian 8(jessie)はAuthenticationMethodsディレクティブをサポートし ます。これにより、複数の認証方法が必要になりますが、SSHv2を実装するクライアントでのみ機能します。
sshd config
以下は、私が提案する行です/etc/ssh/sshd_config。sshd何かを壊すことなく、このシステムにアクセスする方法があることを確認してください!
# 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
sshdこれらの変更が行われたら、リロードすることを忘れないでください。
PAM設定
まだPAMを構成する必要があります。Debian 8のクリーンインストールを想定(質問ごと):
@include common-authからのコメント/etc/pam.d/sshd。
- で
/etc/pam.d/sshd始まる行authが存在しないことを確認します。これがクリーンインストールである場合はありませんが、安全であることが最善です。
- の
authエントリを追加しpam_google_authenticator.soます。
ローカルパスワードは引き続き機能します。
ローカルコンソールを介したログインに影響する変更を加えたり、ユーザーがパスワードを使用して権限をアップグレードすることを防ぐことはできませんでしたsudo.。これは質問の範囲外でした。さらに物事を進めることにした場合は、rootがパスワードを介してローカルにログインすることを常に許可する必要があることに注意してください。そうしないと、誤ってシステムからロックアウトされる危険があります。