さくらVPSでWeb+POP+SMTPサーバーを運用しているのですが、突然サーバーから応答が無くなってしまいました。
とりあえず再起動して復旧したのですが、secureログに下記ような認証のログが大量に残されていました。
Jan 22 01:33:36 www****u dovecot-auth: pam_unix(dovecot:auth): check pass; user unknown
Jan 22 01:33:36 www****u dovecot-auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser= rhost=::ffff:***.***.***.***
Jan 22 01:33:36 www****u dovecot-auth: pam_succeed_if(dovecot:auth): error retrieving information about user test
※一部伏せ字にしています
認証に成功しているわけではないと思うのですが、大量のアクセスでCPUリソースが消費されてサーバーダウンという結果になったのではないかと想像しています。
SSHで同様のことがあった場合にはポート番号を変更したりして回避すると思うのですが、POPに関しては何か対策があるものでしょうか。何か対策がございましたらお教えいただけますと幸いです。
以上、よろしくお願いいたします。
一時対応としては、そのIPアドレスからのアクセスをiptablesで叩き落とします。
最低限でも110番(POP3overSSLなら995番)、面倒ならポート番号問わず落としますね。
iptables -A INPUT -s xx.xx.xx.xx -p tcp --dport 110 -j DROP
その上でdovecotを再起動すれば、リソースは回復するのではないでしょうか。
複数のIPアドレスから攻撃が来ててイタチごっこになってしまう場合は逆で、iptablesでデフォルト拒否にした上で、必要なIPアドレスのみ110or995へのアクセスを許可する、というのはどうでしょう?
dovecot.confで
listen = xxx
ssl_listen = xxx
のようなパラメータを変更すればポート変更はできますが、ユーザビリティを考えるとちょっと微妙なところですね。