fail2ban mulit-line (regex on multiple lines) check 機能を追加してみました。
If you are alien,please check this doc-txt -> how-to-patch-to-src.rpm.txt
フィルターのサンプル(/etc/fail2ban/filter.d/sendmail.conf)には、2行にまたがるチェック例が記載されているのに、実際は、1行ずつの読込みバッファリングしかしていない様でした。
If you are alien,please check this doc-txt -> how-to-patch-to-src.rpm.txt
フィルターのサンプル(/etc/fail2ban/filter.d/sendmail.conf)には、2行にまたがるチェック例が記載されているのに、実際は、1行ずつの読込みバッファリングしかしていない様でした。
とりあえず、epel で公開されている fail2ban-0.8.4-29.el5.src.rpm をベースにして
failregex の行に 改行(\n)が有れば、その場合は、2行ずつでのチェックが、できる様にプログラムを修正してみました。
修正モジュールは、下記の3ファイルです。
fail2ban-regx
server/filter.py
server/failregex.py
修正の概要は、
1)failregex の行に 改行(\n)が有れば、常にダブルバッファリングでチェックします。
2)failregex の行に 改行(\n)が無ければ、シングルラインでのチェックをします。
修正個所は、fail2ban-0.8.4-multi-line-check2.patch を参照してください。
注)check1 → check2 に処理内容を少し変更しました。(2013.4.14)
ファイルのダウンロードは、こちらのフォルダーになります。
注)なほ、ご利用に関しては、自己責任でお願いします。
rpmbuild の手順は、こちら!
又、2行のチェックの方法は、元のサンプルに誤りがあるので、 下記の様に変更します。
今回の機能追加で、上記の フィルターを使用すると、下記のログパターンがチェックできる様になります。
あと、fail2banに於いて、正規表現(Python)でのチェックの対象は、実際のログから "日付時刻" を取り除いた部分がチェックの対象になるみたいです。
正規表現を記述するには、"日付時刻"部分が無いつもりで書けばOKです。
但し、元のログの、"日付時刻"の前後に 空白が有れば、それは、対象に残ります。
>2015.5.9.. fail2ban-0.8.4-29.2.el5.noarch.rpm 公開
unbanip fucntion を fail2ban-0.8.14-1.el5_10 からバックポートしました。
#fail2ban-client set <JAIL> unbanip <xx.xx.xx.xx> がOK になります。
>2015.5.18.. fail2ban-0.8.4-29.2.el5_1.noarch.rpm 公開
banip fucntion をバグ修正(fail2ban-0.8.14-1.el5_10 からバックポート)しました。
#fail2ban-client set <JAIL> banip <xx.xx.xx.xx> がOK になります。
>2015.5.18.. fail2ban-0.8.4-29.2.el5_2.noarch.rpm 公開
filter ignoreregex バグ修正しました。
ignoreregex = 192\.168\.1\.155 がOKになります。