東京うぇ部

PHPをメインにしたプログラム情報共有サイト

Dovecot

dovecotに対するアタックをfail2banで防ぐ

会社で借りているVPSサーバーのログを見ていたら結構アタックされてました。。
※一部伏字にしてます。

Mar  3 18:00:01 ****** dovecot(pam_unix)[26236]: check pass; user unknown
Mar  3 18:00:01 ****** dovecot(pam_unix)[26236]: authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=******@****** rhost=***.***.***.***
Mar  3 18:00:01 ****** PAM-warn[26236]: function=[pam_sm_authenticate] service=[dovecot] terminal=[dovecot] user=[******@******] ruser=[******@******] rhost=[***.***.***.***]

まー、ssh全開放にしていたのもあるのですが

dovecotに対する上記rhostからのアタックの回避方法です。

やり方はいろいろあると思うのですが、とりあえずは

fail2banにて制御しちゃおうかなと。

まったくiptablesのルールが設定されていない前提で行う手順になります。

まず、yumでインストール。
※ちなみにCentOS5.8での対応です。

# yum install -y fail2ban

そして、dovecotのルール設定。
※サーバーによって適時変更(特にログパスなどでしょうか)

# cd /etc/fail2ban
# vi jail.conf

---------------------------

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
         sendmail-whois[name=dovecot-pop3imap, [email protected]]
logpath = /var/log/messages
maxretry = 5
findtime = 1200
bantime = 1200

[email protected]箇所にはメールで知らせる為に

サーバー管理者のアドレスでも入れておけばよいです。

また上記設定内容としては、findtime秒間にmaxretry回検知したら、

該当アクセスをbantime秒間遮断するという意味合いになります。

最後に、上記logpathで指定したファイル中での検出条件。
※サーバーによって適時変更

# vi filter.d/dovecot-pop3imap.conf

---------------------------

[Definition]
failregex = dovecot.*pam_unix.*(?:authentication failure).*rhost=(?:::f{4,6}:)?(?P<host>\S*)
ignoreregex =

これで準備はできましたので、起動。

iptablesにもfail2banのルールが設定されている事が確認できます。

# /etc/init.d/fail2ban start
# chkconfig fail2ban on
# iptables -L -n

---------------------------

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-dovecot-pop3imap  tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 110,995,143,993

後は、外部から疑似アタックして

以下みたいに正常にiptablesにてはじかれるようになればOKって事ですね。

# iptables -L -n

---------------------------

Chain fail2ban-dovecot-pop3imap (1 references)
target     prot opt source               destination
DROP       all  --  ***.***.***.***      0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

長々と見て頂きありがとうございます。

コメントを残す




このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください