ウェブサイト検索

SSHセキュリティ:pam_faillockを使用して失敗したログイン試行をロックする


pam_tally2 モジュールは、一定回数のSSHログイン試行が失敗した後にユーザーアカウントをロックするために以前使用されていましたが、より柔軟性とセキュリティオプションがあるため、RHELベースのディストリビューションや他の現代的なLinuxディストリビューションでは廃止され、pam_faillock に置き換えられました。

以前は、pam_tally2モジュールが失敗したログイン試行のカウントとアカウントのロックを担当していました。しかし、セキュリティの向上の一環として、pam_faillockが新しいLinuxバージョンにおける失敗したログイン試行の管理の標準となり、より良い統合と多くの構成オプションを提供するようになりました。

pam_tally2からpam_faillockへの移行

pam_tally2は、pam_tally2.soとpam_tally2コマンドの2つの部分から構成されていましたが、より安全で柔軟な方法でログイン試行を処理するように設計されたpam_faillockに置き換えられています。

pam_faillock は、次のような改善された機能を提供します:

  • 失敗した試行の強化されたログ記録と報告。
  • アカウントロックアウトポリシーの管理を改善する。
  • 失敗したログイン試行に対する設定可能な制限と、タイムアウト後の自動アカウントロック解除のサポート。

この記事では、一定回数のログイン失敗後に pam_faillock モジュールを使用してSSHアカウントのロックアウトを設定する方法を示します。

pam_faillockを使用してユーザーアカウントをロックおよびロック解除する方法

システムと設定しているサービスに応じて、両方のPAM設定ファイル/etc/pam.d/password-authと/etc/pam.d/sshdを開いてください。

sudo vi /etc/pam.d/password-auth
sudo vi /etc/pam.d/sshd

auth セクションの先頭に次の行を追加して、ログイン失敗試行ポリシーを設定してください:

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=1200
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=1200

アカウントセクションに以下の行を追加して、ログイン失敗時のアカウント管理を有効にします:

account     required      pam_faillock.so

パラメータの説明:

  • deny=3: 3回の失敗した試行後にアクセスを拒否します。
  • even_deny_root: ポリシーをルートユーザーにも適用します。
  • unlock_time=1200: 20分後(1200秒)に自動的にアカウントを解除します。このオプションを削除すれば、手動でリセットされるまでアカウントはロックされたままとなります。
  • 監査: システム監査ログに失敗したログイン試行を記録します。

現在、/etc/security/faillock.confファイルを開き、失敗した試行回数がロックアウトを引き起こす閾値とロックアウト期間の時間を指定してください。

# Number of allowed failures before lockout
deny = 5

Lockout duration in minutes
unlock_time = 15

Path to the faillock database
Optional: You can specify where to store faillock information
faillock_path = /var/lib/faillock

次に、/etc/ssh/sshd_configファイルを開いて、SSH認証にPAMを使用するために以下の設定を有効にします。

UsePAM yes

変更を適用するには、SSHサービスを再起動してください。

sudo systemctl restart sshd

SSHアカウントロックアウト機能をテストする方法

上記の設定を保存した後、SSHサーバーへのログイン試行を3回失敗させることで、ログインロックアウトメカニズムをテストできます。

ssh [email 

[email 's password:
Permission denied, please try again.
[email 's password:
Permission denied, please try again.
[email 's password:
Account locked due to 3 failed logins

ユーザーのSSHログイン失敗を確認する方法

特定のユーザーの失敗したログイン試行を確認するには、以下のコマンドを使用してください。

sudo faillock --user username

例の出力:

Login           Failures  Latest failure     From
user                3     10/17/2024 14:15   192.168.0.5

ユーザーアカウントをリセットまたはロック解除する方法

失敗した試行をリセットしてユーザーアカウントを解除するには、以下のコマンドを使用してください:

sudo faillock --user username --reset

このコマンドは失敗した試行回数をリセットし、ユーザーのロックを解除します。

ユーザーアカウントがロック解除されているか確認中

アカウントがロック解除されていることを確認するには、再度faillockコマンドを実行してください:

sudo faillock --user username

ログイン試行が失敗していない場合、出力は空で、ユーザーアカウントがロック解除されていることを示します。

結論

結論として、pam_faillock モジュールは失敗したログイン試行を管理するための改善されたより安全な方法を提供し、現在は非推奨となっている pam_tally2 を置き換えます。最新のベストプラクティスとセキュリティ基準を維持するために、PAM設定ファイルを pam_faillock を使用するように更新してください。

詳細については、コマンドラインで pam_faillock マンページを使用できます。

man pam_faillock

関連記事: