会社で借りている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
長々と見て頂きありがとうございます。