ログインに失敗した後にユーザーアカウントをロックする方法


このガイドでは、 CentOS、RHEL、Fedora の各ディストリビューションで、指定された回数ログインに失敗した後にシステムユーザーのアカウントをロックする方法を説明します。ここでの焦点は、連続した認証失敗回数の後にユーザーのアカウントをロックすることによって、単純なサーバーセキュリティを強化することです。

これは pam_faillock モジュールを使用することで達成できます。これは複数回の認証試行が失敗した場合にユーザーアカウントを一時的にロックし、このイベントの記録を保持するのに役立ちます。失敗したログイン試行は、デフォルトでは/var/run/faillock/である集計ディレクトリのユーザーごとのファイルに保存されます。

pam_faillock は、 Linux PAM Pluggable Authentication Modules )の一部です。これは、認証サービスをアプリケーションに実装するための動的メカニズム、および簡単に説明したさまざまなシステムサービスです。ユーザーのログインシェルの動作を監査するようにPAMを設定します。

連続して失敗した認証後にユーザーアカウントをロックする方法

以下のエントリを追加して、 /etc/pam.d/system-auth ファイルと /etc/pam.d/password-auth ファイルで上記の機能を設定できます。 auth セクションに移動します。

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

どこで:

  • audit – enables user auditing.
  • deny – used to define the number of attempts (3 in this case), after which the user account should be locked.
  • unlock_time – sets the time (300 seconds = 5 minutes) for which the account should remain locked.

これらの行の順序は非常に重要です。設定を誤ると、すべてのユーザーアカウントがロックされる可能性があります。

両方のファイルの auth セクションには、以下の内容がこの順序で配置されているはずです。

auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth        sufficient    pam_unix.so  nullok  try_first_pass
auth        [default=die]  pam_faillock.so  authfail  audit  deny=3  unlock_time=300
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

選択したエディタでこれら2つのファイルを開きます。

# vi /etc/pam.d/system-auth
# vi /etc/pam.d/password-auth 

両方のファイルの auth セクションのデフォルトエントリはこのように見えます。

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet
auth        required      pam_deny.so

上記の設定を追加すると、次のようになります。

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die]  pam_faillock.so  authfail  audit  deny=3  unlock_time=300
auth        requisite     pam_succeed_if.so uid >= 1000 quiet
auth        required      pam_deny.so

次に、上記の両方のファイルの[アカウント]セクションに、強調表示されている次のエントリを追加します。

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so
account     required      pam_faillock.so

失敗したログイン試行後にルートアカウントをロックする方法

認証に失敗した後にrootアカウントをロックするには、このように auth セクションの両方のファイルの行に even_deny_root オプションを追加します。

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

すべてを設定したら上記のポリシーを有効にするために sshd のようなリモートアクセスサービスを再起動することができます。ユーザーがサーバーに接続するためにsshを使用する場合です。

# systemctl restart sshd  [On SystemD]
# service sshd restart    [On SysVInit]

SSHユーザーの失敗したログイン試行をテストする方法

上記の設定から、 3 認証が失敗した後にユーザーのアカウントをロックするようにシステムを設定しました。

このシナリオでは、ユーザー tecmint がユーザー aaronkilik に切り替えようとしていますが、パスワードが間違っているため 3 間違ったログインをしています。 「許可が拒否されました」メッセージ、ユーザーの aaronkilik は4回目の試行で「認証失敗」メッセージが表示されるようにロックされています。

下のスクリーンショットに示すように、rootユーザーにもシステムへのログイン試行の失敗が通知されます。

失敗した認証試行を表示する方法

認証失敗ログを表示および変更するために使用される faillock ユーティリティを使用して、失敗したすべての認証ログを確認できます。

このように、特定のユーザーに対する失敗したログイン試行を表示できます。

# faillock --user aaronkilik

失敗したログイン試行をすべて表示するには、次のように引数を指定せずにfaillockを実行します。

# faillock 

ユーザーの認証失敗ログを消去するには、このコマンドを実行します。

# faillock --user aaronkilik --reset 
OR
# fail --reset	#clears all authentication failure records

最後に、ログインに失敗した後にユーザーまたはユーザーのアカウントをロックしないようにシステムに指示するには、 pam_faillock auth セクション( /etc/pam.d/system-auth および /etc/pam.d/password-auth )をクリックします。

コロンで区切られたユーザー名をオプションユーザーに追加するだけです。

auth  required      pam_env.so
auth   [success=1 default=ignore] pam_succeed_if.so user in tecmint:aaronkilik 
auth   required      pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth   sufficient    pam_unix.so  nullok  try_first_pass
auth   [default=die]  pam_faillock.so  authfail  audit  deny=3  unlock_time=600
auth   requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth   required      pam_deny.so

詳細については、 pam_faillock faillock のmanページをご覧ください。

# man pam_faillock
# man faillock 

以下の便利な記事も読んでください。

  1. TMOUT – Auto Logout Linux Shell When There Isn’t Any Activity
  2. Single User Mode: Resetting/Recovering Forgotten Root User Account Password
  3. 5 Best Practices to Secure and Protect SSH Server
  4. How to Get Root and User SSH Login Email Alerts

それで全部です!この記事では、x回の不正なログインや認証の試行に失敗した後にユーザーのアカウントをロックすることで、単純なサーバーセキュリティを強化する方法を示しました。下記のコメントフォームを使って、あなたの質問や考えを私たちと共有してください。