「Fail2ban」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(3人の利用者による、間の9版が非表示)
1行目: 1行目:
[[Category:Secure Shell]]
+
[[Category:ファイアウォール]]
  +
[[Category:セキュアシェル]]
 
[[en:Fail2ban]]
 
[[en:Fail2ban]]
 
[[ro:Fail2ban]]
 
[[ro:Fail2ban]]
5行目: 6行目:
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Sshguard}}
 
{{Related|Sshguard}}
  +
{{Related|セキュリティ}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
[https://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] は、ログファイル (例:{{ic|/var/log/httpd/error_log}}) をスキャンし、認証の試行回数が多すぎる、脆弱性のスキャンなど、悪意のある兆候を示す IP を禁止します。一般に、Fail2ban は、次に、次の IP アドレスを拒否するように [[ファイアウォール]] ルールを更新するために使用されます。指定された時間だけですが、他の任意のアクション (電子メールの送信など) も設定できます。
{{warning|IP ブラックリストを使えば取るに足らない攻撃を防ぐことはできますが、デーモンを使う必要がある上に攻撃時のログは残ります (特に攻撃者が何度もサーバーにアタックした場合 {{ic|/var}} を含むパーティションが一杯になってしまう可能性もあります)。さらに、攻撃者があなたの IP アドレスを知っている場合、ソースヘッダーを偽装したパケットを送りつけてあなたがサーバーにアクセスできないように仕向けてくるかもしれません。[[SSH 鍵]]はこれらの問題に煩わされることなくブルートフォースの問題を解決する方法を提供します。}}
 
  +
{{Warning|
[http://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] は様々なテキストのログファイルをスキャンして、何度もパスワード認証を失敗している IP アドレスを拒否するようファイアウォールのルールを更新して ban します。[[Sshguard]] に似ています。
 
  +
* IP を禁止するソフトウェアを使用することで、些細な攻撃は止めることができますが、追加のデーモンとロギングの成功に依存します。
 
  +
* fail2ban を [[sshd]] などと併用することは、公開鍵認証などが有効になっている場合 には、通常は意味がありません。
{{Warning|正しく機能させるためにログの IP アドレスを正確にパースさせることが重要です。保護したいアプリケーションごとにログフィルターがちゃんと動くかどうかテストするようにしてください。}}
 
  +
* また、[[VPN]] の代わりにもなりません。必要な場合を除き、サービスをインターネットに公開しないでください。
  +
* さらに、攻撃者があなたの IP アドレスを知っている場合、送信元ヘッダーを偽装したパケットを送信し、あなたの IP アドレスを使用禁止にすることができます。必ず {{ic|ignoreip}} で IP を指定してください。
  +
}}
   
 
== インストール ==
 
== インストール ==
   
[[公式リポトリ]]ら {{Pkg|fail2ban}} をインストールしてください
+
次のパッケーのいずれかを [[インストール]] してさい:
   
  +
* {{Pkg|fail2ban}} - 最新の安定バージョン。
誰かが ban されたときに Fail2ban からメールを送信したい場合、[[SSMTP]] などをセットアップする必要があります。
 
  +
* {{AUR|fail2ban-git}} - マスターからの最新のコミット。
   
=== systemd ===
+
== 使い方 ==
   
{{ic|fail2ban.service}} ユニットを[[有効化]]してください。
+
Fail2ban を [[Fail2ban#設定|設定]] し {{ic|fail2ban.service}} を [[起動/有効化]] ます:
   
== ハードニング ==
+
=== fail2ban-client ===
   
  +
failed2ban-client を使用すると、jail (リロード、再起動、ステータスなど) を監視して、使用可能なすべてのコマンドを表示できます:
現在、fail2ban は root で実行する必要があり、systemd でプロセスをハードニングする余地があります。参照: [http://0pointer.de/blog/projects/security.html systemd for Administrators, Part XII]
 
   
  +
$ fail2ban-client
=== ケイパビリティ ===
 
   
  +
有効なジェイルをすべて表示するには:
セキュリティを強化するために既存の {{ic|fail2ban.service}} の[[Systemd#ユニットファイルの編集|ドロップイン設定ファイル]]で {{ic|CapabilityBoundingSet}} を指定することで fail2ban の[[ケイパビリティ]]を制限できます:
 
   
  +
# fail2ban-client status
{{hc|/etc/systemd/system/fail2ban.service.d/capabilities.conf|2=
 
[Service]
 
CapabilityBoundingSet=CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
 
}}
 
   
  +
たとえば ''sshd'' などの jail のステータスを確認するには:
上の例では、{{ic|CAP_DAC_READ_SEARCH}} で fail2ban に完全な読み取りアクセスを許可し、{{ic|CAP_NET_ADMIN}} と {{ic|CAP_NET_RAW}} で [[iptables]] によるファイアウォールのルールの設定を許可しています。fail2ban の設定によっては、ケイパビリティを追加する必要があるでしょう。詳しくは {{ic|man capabilities}} を見て下さい。
 
   
  +
{{hc|# fail2ban-client status sshd|<nowiki>
=== ファイルシステムのアクセス ===
 
  +
Status for the jail: sshd
  +
|- Filter
  +
| |- Currently failed: 1
  +
| |- Total failed: 9
  +
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
  +
`- Actions
  +
|- Currently banned: 1
  +
|- Total banned: 1
  +
`- Banned IP list: 0.0.0.0
  +
</nowiki>}}
   
  +
禁止された IP を含むすべての jail のコンパクトバージョンの場合:
{{Note|環境によっては以下の設定で fail2ban が使えなくなる可能性があります。最初は以下の設定を使わないで fail2ban を試してください。}}
 
   
  +
{{hc|# fail2ban-client banned|
{{ic|[Service]}} セクションで、''ReadOnlyDirectories'' や ''ReadWriteDirectories'' を使うことで、ファイルシステムの読み書きアクセスを制限することができます。例えば:
 
  +
[{'sshd': ['192.168.100.50']}, {'apache-auth': []}]
ReadOnlyDirectories=/
 
  +
}}
ReadWriteDirectories=/var/run/fail2ban /var/lib/fail2ban /var/spool/postfix/maildrop /tmp /var/log/fail2ban
 
上の例では、pid やソケットファイルの {{ic|/var/run/fail2ban}} と、[[postfix]] sendmail の {{ic|/var/spool/postfix/maildrop}} を除いて、ファイルシステムを読み取り専用に制限しています。ケイパビリティと同じく、システム設定や fail2ban の設定によって変える必要が出てきます。fail2ban の動作の中には {{ic|/tmp}} ディレクトリが必要になるものもあります。fail2ban の行動記録を保存して欲しい場合は {{ic|/var/log/fail2ban}} を追加してください。全てのディレクトリが存在していることを確認してください。存在しない場合、サービスの起動時にエラーコード 226 が表示されます。また、{{ic|/etc/fail2ban/fail2ban.conf}} の logtarget を修正してください:
 
logtarget = /var/log/fail2ban/fail2ban.log
 
   
 
== 設定 ==
 
== 設定 ==
   
{{Note|ディストリビューションのアップトで {{ic|jail.conf}} ファイルは上書きされてしまう可能性があるので、{{ic|jail.local}} ファイルや {{ic|jail.d/}} ディレクトリ下の ''.conf'' ファイル (例: {{ic|jail.d/ssh-iptables.conf}}) に修正加えのが推奨されます。}}
+
[[アップグレド]] 中に {{ic|/etc/fail2ban/jail.conf}} に対して [[pacman/Pacnew と Pacsave]] が作成され可能性があるため、{{man|5|jail.conf|CONFIGURATION FILES FORMAT}} では、''アップグレードを容易にする'' ために、ユーザーが {{ic|/etc/fail2ban/jail.local}} ファイル [[作成]] すことをお勧めします。
   
  +
たとえば、デフォルトの禁止期間を 1 日に変更するには、次のようにします:
=== デフォルト jail ===
 
   
  +
{{hc|/etc/fail2ban/jail.local|2=
多数のサービスに対応しているデフォルトの jail は {{ic|/etc/fail2ban/jail.conf}} に存在していますが、デフォルトでは有効になっていません。セクションヘッダーを適当な {{ic|.local}} ファイルにコピーすることで有効にできます。
 
  +
[DEFAULT]
  +
bantime = 1d
  +
}}
   
  +
または、{{ic|/etc/fail2ban/jail.d}} ディレクトリの下に別の {{ic|''name''.local}} ファイルを作成します (例:{{ic|/etc/fail2ban/jail.d/sshd.local}}
=== パス ===
 
   
  +
{{ic|fail2ban.service}} を [[再起動]] して設定の変更を適用します。
Arch Linux で最初から使える path は存在しませんが、Fedora のデフォルト設定を使うことができます:
 
# cp /etc/fail2ban/paths-fedora.conf /etc/fail2ban/paths-archlinux.conf
 
   
  +
=== jails を有効にする ===
設定を有効にするには、{{ic|jail.local}} ファイルに以下のセクションを追加・変更:
 
[INCLUDES]
 
before = paths-archlinux.conf
 
   
  +
デフォルトでは、すべての jails は無効になっています。{{ic|1=enabled = true}} を使用したい jails に [[ヘルプ:読み方#追加, 追記, 作成, 編集|追加]] します。たとえば、[[OpenSSH]] jails を有効にする場合:
{{ic|fail2ban.service}} を[[再起動]]して設定をテストしてください。fail2ban サービスが起動に失敗すると ''fail2ban-client'' から "file not found errors" が出力されます。{{ic|paths-archlinux.conf}} や {{ic|jail.local}} を必要に応じて調整してください。デフォルトの jail は設定を変更しないと動作しない場合があります。
 
  +
  +
{{hc|/etc/fail2ban/jail.local|2=
  +
[sshd]
  +
enabled = true
  +
}}
  +
  +
参照 [[Fail2ban#カスタム SSH jail]]
  +
  +
=== 警告メールを受信する ===
  +
  +
誰かが禁止されたときに電子メールを受信したい場合は、SMTP クライアント (例:[[msmtp]]) を設定し、以下に示すようにデフォルトのアクションを変更する必要があります。
  +
  +
{{hc|/etc/fail2ban/jail.local|2=
  +
[DEFAULT]
  +
destemail = yourname@example.com
  +
sender = yourname@example.com
  +
  +
# to ban & send an e-mail with whois report to the destemail.
  +
action = %(action_mw)s
  +
  +
# same as action_mw but also send relevant log lines
  +
#action = %(action_mwl)s
  +
}}
  +
  +
=== ファイアウォールとサービス ===
  +
  +
デフォルトでは、Fail2ban は [[iptables]] を使用します。ただし、ほとんどの [[ファイアウォール]] とサービスの設定は簡単です。たとえば、[[nftables]] を使用するには:
  +
  +
{{hc|/etc/fail2ban/jail.local|2=
  +
[DEFAULT]
  +
banaction = nftables
  +
banaction_allports = nftables[type=allports]
  +
}}
  +
  +
他の例については、{{ic|/etc/fail2ban/action.d/}} を参照してください。例:[https://github.com/fail2ban/fail2ban/blob/master/config/action.d/ufw.conf ufw.conf]
  +
  +
== ヒントとテクニック ==
   
 
=== カスタム SSH jail ===
 
=== カスタム SSH jail ===
   
  +
{{Warning|攻撃者があなたの IP アドレスを知っている場合、スプーフィングされたソースヘッダーを持つパケットを送信し、あなたの IP アドレスをサーバーからロックアウトすることができます。[[SSH 鍵]] は、これらの問題を発生させずにブルートフォースの問題に対する洗練されたソリューションを提供します。}}
{{ic|/etc/fail2ban/jail.d/jail.conf}} を編集して、以下のセクションを追加して信頼する IP アドレスのリストを更新します。
 
  +
  +
{{ic|/etc/fail2ban/jail.d/sshd.local}} を編集し、このセクションを追加して、{{ic|ignoreip}} の信頼できる IP アドレスのリストを更新します:
  +
  +
{{hc|/etc/fail2ban/jail.d/sshd.local|2=
  +
[sshd]
  +
enabled = true
  +
filter = sshd
  +
banaction = iptables
  +
backend = systemd
  +
maxretry = 5
  +
findtime = 1d
  +
bantime = 2w
  +
ignoreip = 127.0.0.1/8
  +
}}
  +
  +
{{Note|
  +
* パスワードの失敗が正しく記録されないかもしれないので、fail2ban の完全な監視を許可するために、{{ic|/etc/ssh/sshd_config}} で {{ic|LogLevel VERBOSE}} を設定する必要があるかもしれません。
  +
* Fail2ban はバージョン 0.10 から IPv6 をサポートしています。それに合わせて [[ファイアウォール]] を適応してください、例えば {{ic|ip6tables.service}} を [[起動]]/[[有効化]] など。
  +
* (ユニットファイルに {{ic|1=LogNamespace=''something''}} を追加することで) ジャーナルの名前空間を使用する場合、{{ic|backend}} を次のように設定することで、fail2ban にそれらのログを読ませることができます:{{ic|1=backend = systemd[journalfiles="/var/log/journal/*.''something''/system.journal"]}} のように設定します。
  +
}}
  +
  +
{{Tip|
  +
* [[ufw]] のような [[iptables]] フロントエンドを使用する場合、iptables を使用する代わりに {{ic|1=banaction = ufw}} を使用することができます。
  +
* また、{{ic|/etc/shorewall/shorewall.conf}} の {{ic|BLACKLIST}} を {{ic|ALL}} に設定すると、IP アドレスを禁止するために追加されたルールは新しい接続だけに影響します。
  +
}}
  +
  +
=== Systemd バックエンド: ジャーナルフィルタリング ===
  +
  +
パフォーマンスを向上させるために ''systemd'' バックエンドを使用する場合は、{{ic|journalmatch}} を使用してフィルターを設定します。たとえば、カーネルレベルのログメッセージのみを解析するには、次のようにします。
  +
  +
{{hc|/etc/fail2ban/filter.d/fwdrop.local|2=
  +
[Definition]
  +
failregex = ^.*DROP_.*SRC=<ADDR> DST=.*$
  +
journalmatch = _TRANSPORT=kernel
  +
}}
  +
  +
こちらも参照 {{man|7|systemd.journal-fields}}
  +
  +
=== サービスの強化 ===
  +
  +
現在、Fail2ban は ''root'' として実行する必要があります。したがって、[[systemd]] を使用してプロセスを強化することを検討することをお勧めします。
  +
  +
{{ic|fail2ban.service}} の [[systemd#ドロップインファイル|ドロップイン]] 設定ファイルを [[作成]]:
  +
  +
{{hc|/etc/systemd/system/fail2ban.service.d/override.conf|2=
  +
[Service]
  +
PrivateDevices=yes
  +
PrivateTmp=yes
  +
ProtectHome=read-only
  +
ProtectSystem=strict
  +
ReadWritePaths=-/var/run/fail2ban
  +
ReadWritePaths=-/var/lib/fail2ban
  +
ReadWritePaths=-/var/log/fail2ban
  +
ReadWritePaths=-/var/spool/postfix/maildrop
  +
ReadWritePaths=-/run/xtables.lock
  +
CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
  +
}}
  +
  +
{{ic|CapabilityBoundingSet}} パラメータ {{ic|CAP_DAC_READ_SEARCH}} を使用すると、Fail2ban にすべてのディレクトリとファイルへの完全な読み取りアクセスが許可されます。{{ic|CAP_NET_ADMIN}} と {{ic|CAP_NET_RAW}} により、[[コマンドラインシェル]] インターフェイスを持つファイアウォール上で Fail2ban を動作させることができます。詳細については、{{man|7|capabilities}} を参照してください。
  +
  +
{{ic|1=ProtectSystem=strict}} を使用すると、[[ファイルシステム]] 階層は読み取り専用になり、{{ic|ReadWritePaths}} は Fail2ban に必要なパスへの書き込みアクセスを許可します。
   
  +
Create {{ic|/etc/fail2ban/fail2ban.local}} with the correct {{ic|logtarget}} path:
使っているファイアウォールが [[iptables]] の場合:
 
  +
{{hc|/etc/fail2ban/fail2ban.local|<nowiki>
[DEFAULT]
 
  +
[Definition]
bantime = 864000
 
  +
logtarget = /var/log/fail2ban/fail2ban.log
ignoreip = 127.0.0.1/8
 
  +
</nowiki>}}
 
[sshd]
 
enabled = true
 
filter = sshd
 
action = iptables[name=SSH, port=ssh, protocol=tcp]
 
sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com]
 
backend = systemd
 
maxretry = 5
 
   
  +
root として {{ic|/var/log/fail2ban/}} ディレクトリを作成します。
Fail2Ban はバージョン 0.9 から {{ic|1=backend = systemd}} を設定することで systemd の journal から直接情報を読み取ることができるようになっています。
 
   
  +
最後に、[[systemd#ユニットを使う|systemd デーモンを]] [[再起動]] して実行しユニットの変更を適用し、{{ic|fail2ban.service}} を実行します。
使っているファイアウォールが [[shorewall]] の場合:
 
[DEFAULT]
 
bantime = 864000
 
ignoreip = 127.0.0.1/8
 
 
[ssh-shorewall]
 
enabled = true
 
filter = sshd
 
action = shorewall
 
sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com]
 
backend = systemd
 
maxretry = 5
 
   
  +
== 参照 ==
{{Note|{{ic|/etc/shorewall/shorewall.conf}} で {{Ic|BLACKLIST}} を {{Ic|ALL}} に設定することができます。この設定を行わないと IP アドレスを ban するルールは新しい接続にしか適用されません。}}
 
   
  +
* [http://www.the-art-of-web.com/system/fail2ban-action-whitelist/ Using a Fail2Ban Jail to Whitelist a User]
また、{{ic|/etc/ssh/sshd_config}} に次を追加/変更してください:
 
  +
* [http://www.the-art-of-web.com/system/fail2ban-filters/ Optimising your Fail2Ban filters]
LogLevel VERBOSE
 
  +
* [http://www.the-art-of-web.com/system/fail2ban-sendmail/ Fail2Ban and sendmail]
そうしないとパスワード認証の失敗が正しく記録されません。
 
  +
* [http://www.the-art-of-web.com/system/fail2ban/ Fail2Ban and iptables]
  +
* [http://www.the-art-of-web.com/system/fail2ban-howto/ Fail2Ban 0.8.3 Howto]
  +
* [http://www.the-art-of-web.com/system/fail2ban-log/ Monitoring the fail2ban log]

2024年8月16日 (金) 18:36時点における最新版

関連記事

Fail2ban は、ログファイル (例:/var/log/httpd/error_log) をスキャンし、認証の試行回数が多すぎる、脆弱性のスキャンなど、悪意のある兆候を示す IP を禁止します。一般に、Fail2ban は、次に、次の IP アドレスを拒否するように ファイアウォール ルールを更新するために使用されます。指定された時間だけですが、他の任意のアクション (電子メールの送信など) も設定できます。

警告:
  • IP を禁止するソフトウェアを使用することで、些細な攻撃は止めることができますが、追加のデーモンとロギングの成功に依存します。
  • fail2ban を sshd などと併用することは、公開鍵認証などが有効になっている場合 には、通常は意味がありません。
  • また、VPN の代わりにもなりません。必要な場合を除き、サービスをインターネットに公開しないでください。
  • さらに、攻撃者があなたの IP アドレスを知っている場合、送信元ヘッダーを偽装したパケットを送信し、あなたの IP アドレスを使用禁止にすることができます。必ず ignoreip で IP を指定してください。

インストール

次のパッケージのいずれかを インストール して下さい:

  • fail2ban - 最新の安定バージョン。
  • fail2ban-gitAUR - マスターからの最新のコミット。

使い方

Fail2ban を 設定fail2ban.service起動/有効化 します:

fail2ban-client

failed2ban-client を使用すると、jail (リロード、再起動、ステータスなど) を監視して、使用可能なすべてのコマンドを表示できます:

$ fail2ban-client

有効なジェイルをすべて表示するには:

# fail2ban-client status

たとえば sshd などの jail のステータスを確認するには:

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

禁止された IP を含むすべての jail のコンパクトバージョンの場合:

# fail2ban-client banned
[{'sshd': ['192.168.100.50']}, {'apache-auth': []}]

設定

アップグレード 中に /etc/fail2ban/jail.conf に対して pacman/Pacnew と Pacsave が作成される可能性があるため、jail.conf(5) § CONFIGURATION FILES FORMAT では、アップグレードを容易にする ために、ユーザーが /etc/fail2ban/jail.local ファイルを 作成 することをお勧めします。

たとえば、デフォルトの禁止期間を 1 日に変更するには、次のようにします:

/etc/fail2ban/jail.local
[DEFAULT]
bantime = 1d

または、/etc/fail2ban/jail.d ディレクトリの下に別の name.local ファイルを作成します (例:/etc/fail2ban/jail.d/sshd.local

fail2ban.service再起動 して設定の変更を適用します。

jails を有効にする

デフォルトでは、すべての jails は無効になっています。enabled = true を使用したい jails に 追加 します。たとえば、OpenSSH jails を有効にする場合:

/etc/fail2ban/jail.local
[sshd]
enabled = true

参照 Fail2ban#カスタム SSH jail

警告メールを受信する

誰かが禁止されたときに電子メールを受信したい場合は、SMTP クライアント (例:msmtp) を設定し、以下に示すようにデフォルトのアクションを変更する必要があります。

/etc/fail2ban/jail.local
[DEFAULT]
destemail = yourname@example.com
sender = yourname@example.com

# to ban & send an e-mail with whois report to the destemail.
action = %(action_mw)s

# same as action_mw but also send relevant log lines
#action = %(action_mwl)s

ファイアウォールとサービス

デフォルトでは、Fail2ban は iptables を使用します。ただし、ほとんどの ファイアウォール とサービスの設定は簡単です。たとえば、nftables を使用するには:

/etc/fail2ban/jail.local
[DEFAULT]
banaction = nftables
banaction_allports = nftables[type=allports]

他の例については、/etc/fail2ban/action.d/ を参照してください。例:ufw.conf

ヒントとテクニック

カスタム SSH jail

警告: 攻撃者があなたの IP アドレスを知っている場合、スプーフィングされたソースヘッダーを持つパケットを送信し、あなたの IP アドレスをサーバーからロックアウトすることができます。SSH 鍵 は、これらの問題を発生させずにブルートフォースの問題に対する洗練されたソリューションを提供します。

/etc/fail2ban/jail.d/sshd.local を編集し、このセクションを追加して、ignoreip の信頼できる IP アドレスのリストを更新します:

/etc/fail2ban/jail.d/sshd.local
[sshd]
enabled   = true
filter    = sshd
banaction = iptables
backend   = systemd
maxretry  = 5
findtime  = 1d
bantime   = 2w
ignoreip  = 127.0.0.1/8
ノート:
  • パスワードの失敗が正しく記録されないかもしれないので、fail2ban の完全な監視を許可するために、/etc/ssh/sshd_configLogLevel VERBOSE を設定する必要があるかもしれません。
  • Fail2ban はバージョン 0.10 から IPv6 をサポートしています。それに合わせて ファイアウォール を適応してください、例えば ip6tables.service起動/有効化 など。
  • (ユニットファイルに LogNamespace=something を追加することで) ジャーナルの名前空間を使用する場合、backend を次のように設定することで、fail2ban にそれらのログを読ませることができます:backend = systemd[journalfiles="/var/log/journal/*.something/system.journal"] のように設定します。
ヒント:
  • ufw のような iptables フロントエンドを使用する場合、iptables を使用する代わりに banaction = ufw を使用することができます。
  • また、/etc/shorewall/shorewall.confBLACKLISTALL に設定すると、IP アドレスを禁止するために追加されたルールは新しい接続だけに影響します。

Systemd バックエンド: ジャーナルフィルタリング

パフォーマンスを向上させるために systemd バックエンドを使用する場合は、journalmatch を使用してフィルターを設定します。たとえば、カーネルレベルのログメッセージのみを解析するには、次のようにします。

/etc/fail2ban/filter.d/fwdrop.local
[Definition]
failregex = ^.*DROP_.*SRC=<ADDR> DST=.*$
journalmatch = _TRANSPORT=kernel

こちらも参照 systemd.journal-fields(7)

サービスの強化

現在、Fail2ban は root として実行する必要があります。したがって、systemd を使用してプロセスを強化することを検討することをお勧めします。

fail2ban.serviceドロップイン 設定ファイルを 作成:

/etc/systemd/system/fail2ban.service.d/override.conf
[Service]
PrivateDevices=yes
PrivateTmp=yes
ProtectHome=read-only
ProtectSystem=strict
ReadWritePaths=-/var/run/fail2ban
ReadWritePaths=-/var/lib/fail2ban
ReadWritePaths=-/var/log/fail2ban
ReadWritePaths=-/var/spool/postfix/maildrop
ReadWritePaths=-/run/xtables.lock
CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW

CapabilityBoundingSet パラメータ CAP_DAC_READ_SEARCH を使用すると、Fail2ban にすべてのディレクトリとファイルへの完全な読み取りアクセスが許可されます。CAP_NET_ADMINCAP_NET_RAW により、コマンドラインシェル インターフェイスを持つファイアウォール上で Fail2ban を動作させることができます。詳細については、capabilities(7) を参照してください。

ProtectSystem=strict を使用すると、ファイルシステム 階層は読み取り専用になり、ReadWritePaths は Fail2ban に必要なパスへの書き込みアクセスを許可します。

Create /etc/fail2ban/fail2ban.local with the correct logtarget path:

/etc/fail2ban/fail2ban.local
[Definition]
logtarget = /var/log/fail2ban/fail2ban.log

root として /var/log/fail2ban/ ディレクトリを作成します。

最後に、systemd デーモンを 再起動 して実行しユニットの変更を適用し、fail2ban.service を実行します。

参照