Galaxypam_tally2
で使用しようとしています。/etc/pam.d
sshdを次に変更しました
#%PAM-1.0
auth required pam_securetty.so
auth required pam_tally2.so deny=3 unlock_time=600
auth required pam_env.so
auth required pam_unix.so
auth required pam_nologin.so
account required pam_unix.so
password required pam_unix.so
session required pam_limits.so
session required pam_unix.so
session required pam_lastlog.so nowtmp
session optional pam_mail.so standard
ログイン前にテストアカウントを作成し、ログイン失敗回数をテストしました。
pam_tally2 -u tst3402
(empty)
これで正しいパスワードでログインします(これはexpect
スクリプトによって行われ、パスワードは次のようになりますaaa12BBB,
)。
spawn ssh -l tst3402 172.9.2.1
Password:
No mail.
Last login: Tue Mar 20 14:25:17 2018 from 172.2.2.2
tst3402@hostname:~>
status OK
どこ
- 正常状態送信者:
expect
失敗回数を再確認してください
pam_tally2 -u tst3402
Login Failures Latest failure From
tst3402 1 03/20/18 14:25:17 172.2.2.2
つまり、3回のログイン成功後にアカウントがロックされます。
質問
正常にログインした後にpam_tally2
1つの失敗が表示されるのはなぜですか?
一般的な容疑者:
私はSSHキーが利用可能であることを知っていますが、ISAE3420の呪いを受けました。
ssh -vvv -lを使用すると、2つの交換が表示されます。2つの失敗を表示する必要がありますか?
debug3: send packet: type 50 debug3: receive packet: type 51
SELinuxなし
security.SEでpam_tally2の問題が見つかりませんでした。
答え1
質問
私のコンピュータのいずれかで同様の動作が表示されます。sudo
正しいパスワードを使用すると、pam_tally2
カウンターにエントリが生成されます。
コンテキスト
このpam.d/sudo
項目はデフォルトで、非常に簡単です。
session required pam_env.so readenv=1 user_readenv=0
session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive
common-auth
一番上の行の前に次の行を追加しました。pam_tally2.so
pam_unix.so
auth required pam_tally2.so onerr=fail audit deny=5 unlock_time=900
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_cap.so
説明する
マニュアルpam_tally2
ページには次のように指定されています(強調)。
認証フェーズは、試行されたログインカウンタを増やし、ユーザーのアクセスを拒否する必要があるかどうかを確認することから始まります。ユーザーが認証された場合pam_setcred(3) が呼び出されると、ログインプロセスが続行されます。試行カウンターをリセットします。
したがって、これまではスタックが正しく呼び出されていないようですpam_setcred
。ファイルはpam.d
呼び出されませんpam_setcred
(システムにインストールされていません)。
解決策
例では、マニュアルページには次のように指定されています(強調表示)。
モジュールを呼び出す必要はありません。アカウント段階でログインが正しく pam_setcred(3) を呼び出すためです。
pam_setcred
したがって、呼び出しがない場合は、account
このステップでモジュールを呼び出す必要があります。
ファイルを編集pam.d/common-account
し、一番上に追加しました。
account required pam_tally2.so
ユーザーが認証を完了すると、カウンタがリセットされます。
太陽
ユーザーが認証をキャンセルした場合(パスワードの入力を求められたときにCtrl + Cを押す)、カウンターは減少せずに増加するため、失敗した試行と区別することはできません。