CentOS8およびFedora33にFail2Banをインストールして構成する方法

Fail2Banは、さまざまなプロセスのログファイルをスキャンし、パスワードの失敗が多すぎるIPアドレスを禁止するログ解析ユーティリティです。ログインの試行が見つかると、Fail2Banはiptablesに新しいルールを追加して、攻撃者のIPアドレスを一時的または永続的にブロックします。また、同じことをメールで通知することもできます。

これは主にSSHを介した侵入の検出に重点を置いていますが、ログファイルを使用する任意のサービスで機能するように構成できます。

前提条件

  1. sudo権限を持つroot以外のユーザーがいるFedora33またはCentOS8ベースのサーバー。
  2. Nanoエディターをインストールします。これを使用します。
    $ sudo dnf install nano -y

Fail2Banをインストールします

CentOS 8にFail2Banをインストールするには、最初にEPELYumリポジトリをインストールする必要があります。

$ sudo dnf install epel-release

Fedora33はFail2Banに同梱されています。

次のコマンドを実行して、Fedora33とCentOS8の両方にFail2Banをインストールします。

$ sudo dnf install fail2ban

インストールしたら、サービスを有効にする必要があります。

$ sudo systemctl enable fail2ban

次に、fail2banサービスを開始します。

$ sudo systemctl start fail2ban

これで、サービスのステータスをチェックして、サービスが正しく機能しているかどうかを確認できます。

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Fail2Banを構成する

Fail2Banサービスは、構成ファイルを/etc/fail2banディレクトリに保持します。 jail.conf中にjail.confファイルがあります。このファイルは通常、パッケージのアップグレード中に上書きされるため、編集しないでください。

代わりに、すべての構成は、 jail.localと呼ばれる新しいファイルで行う必要があります。これら2つのファイルの設定は、 /etc/fail2ban/jail.d/ディレクトリのファイルを介してさらに上書きできます。

構成は次の順序で適用されます。

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf, Alphabetically
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local, Alphabetically

 

jail.confは、 [DEFAULT]セクションと、それに続く個々のサービスのセクションが含まれています。これらのセクションは、 .localファイルで定義することで上書きできます。

jail.localを構成する

新しいjail.localファイルを作成します。

$ sudo nano /etc/fail2ban/jail.local

次のコードを貼り付けます。

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Ctrl + Xを押してエディターを閉じ、ファイルを保存するように求められたらYを押します。これbantime 、すべてのサービスに新しいデフォルトのbantime設定され、バックエンドがsystemd変更され、 `sshd bantimeが有効になります。

Fail2banを再起動して、新しい変更を実装します。

$ sudo systemctl restart fail2ban

fail2ban-clientユーティリティを使用して、新しく適用された設定を確認できます。

$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

また、具体的には以下の方法で各刑務所の詳細な状況を知ることができます。

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

その他の設定

jail.confは、 /jail.localファイルを使用してカスタマイズできるより多くの設定を提供します。次に、いくつかの設定について説明します。

IPのホワイトリストへの登録

次のコードを使用して、IPがFail2banによってブロックされないようにホワイトリストに登録/無視できます。

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

特定のjailのIPのみをホワイトリストに登録する場合は、 fail2ban-clientfail2ban-client行うことができfail2ban-client

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

上記のコマンドのJAILを、設定を編集するjailの名前に置き換えます。

禁止時間と再試行量

禁止の再試行の時間と回数を設定できる3つの設定があります。

bantime -IPが禁止される時間の長さ(秒単位)。恒久的な禁止を設定するには、この値を負の数に設定します。デフォルト値は10分または600秒です。

findtime禁止が設定されるまでのログイン試行間の時間の長さです。この値は常に秒数です。たとえば、Fail2banが5回のログイン試行の失敗後にIPを禁止するように設定されている場合、それらの5回の試行は、設定された10分のbantime制限内に発生する必要があります。広告

maxretry禁止が課される前の単一のIPアドレスからの再試行の数です。デフォルト値は3です。

これらの設定をカスタマイズするには、次の行を\etc\fail2ban\jail.localファイルの[DEFAULT]セクションに貼り付けます。

bantime = 3600
findtime = 300
maxretry = 4

電子メールアラート

電子メールアラートを送信するには、最初にメール転送エージェント(MTA)をインストールする必要があります。この目的のために、 sendmailをインストールします。

$ sudo dnf install sendmail

メールを受信するには、 [DEFAULT]セクションの\etc\fail2ban\jail.localファイルに次のコードを追加します。

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

destemailは、メールの受信先IDである宛先EメールIDを指し、 sendernameは送信者の名前を指すため、 sendernameを使用しています。 mtaは、ここではsendmailである使用されているメール転送エージェントを指します。 Postfixを使用している場合は、 mta変数に値mailを使用します。

actionとは、侵入が検出されたときに実行されるデフォルトのアクションを指します。デフォルト値は%(action_)sで、ユーザーのみを禁止します。 %(action_mw)sは禁止し、Whoisレポートを含む電子メールを送信します。一方、 %(action_mwl)sは禁止し、関連するログファイルからの情報とともにWhoisレポートを含む電子メールを送信します。これは、刑務所固有の基準で変更することもできます。

個々の刑務所の設定

すでに知っているように、 [DEFAULT]セクションはすべてのJailに適用されます。次に、いくつかの特定のJailとその設定を調べます。

SSHD刑務所

以前にjail.localファイルで[sshd]定義しました。次のコードでもう少しカスタマイズできます。

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

この場合、デフォルトのSSHポートであるポートに事前定義された変数sshを使用しています。別のSSHポートを使用している場合は、それを変更する必要があります。 logpathは、監視するログファイルの場所を指します。 %(ssh_log)sは、Fail2banの標準構成ファイル( /etc/fail2ban/paths-common.conf )で定義された値を使用します。

Nginx刑務所

Nginxには、Fail2Banで使用できるいくつかのJailがあります。たとえば、サイトのパスワードで保護された部分が繰り返し攻撃された場合、 jail.localファイルのセクション[nginx-http-auth]jail.localできます。広告

[nginx-http-auth]
 enabled = true

[nginx-botsearch]というセクションを追加して、存在しないフォルダーや場所へのリクエストを停止することもできます。

[nginx-badbots]
 enabled = true

他のNginxジェイルもありますが、Fail2Banで事前構成されていません。それらは手動で作成する必要があり、それらのほとんどは、Fail2Banに付属しているApacheのものに基づくことができます。

Fail2BanフィルターとFailregex

Fail2Ban構成には、フィルターと呼ばれる別の設定があります。フィルタは、ログファイルの行が認証の失敗を示しているかどうかを判断します。

構成ファイル内のフィルタ値にあるファイルへの参照である/etc/fail2ban/filter.dそのディレクトリと.conf除去拡張。

ディレクトリを確認することで、利用可能なフィルタの種類を確認できます。

$ ls /etc/fail2ban/filter.d

Nginxの2つのログファイルが含まれています。 nginx-badbots.confおよびnginx-http-auth.conf

これらの構成ファイルは、正規表現(regex)を使用してログファイルを解析します。これらはFailregexと呼ばれます。独自の正規表現を作成して、新しいフィルターをカスタマイズまたは作成できます。これらの正規表現はこのチュートリアルの範囲外であるため、ここでは詳しく説明しません。

Fail2Banログとファイアウォールを監視する

あなたは使用してfail2banの状況を確認することができsystemctl先に述べたように。

$ sudo systemctl status fail2ban

もう少し詳細を取得するには、 journalctlコマンドを使用できます。

$ sudo journalctl -b -u fail2ban

また、 fail2ban-clientを使用して、 fail2ban-serverまたは個々のjailのステータスを照会することもできます。

$ sudo fail2ban-client status 
$ sudo fail2ban-client status jail_name

Fail2banのログファイルを照会することもできます。

$ sudo tail -F /var/log/fail2ban.log

iptablesに設定されている現在のルールを一覧表示できます。

$ sudo iptables -L

iptablesルールを、それらのルールを有効にするために必要なコマンドを反映した形式でリストすることもできます。

$ sudo iptables -S

結論

これで、Fedora33またはCentOS8ベースのサーバーへのFail2Banのインストールと構成に関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。

Source