不正ログイン攻撃対策としての Fail2Ban の利用

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

JIRA 4.1 は、認証リクエスト回数の制限機能 を備えていますが、これより古いバージョンや Confluence 等 JIRA 以外のアプリケーションでは Fail2Ban などの外部ツールを利用する必要があります。

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 に保存されるフィルター— ここで 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 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 =

Jira の設定

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

filter.d/jira-login.conf

[Definition]

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

ignoreregex =
最終更新日 2018 年 5 月 29 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.