不正ログイン攻撃対策としての Fail2Ban の利用
Confluence には、自動化スクリプトが実行できるリクエストの数と頻度を制御できるレート制限メカニズムが含まれています。
これに加えて、Fail2Ban などの外部ツールを使用すると、ログイン試行の失敗回数が多すぎる IP をブロックするなどの特定のシナリオに対応することができます。
Fail2Ban とは
私たちには、ブルートフォース攻撃のログインからサイトを防御する手段が必要です。Fail2Ban はログファイルを追跡し、正規表現を探して Shorewall と (または iptables と直接) 連動し、パターンと頻繁に一致するアドレスを一時的にブラックリストに追加する Python アプリケーションです。これにより、特定のマシンが Confluence のログイン URL にアクセスする頻度を制限できます。
Prerequisites
- Python 2.4 以上のインストールが必要
- Apache リバース プロキシのインストールが必要
- フォローする特定のファイルが必要です。つまり、Apache インスタンスは Confluence アクセスを既知のログファイルに記録する必要があります。以下の設定を正しく調節する必要があります。
セットアップ方法
このリストは説明の骨組みバージョンです
- ダウンロード ページには RHEL 用の RPM が用意されていますが、ソースをダウンロードして手動で設定することもできます。
- この設定ファイルは
/etc/fail2ban
に保存されます。 - 汎用的な既定設定は
.conf
ファイル (fail2ban.conf
およびjail.conf
) に保存されます。アップグレードが困難になるため、これらのファイルは変更しないでください。 - 汎用設定への上書きは
.conf
ファイルに対応する.local
に保存されます。メンテナンスを容易に行えるように、ここには上書きしたい特定の設定のみを含める必要があります。 - フィルターは
filter.d
に保存されます。ここで正規表現を定義し、それぞれが独自のファイルに保存されます。 - アクションは
action.d
に保存されます。通常はアクションを追加する必要はありませんが、何が利用可能であるか確認しておくことをお勧めします。 - 「jails」は、チェックする 1 つの正規表現、しきい値に達した時にトリガーする 1 つ以上のアクション、しきい値設定 (例: 60 秒間に 3 回以上一致すると、そのアドレスは 600 秒間ブロックされる) を指定する構成単位です。
- Jails は
jail.conf
およびjail.local
で設定されます。それぞれに対してenabled
を設定する必要があります — 誤った設定が有効化されている場合も、正しい設定が無効化されている場合も同様に影響があります。
Fail2Ban の実行
- 明確な操作には
/etc/init.d/fail2ban {start|stop|status}
を使用します。 - 現在の設定を STDOUT にダンプするには
fail2ban-client -d
を使用します。これはトラブルシューティングに非常に便利です。 - CPU 使用率に注意してください。アクセス数の多いサイトでは、単純な正規表現であっても短時間でリソースを消費する可能性があります。
- ニーズに合わせて、syslog またはファイルにログを記録できます。
共通設定
jail.local
# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
# ignoreip = <space-separated list of IPs>
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 60
# "maxretry" is the number of failures before a host get banned.
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 =
最終更新日: 2024 年 12 月 9 日
Powered by Confluence and Scroll Viewport.