てきとうなさいと べぇたばん

postfxでのfail2banがうまく動作してなかった

なんかfail2ban効かないな

mail.logを参照してみると、SASL Authで失敗している同じIPアドレスがたくさんあって、fail2banでbanしているはずではとなる。

  • fail2ban 0.9.6
  • iptables 1.6.0
  • Debian Stretch

fail2ban.logを参照すると、以下のメッセージがあった。

iptables -w -I INPUT -p tcp -m multiport --dports smtp,465,submission,imap3,imaps,pop3,pop3s -j f2b-postfix-sasl -- stdout: b''
fail2ban.action         [26111]: ERROR   iptables -w -N f2b-postfix-sasl
iptables -w -A f2b-postfix-sasl -j RETURN
iptables -w -I INPUT -p tcp -m multiport --dports smtp,465,submission,imap3,imaps,pop3,pop3s -j f2b-postfix-sasl -- stderr: b"iptables v1.6.0: invalid port/service `imap3' specified\nTry `iptables -h' or 'iptables --help' for more information.\n"
fail2ban.action         [26111]: ERROR   iptables -w -N f2b-postfix-sasl
iptables -w -A f2b-postfix-sasl -j RETURN
iptables -w -I INPUT -p tcp -m multiport --dports smtp,465,submission,imap3,imaps,pop3,pop3s -j f2b-postfix-sasl -- returned 2
fail2ban.actions        [26111]: ERROR   Failed to execute unban jail 'postfix-sasl' action 'iptables-multiport' info # 省略

iptablesを見てみると、やはりbanされていなかった。

Chain f2b-postfix (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

というわけで調べるとiptablesの行がおかしい

iptables -w -I INPUT -p tcp -m multiport --dports smtp,465,submission,imap3,imaps,pop3,pop3s -j f2b-postfix-sasl -- stderr: b"iptables v1.6.0: invalid port/service `imap3' specified\nTry `iptables -h' or 'iptables --help' for more information.\n"

iptablesが、imap3をサポートしなくなったと見える。ということで調べると #867374 - fail2ban: iptables fails because imap3 is an unknown port - Debian Bug report logs があった。

それによれば、imap3はサポートを取りやめたということで、fail2banでは0.10.2で修正されたようだ。

https://github.com/fail2ban/fail2ban/commit/9876dd44f93a0b012108ea1aceeccee21be03cb9

その中身を見ると、fail2banのjail.confを変更している。ということで、/etc/fail2ban/jail.localファイルにportを追加しておいた。

[postfix-sasl]
enabled = true
banaction = iptables-multiport
port     = smtp,465,submission,imap,imaps,pop3,pop3s

fail2banを再起動して動作できてることを確認した。おしまい