私はpam_tallyを使ってUbuntuでアカウントロックアウトを実装しようとしています。次の行を追加してみました。 共通認証
auth required pam_tally.so deny=3
account required pam_tally.so
失敗はログに記録されますが、失敗の最大数に達してもアカウントはロックされません。直接ログインしてこれを試しています (GNOME ログイン画面)。
何かアドバイスはありますか? pam.d/gdm またはログイン ファイルも追加する必要がありますか?
答え1
common-auth の背後にある説明
簡単な解決策を探している場合は、以下をご覧ください。common-auth をロックアウトするように設定する方法。
これがロックアウトの構成方法を理解するのに役立つことを願っています/etc/pam.d/common-auth
。
内のすべてのコメントを削除すると/etc/pam.d/common-auth
、次のようになります。
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
このファイルの各行とその使用方法を見てみましょう。
auth [success=1 default=ignore] pam_unix.so nullok_secure
パスワード入力を読み取ります。パスワードが正しい場合、ファイルの次の行 ( がある行pam_deny.so
) はスキップされます。 の値を設定することで、スキップする行数を変更できますsuccess=1
。
auth requisite pam_deny.so
ログイン試行を直ちに失敗します。ここでの単語は、requisite
認証が失敗するとすぐに終了するように指示します。他の行ではrequired
代わりに を使用し、モジュールの終了まで待機して失敗を通知します。
auth required pam_permit.so
ログイン試行を許可します。これは を使用して行われますpam_permit.so
。
それが確立されると、ユーザーをロックアウトするようにモジュールを構成することがよりよく理解できるようになります。
common-auth をロックアウトするように設定する方法
Ubuntuの場合:
次の行を追加しますpam_deny.so の後、pam_permit.so の前:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800
pam_deny.so 行を次のように変更します。
auth required pam_deny.so
ファイル全体は次のようになります。
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth required pam_deny.so
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800
auth required pam_permit.so
ニーズに合わせて次のオプションを設定できます。
deny=3
- ロックアウトされるまでに許可される試行回数。unlock_time=1800
- 再度ログインを試みることができるまでの秒数。(追加情報:システムが一連の失敗の後にロック解除され、再度認証に失敗した場合、認証を2回以上試みることはできません。システムは、unlock-time
また。)
ほとんどのリソースでは、順序の重要性を強調して、この行をファイルの先頭に追加することを推奨していますが、Ubuntu デスクトップ システムでは、この構成により GUI ログイン画面にアクセスできなくなる可能性があります。
なぜこのようなことが起こるのでしょうか? Ubuntu のログイン画面でユーザーを選択すると、PAM モジュールがすぐに開始され、行pam_unix.so
(パスワード入力行) で待機してから処理が進むようです。pam_tally2.so
この「停止ポイント」の前に行を配置すると、ロックアウトがすぐにアクティブになり、矢印キーを押してユーザーから移動すると、モジュールはログインに失敗したことを通知してpam_tally2
増分します。パスワードを入力しなくても、すぐに次のような状況に陥ります。
common-auth ファイルが正しく構成されていない典型的な Ubuntu ログイン画面。
このpam_tally2.so
行をファイルの末尾に配置すると、この問題は解決します。この構成では適切な順序が維持されます。最初の行はパスワードの有効性に基づいてジャンプしpam_deny.so
、そこに到達するpam_permit.so
までにpam_tally2.so
、不正なパスワード入力がすでに示されます。
pam_permit.so
入力したパスワードに関係なく に到達しても、pam_deny.so
にも到達した場合はモジュールは常に失敗します。これは、pam_deny.so
行に が含まれているためです。required
これにより、残りの行は実行できますが、モジュール自体は最終的に失敗します。
PAM の仕組みの詳細については、「PAM の仕組み」を Google で検索するか、次のサイトにアクセスしてください。http://www.tuxradar.com/content/how-pam-works
それで大丈夫でしょう!
答え2
これを見てからしばらく経ちましたが、
編集する必要があると思います/etc/pam.d/common-auth
これを上ファイルの(ルールの順序が重要)。
auth required pam_tally.so per_user magic_root onerr=fail
次に、許可される試行回数を設定します
sudo faillog -m 3
アカウントのロックを解除するには
faillog -u login_name -r
詳細については
私のブログhttp://blog.bodhizazen.com/linux/ubuntu-how-to-faillog/
または男 pam_tally
答え3
また、ログイン試行が n 回失敗した後にユーザー アカウントをロックするために faillock を試すこともできます。
以下のリンクの指示に従って動作させることができました。この指示では pam_faillock.so が使用されており、Ubuntu と CentOS の両方で動作すると思います。
CentOS および類似の派生製品の場合:
/etc/pam.d/system-auth
/etc/pam.d/password-auth
Ubuntu/Debian および類似の派生版の場合:
/etc/pam.d/common-auth
/etc/pam.d/common-account
ログイン試行が複数回失敗した後に Linux ユーザー アカウントをロックする
これが他の人の助けにもなることを願っています。