fail2banでqmailのログインアタックをbanする設定。Pleskで運用している古いサーバーで、POPへのブルートフォースアタック(総当たり攻撃)が酷かったので導入に踏み切りました。
適宜インストール&バージョンアップ。
http://www.fail2ban.org/wiki/index.php/Downloadsからお好みのバージョンをダウンロード。今回は安定のstableを選びました。
インストールが終わると、/etc/fail2ban以下に設定ファイル一式が生成されます。
PHPerでも理解できる正規表現です。
まぁ何の正規表現らしい事はしていないです。ログから「checkmailpasswd: FAILED」という部分を検知しているだけです。
アクションの書き方は、普通のコマンドラインと少しの変数を利用してつらつらと書くだけなのでここでは割愛します。
今回は、自作のフィルターを通すので、一番下に新しい設定を加えました。
以下が今回作ったjail.confの設定。
参考元→ http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#Qmail_vpopmail_pop3_filter
ログにはbanしたよというログが出ているんですが、iptables -n -Lで確認すると、載ってない。何がおかしいのかさっぱり分からず、1日経過。起動時にチェインは作れているのに、banしたよのログの後、iptablesに設定が追加されていないので、その辺りの処理を確認しますが、おかしいところは見つからず。
jail.confを見直すと、アクションのポート指定が他の設定とは違う設定方法をしているのに気づく。
以下のように書き換える。
995番ポートの分も新たに設定を書き足します。
これでいいのかな。なんか機嫌よくbanしているようなのでこれくらいで許してやろう。
過去のバージョンではできたのかも知れないけれど、本家のwikiに書いてあるのだからなかなか疑わないよ・・・。1日悩んで全てに疑心暗鬼になったからこそ分かったのでしょう。:-P
以下、fail2banの動作チェック用のコマンド群
不審なアクセスを効率よくbanして、平穏な休みを過ごしたいですね!
see also:
[qmail]メールサーバーがスパムの踏み台になった時にハッピーになれるツールを紹介します
[qmail]スパムは続くよどこまでも - qmail vs spam 全面戦争編 -
fail2banをgitからcloneしてインストール
pythonで動作しているので、まずpythonの有無、バージョンを調べます。Python >= 2.4とのことです。適宜インストール&バージョンアップ。
http://www.fail2ban.org/wiki/index.php/Downloadsからお好みのバージョンをダウンロード。今回は安定のstableを選びました。
セットアップ
ダウンロードしたtarballを展開すると、setup.pyというファイルがあるのでそれを実行。python setup.py install
インストールが終わると、/etc/fail2ban以下に設定ファイル一式が生成されます。
フィルターを作る
SSHやFTPなど、頻度が高そうなフィルターはプリセットされていますが、今回は該当するフィルターがなかったので、さらっと書きました。PHPerでも理解できる正規表現です。
# Fail2Ban configuration file # # Author: ystream [Definition] failregex =www pop3d: IMAP connect from @ \[\]checkmailpasswd: FAILED: ignoreregex =
まぁ何の正規表現らしい事はしていないです。ログから「checkmailpasswd: FAILED」という部分を検知しているだけです。
場合によっては、アクションも作る
だいたいはaction.dにあるiptables.confで対応可能ですが、ログを書いてメールを送って・・・とかトリッキーなことをしたい場合はアクションも作らねばなりません。アクションの書き方は、普通のコマンドラインと少しの変数を利用してつらつらと書くだけなのでここでは割愛します。
/etc/fail2ban/jail.confを修正
各種設定の実行をここで制御しますが、基本全部動作しないようになっております。欲しいフィルターをenable = trueにする必要があります。今回は、自作のフィルターを通すので、一番下に新しい設定を加えました。
以下が今回作ったjail.confの設定。
[qmail-pop3-pw-fail] enabled = true filter = qmail-password action = iptables[name=POP3, port=110, protocol=tcp] logpath = /usr/local/psa/var/log/maillog maxretry = 100 bantime = 86400 findtime = 600
fail2ban-client start
設定完了後、fail2banをスタートします。fail2banはiptablesを自動的に直接いじるので、SSHなど重要なフィルターをかます場合は、ディスプレイの向こう側が見えるくらいに見直す、くらいの慎重さをもって実行します。リモートでSSH蹴られたら為す術がないです。直接ログインするか再起動するような現地作業しかなくなります。今回困ったこと
fail2banのフィルターの書き方は日本語のいい情報がなかなかないのでfail2ban.orgのwikiに書いてあったvpopmailログからbanするフィルターを参考に、書いてみましたが、jail.confの部分をコピペしても動かなかったのに苦労しました。参考元→ http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#Qmail_vpopmail_pop3_filter
[qmail-vpopmail-pop3-user-notfound]
enabled = true
filter = qmail-vpopmail-pop3-username
action = iptables[name=POP3, port="110,995" protocol=tcp]
logpath = /var/log/maillog
maxretry = 5
bantime = 864000
findtime = 3600
ログにはbanしたよというログが出ているんですが、iptables -n -Lで確認すると、載ってない。何がおかしいのかさっぱり分からず、1日経過。起動時にチェインは作れているのに、banしたよのログの後、iptablesに設定が追加されていないので、その辺りの処理を確認しますが、おかしいところは見つからず。
jail.confを見直すと、アクションのポート指定が他の設定とは違う設定方法をしているのに気づく。
以下のように書き換える。
[qmail-pop3-pw-fail] enabled = true filter = qmail-password action = iptables[name=POP3, port=110, protocol=tcp] logpath = /usr/local/psa/var/log/maillog maxretry = 100 bantime = 86400 findtime = 600
995番ポートの分も新たに設定を書き足します。
[qmail-pop3-pw-fail-ssl] enabled = true filter = qmail-password action = iptables[name=POP3, port=995, protocol=tcp] logpath = /usr/local/psa/var/log/maillog maxretry = 100 bantime = 86400 findtime = 600
これでいいのかな。なんか機嫌よくbanしているようなのでこれくらいで許してやろう。
過去のバージョンではできたのかも知れないけれど、本家のwikiに書いてあるのだからなかなか疑わないよ・・・。1日悩んで全てに疑心暗鬼になったからこそ分かったのでしょう。:-P
以下、fail2banの動作チェック用のコマンド群
- fail2banの設定ファイル
- /etc/fail2ban/fail2ban.conf
- fail2banのルールファイル
- /etc/fail2ban/jail.conf
- fail2banのアクション
- /etc/fail2ban/action.d/
- fail2banのフィルターファイル
- /etc/fail2ban/filter.d/
- fail2banのログファイル
- /var/log/fail2ban.log
- fail2banの起動
- fail2ban-client start
- fail2banの停止
- fail2ban-client stop
- 稼働しているfail2banのルールの確認
- fail2ban-client status
#実行結果 Status |- Number of jail: 2 `- Jail list: qmail-pop3-pw-fail, qmail-pop3-pw-fail-ssl
- iptables -L -n
- iptablesに登録されているチェインとルールを表示
不審なアクセスを効率よくbanして、平穏な休みを過ごしたいですね!
see also:
[qmail]メールサーバーがスパムの踏み台になった時にハッピーになれるツールを紹介します
[qmail]スパムは続くよどこまでも - qmail vs spam 全面戦争編 -
コメント
コメントを投稿