Fail2banが失敗したpostfix SASLログイン試行を適切に禁止していることを確認したいと思います。
私がする時 iptables -L
SSHDの禁止されたホストのリストを表示できますが、SASLの禁止されたホストを表示する方法がわかりません。
postfix SASLが有効になっていて、次のように確認できます。
fail2ban-client status
Status
|- Number of jail: 4
`- Jail list: dovecot, postfix, postfix-sasl, sshd
そして、私はmail.logから、失敗したログイン試行があることを確認できます、例えば:
Aug 31 22:23:49 Host2 postfix/smtpd[35397]: warning: hostname systemip3.example.com does not resolve to address 91.200.12.100
Aug 31 22:23:49 Host2 postfix/smtpd[35397]: connect from unknown[91.200.12.100]
Aug 31 22:23:52 Host2 postfix/smtpd[35397]: warning: unknown[91.200.12.100]: SASL LOGIN authentication failed: authentication failure
Aug 31 22:23:52 Host2 postfix/smtpd[35397]: lost connection after AUTH from unknown[91.200.12.100]
Aug 31 22:23:52 Host2 postfix/smtpd[35397]: disconnect from unknown[91.200.12.100] ehlo=1 auth=0/1 commands=1/2
私自身の質問に対する答えを見つけたようです、どうやらfail2ban-client status
は、その特定の禁止のフィルター規則がない場合でも、サービスが有効であると表示します。
解決策は/ etc/fail2ban/filter.d/postfix-sasl.confにpostfix-sasl.confを作成することでした==以下の内容で:
# Fail2Ban filter for postfix authentication failures
#
[INCLUDES]
before = common.conf
[Definition]
_daemon = postfix/smtpd
failregex = ^%(__prefix_line)swarning: [-._\w]+\[<Host>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
# Author: Yaroslav Halchenko
そして設定をリロードします
fail2ban-client reload
その後、しばらくするとiptables -Lが機能し、IPが禁止されていることを確認します
Chain f2b-postfix-sasl (1 references)
target prot opt source destination
REJECT all -- systemip8.example.com anywhere reject-with icmp-port-unreachable
REJECT all -- systemip8.example.com anywhere reject-with icmp-port-unreachable
REJECT all -- 12.215.34.226 anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere