Dovecotのアクセス制限
我が家の POP3 サーバは CentOS 標準の dovecot を使用しているわけだが、最近、やたらと POP3 に対するパスワードアタックが多いのだ。別に dovecot が攻撃を呼び寄せているわけではないのでそれはそれで仕方ないとして、放置しておくと pop3-login のプロセスが無限増殖(笑)してえらいことに。POP3 は家庭内からしか利用しないことにして、tcp_wrappers で外からのアクセスは落としてやろうと思ったら、これができないの。
dovecot はデフォルトでxinetd 起動ではなく standalone なのだが、この状態ではどうも tcp_wrappers を利用できないっぽい。google 先生にお伺いを立ててもそれらしきものにはヒットしない。xinetd 起動に変更してやれば tcp_wrappers が利用できるはずだが、そもそも xinetd がインストールされていないし(…..って、いつ頃からインストールされなくなったんだろう。inetd/xinetd はとりあえずいるのがお約束と思ってたけど。)、入っていないものをわざわざこのために追加するのもなんだかな、だし。
あえてやろうとすればできるようで、本家の Document Wiki を xinetd で検索すると設定方法が出てくる(ちなみに、 tcp_wrappers で検索しても何もヒットしない)。xinetd での設定方法は imap/imaps の例しか示されていないが、imap を pop3 に置き換えれば POP3 でも利用可能だろうと思われ。
公式Wikiから引用:
sample configuration for imap and imaps
service imap
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/libexec/dovecot/imap-login
flags = IPv4
only_from = 127.0.0.1
banner = /usr/local/etc/deny_banner
}
service imaps
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/libexec/dovecot/imap-login
flags = IPv4
server_args = --ssl
}
|
しかし、今ひとつスマートさにかけるんだよね。
imap-login and pop3-login automatically start dovecot master process if it's not already running. NOTE: If you change any configuration, Dovecot doesn't notice the change unless the master process is restarted, or if HUP signal is sent to it. This makes Dovecot somewhat special as a inetd-based service. 超意訳: imap-login と pop3-login は、dovecot マスタープロセス(/usr/sbin/dovecot) が 既に起動していないときは自動的に起動してやるぞ。だがしかし、覚えとけ! dovecot.conf の設定変えたら dovecot を再起動するか kill -HUP しないと反映 されないからな。なに? めんどうだと? それくらい我慢しとけ。 そもそも inetd で使おうなんて思うのが悪い。 |
ま、最後の方は原文にはそんなこと書いてないわけだが、なんとなくそう言いたげな挙動かなと。man はないし、dovecot.conf のコメント行にもひとことも記述はないし。で、話は最初に戻って tcp_wrappers が利用できないのであれば、せめて dovecot.conf の中で IPアドレスベースでアクセス制限するとか、それくらいは普通設定できるでしょ、と思ったのにそんな項目ないし。会社なら上位の FireWall でアクセス元絞るとかできるけどねぇ。IPアドレス単位で制限かけたい場合は、iptables で落とす位しか方法はなさげですな。dovecot 捨てて teapop に戻る、という選択肢もありだわねぇ。。。
とりあえず、iptables で ppp0 への pop3 接続を落とすことでとりあえず決着。