最近、当サーバーに dovecot の不正アクセスが多いので fail2ban を利用してみることにしました。
Fail2ban は、ログファイルをスキャンして不正なアクセスを検出し、そのIPアドレスからのアクセスを一定時間禁止させることができるツールです。
CentOS から利用するには、Extra Packages for Enterprise Linux (EPEL) パッケージからインストールするのが簡単です。
fail2ban を稼働してから3日たち、その効果が確認できました。
1. fail2ban のインストール
EPELパッケージをインストールすると、yum で fail2ban をインストールできます。
# yum install fail2ban
2. jail.conf の変更
インストールすると、/etc/fail2ban/ に jail.conf ファイルがあります。
このファイルをエディタで開いて、以下の定義を追加します。
[dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp] sendmail-whois[name=dovecot-pop3imap, dest=root, sender=fail2ban] logpath = /var/log/secure maxretry = 3 findtime = 600 bantime = 60
すべてのオプションを把握してはいないのですが、
- enabled この設定を有効にするか true = 有効 - filter この設定で使用するフィルター名 - action では、不正と判定した場合の動作を記述します。 iptables で pop3, imap のポート、tcp プロトコルをアクセス禁止にします。 そして、root 宛てにメールを送信します。 - logpath スキャンするログファイルを指定 - maxretry は失敗の回数を指定。ここでは3回 - bantime は、不正なIPからのアクセスを禁止する時間(秒) - findtime は、不正アクセスの件検出にかける時間(秒)
3. dovecot-pop3imap.conf の作成
上記ステップで、フィルタ名 (filter) に dovecot-pop3imap、
スキャンするログファイル (logpath) に /var/log/secure をしました。
次にフィルターを作成します。フィルターとは、fail2ban にそのログからアクセスを禁止させたい失敗パターン(認証失敗など)を指定します。
/etc/fail2ban/filter.d/ の下に dovecot-pop3imap.conf 名前でファイルを作成して以下の内容で保存します。
[Definition] failregex = pam.*dovecot.*(?:authentication failure).*rhost=(?:::f{4,6}:)?(?P<host>S*) ignoreregex =
上記パターンでは、以下のログがマッチします。
Oct 5 13:44:36 localhost dovecot-auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser= rhost=::ffff:2XX.1XX.XX.XX
fail2ban が不正アクセスを検出すると、以下のようなメールが送信されてきます。
~ 抜粋 ~
Hi,
The IP 2XX.1XX.XX.XX has just been banned by Fail2Ban after3 attempts against dovecot-pop3imap.
Here are more information about 2XX.1XX.XX.XX:
~ 以下省略 ~
以上です。
「Fail2ban で不正アクセス防止 (dovecot 編)」への1件の返信
[…] Fail2ban を導入してから、dovecot の不正アクセス防止に効果があったので、httpd (apache) へも適用することにしました。 […]