おそらく正確な質問は、パスワードを許可しないように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がパスワードを介してローカルにログインすることを常に許可する必要があることに注意してください。そうしないと、誤ってシステムからロックアウトされる危険があります。