Fail2Ban とは

We need a means of defending sites against brute-force login attempts. Fail2Ban is a Python application which trails logfiles, looks for regular expressions and works with Shorewall (or directly with iptables) to apply temporary blacklists against addresses that match a pattern too often. This can be used to limit the rate at which a given machine hits login URLs for Confluence.

(warning) The information on this page does not apply to Confluence OnDemand.

Prerequisites

  • Requires Python 2.4 or higher to be installed
  • フォローする特定のファイルが必要です。つまり、Apache インスタンスは Confluence アクセスを既知のログファイルに記録する必要があります。以下の設定を正しく調節する必要があります。

セットアップ方法

このリストは説明の骨組みバージョンです

  • There's an RPM available for RHEL on the download page, but you can also download the source and set it up manually
  • この設定ファイルは /etc/fail2ban に保存されます。
  • 汎用的な既定設定は .conf ファイル (fail2ban.conf および jail.conf) に保存されます。アップグレードが困難になるため、これらのファイルは変更しないでください。
  • 汎用設定への上書きは .conf ファイルに対応する .local に保存されます。ここには上書きしたい設定のみが含まれるため、メンテナンスを容易に行うことができます。
  • filter.d に保存されるフィルター— ここで regexp を定義し、それぞれが独自のファイルに保存されます。
  • action.d に保存されるアクション — 通常はこれらを追加する必要はありませんが、これらが利用可能であることを確認しておくことをおすすめします。
  • "jails" は確認対象となる 1 つの regexp、 しきい値に到達したときにトリガされる 1 つ以上のアクション、およびしきい値設定 (例:60 秒以内に 3 回以上一致するとそのアドレスは 600 秒間ブロックされるなど) を指定する構成単位です
  • Jails は jail.conf および jail.local で設定されます。それぞれに対して enabled を設定する必要があります — 誤った設定が有効化されている場合も、正しい設定が無効化されている場合も同様に影響があります。

Fail2Ban の実行

  • 明確な操作のため、/etc/init.d/fail2ban {start|stop|status} を使用します。
  • 現在の設定を STDOUT にダンプするには fail2ban-client -d を使用します。これはトラブルシューティングに非常に便利です。
  • CPU 使用状況に注意します。ビジーなサイトでは、単純な regexp であっても短時間でリソースを吸収してしまう可能性があります
  • syslog またはファイルのいずれかの、ニーズにより適した方へログを作成できます

共通設定

jail.local

# The DEFAULT を使用するとオプションをグローバルに定義できます。それ以降の各 jail の
 # を上書きする場合があります。

[DEFAULT]

# "ignoreip" は IP アドレス、CIDR マスクまたは DNS ホストのいずれかです。Fail2ban はこのリスト内のアドレスと一致するホストを
# ban しません。スペース区切りを使用して複数のアドレスを 
# で定義できます。
# ignoreip = <space-separated list of IPs>

# "bantime" はホストを禁止する秒数です。
bantime = 600

# 最後の "findtime"
# 秒の間に "maxretry" を生成した場合、ホストは禁止されます。
findtime = 60

# "maxretry" はホストが禁止されるまでの失敗の数です。
maxretry = 3


[ssh-iptables]

enabled = false


[apache-shorewall]

enabled = true
filter = cac-login
action = shorewall
logpath = /var/log/httpd/confluence-access.log
bantime = 600
maxretry = 3
findtime = 60
backend = polling

Confluence 向け設定

以下は設定例を示したもので、実際にはお客様のサイトに合わせて設定を行ってください。

filter.d/confluence-login.conf

[Definition]

failregex = <HOST>.*"GET /login.action

ignoreregex =