ウェブサイト検索

失敗したSSHログイン試行後にユーザーをロックおよびロック解除する方法


サーバーを設定する際、SSHセキュリティは最優先事項です。デフォルトのSSH設定は、外部からの攻撃からサーバーを守るには通常十分ではありません。

したがって、ブルートフォース攻撃からの適切なセキュリティを提供するためには、追加の調整が必要です。その一つは、一定回数の誤ったログイン試行後に不正なユーザーを排除するためにfail2banを実装することです。同様に、pam_faillockモジュールを活用してアカウントロックアウトポリシーを実装することができます。

このガイドでは、RedHatベースのディストリビューションにおいて、指定された数のSSHログイン失敗後にシステムユーザーのアカウントをロックする方法を示します。Debianベースのディストリビューションでは、pam_tally2モジュールを使用してSSHログインの失敗をロックする必要があります。

ここでは、連続した不成功のSSH認証の後にユーザーのアカウントをロックすることによって、簡単なサーバーセキュリティを強化することに焦点を当てています。

pam_faillock モジュールとは何ですか?

pam_faillockモジュールは、アプリケーションと標準認証方法を分離する共有ライブラリで構成されるユーティリティであるLinux PAM(プラガブル認証モジュール)の一部です。

それは、sshd、gdm、loginなどのプログラムからの認証チェックを受け入れ、Linuxシステムのそれらのサービスやアプリケーションに対してユーザーを認証します。ユーザーログインシェルの活動を監査するためにPAMを設定する方法について簡単に説明しました。

このモジュールは、ユーザーごとの認証失敗試行を記録し、失敗した認証試行が一定の限度を超えた場合、一時的にユーザーアカウントをロックします。失敗したログイン試行は、デフォルトで/var/run/faillock/の集計ディレクトリ内のユーザーごとのファイルに保存されます。

pam_faillock モジュールは、RHEL 7 および RHEL 8 で廃止された pam_tally および pam_tally2 モジュールを置き換えます。これは、2つのモジュールよりも柔軟性とオプションを提供します。

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

上記の機能は、/etc/pam.d/system-auth および /etc/pam.d/password-auth ファイルで、以下のエントリを auth セクションに追加することによって構成できます。

$ sudo vim /etc/pam.d/system-auth
sudo vim /etc/pam.d/password-auth

3回のSSH試行が不成功だった場合にユーザーをシステムからロックアウトまたはアクセスを拒否し、1200秒後にユーザーアカウントを解除するには、authセクションに以下の行を追加します。

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

どこ :

  • 監査 - ユーザー監査を可能にします。
  • deny - ユーザーアカウントがロックされるべき試行回数を定義するために使用されます(この場合は3回)。
  • unlock_time – アカウントがロックされたままであるべき時間(600 秒=10 分)を設定します。

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

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

#%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authselect is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=1200
auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600

次に、accountセクションに移動し、上記の2つのファイルの両方に次の行を追加します。

account     required      pam_faillock.so

上記の設定を追加した後、次のように表示されるはずです。

失敗したSSHログイン後にルートをロックする方法

ユーザーおよび通常のユーザーの両方をロックアウトするために、authセクションにeven_deny_rootパラメーターを追加できます。この例では、通常のユーザーのロック解除時間は1200秒(20分)、ルートユーザーは3回のSSHログイン試行の失敗後に3600秒(60分または1時間)です。

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=3600

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

$ sudo systemctl restart sshd

次に、テストを実行し、設定が機能するかどうかを確認します。

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

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

このシナリオでは、ユーザーtecmintがユーザーaaronkilikに切り替えようとしていますが、パスワードの誤りにより3回のログイン失敗があり、その結果「Permission denied」メッセージが表示され、aaronkilikのアカウントがロックされます。これは、4回目の試行で表示された「authentication failure」メッセージによって示されています。

ルートユーザーは、次のスクリーンショットに示されているように、システム上のログイン失敗試行について通知を受けます。

失敗したSSHログインを表示する方法

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

特定のユーザーの失敗したログイン試行をこのように見ることができます。

# faillock --user aaronkilik

すべての失敗したログイン試行を表示するには、次のように引数なしで faillock を実行します:

# faillock 

失敗したSSHログイン後にユーザーを解除する方法

ユーザーの認証失敗ログをクリアするには、このコマンドを実行してください。

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

SSHの失敗したログイン後にユーザーロックを無効にする

最後に、システムに何度もログインに失敗した後にユーザーやユーザーのアカウントをロックしないように指示するには、両方のファイルのauthセクションにおいて、/etc/pam.d/system-auth および /etc/pam.d/password-auth のpam_faillockが最初に呼び出される部分の直上に、太字で強調されたエントリーを追加します。

#%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authselect is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.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=1200
auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600

Faillock モジュールを無効にする方法

pam_failock モジュールを無効にするには、次のコマンドを実行します:

# authconfig --disablefaillock --update

詳細については、pam_faillock および faillock のマニュアルページを参照してください。

# man pam_faillock
man faillock 

それがすべてです!この記事では、誤ったログインや認証失敗の回数がx回に達した後にユーザーのアカウントをロックすることで、シンプルなサーバーセキュリティを強化する方法を示しました。

これは、ブルートフォース攻撃からSSHセキュリティを強化する便利な方法です。下のコメントフォームを使用して、あなたの質問や考えを私たちと共有してください。

関連記事: