pam_tally2 は失敗したログインを追加します。

pam_tally2 は失敗したログインを追加します。

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_tally21つの失敗が表示されるのはなぜですか?

一般的な容疑者:

  • 私は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.sopam_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を押す)、カウンターは減少せずに増加するため、失敗した試行と区別することはできません。

おすすめ記事