fail2ban 超カンタン説明

fail2banって設定が難しそうなので、なかなか自分で設定できないという人のため、超ざっくりした説明(ちょっとした攻撃回避ならこれでも十分)を書きます。

設定の構成

fail2banでサーバーにおかしなアクセスをしてきているやつを締出す為の設定は2段構成です。

①フィルタの設定

ログファイル(syslog など)を確認して、おかしなアクセスをしているヤツを見つけるための設定。
デフォルトでたくさん定義ファイルがあるけど、これがややこしいと感じることもある。
/etc/fail2ban/filter.d/ にxxxx.conf (例: nginx.conf ) など
定義毎にファイルを作成していく

② jail 設定

①のフィルタ設定に対して、1時間に3回検出したら、1日間 IPをbanするなどの 作動条件や、チェック対象とするログファイルなどを設定する。

具体例

具体例を使って、簡単に設定をしてみる。

</var/log/maillog>

00:12:35 dovecot: auth-worker(1932037): conn unix:auth-worker printer,185.93.89.218 : Authentication failure 
00:45:21 dovecot: auth-worker(1932217): conn unix:auth-worker prueba,185.93.89.218: Authentication failure 

ブルートフォースアタックされているログです。
これを、fail2ban を活用して、撃退する方法を書きます。
ログの出力のフォーマットは、ソフトやバージョン等によって統一はされていません。fail2banでは、そのあたりを上手く調整してくれる機能もありますが、最初は複雑に感じると思います。
なので、できるだけシンプルにbanできるように設定します。

filter設定

filterの名前を「dove」とします。
/etc/fail2ban/filter.d/dove.conf を作ります。
ポイントは、failregex の設定で、ログの該当行がヒットする正規表現を作成する。
対象となるIPアドレスを<HOST>と表現できれば、このIPがfail2banの対象となります。

<dove.conf>

[INCLUDES]
before = common.conf

[Definition]
_daemon = auth
failregex = ^.*dovecot: auth-worker.*: conn unix:auth-worker [^,]*,<HOST>:

ignoreregex = 

うまく、ログがヒットするか確認するには、以下のコマンドを使う

 sudo fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/dove.conf

ログファイルとfilter設定ファイルを使う。

Lines: 12175 lines, 0 ignored, 127 matched, 12048 missed
こんな感じで、xxx matchedの行数が妥当だと、正規表現が正しく機能しています。

jail設定

jail.conf に以下のブロックを追加する。
上記のfilter設定ファイルと名前で紐づける。
以下の設定だと、2時間(7200秒)(findtime)の内に、2回(maxretry)該当のログが検出されたら、永遠に(bantime=-1)当該IPからのアクセスを拒否する という設定になります。

</etc/fail2ban/jail.conf>

[dove]
enabled = true
filer   = dove
logpath = /var/log/mail.log
action   = iptables-allports
bantime = -1
findtime = 7200
maxretry = 2

fail2banの再起動

設定を有効にするには、fail2banを再起動させます。

sudo systemctl restart fail2ban

sudo fail2ban-client status dove

で、対象のログのIPがbanされていたら大成功!

コメント

タイトルとURLをコピーしました