Привет, я использую postfix плюс fail2ban на Centos 6.5, но я получаю бот (я не ретранслирую, но вот и все), и по какой-то причине fail2ban не может вырезать ip и заблокировать его, это 6/7 раз в секунду в мой /var/log/maillog
Mar 3 13:05:47 postfix/smtpd[27715]: lost connection after UNKNOWN from Unknown[209.15.212.253]
Mar 3 13:05:47 postfix/smtpd[27715]: disconnect from unknown[209.15.212.253]
Mar 3 13:05:47 postfix/smtpd[27715]: warning: valid_hostname: misplaced delimiter: .
У меня нет проблем с publishing
IP-адрес этого бота, потому что он явно никому не дружит и является IP-адресом специально созданного спамерского движка (это RDNS как ".", чтобы попытаться создать лазейку с неуместным разделителем)
в любом случае у меня fail2ban настроен достаточно правильно, он отправляет мне электронное письмо, чтобы сказать, что он запущен и работает под sasl и postfix
здесь /etc/fail2ban/jail.local
findtime = 600
bantime = 600
maxretry = 6
[sasl-iptables]
enabled = true
filter = postfix-sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, dest=email@me.com]
logpath = /var/log/maillog
maxretry = 5
bantime = 300
[postfix-tcpwrapper]
enabled = true
filter = postfix
action = hostsdeny[file=/not/a/standard/path/hosts.deny]
sendmail[name=Postfix, dest=email@me.com]
logpath = /var/log/maillog
bantime = 300
maxretry = 6
##the following are done in sheer desperation - no idea if they are needed
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
action = hostsdeny
logpath = /var/log/maillog
[perdition]
enabled = true
filter = perdition
action = iptables-multiport[name=perdition,port="110,143,993,995"]
logpath = /var/log/maillog
[dovecot-pop3imap]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot-pop3imap
action = hostsdeny
logpath = /var/log/maillog
Может ли кто-нибудь помочь мне объяснить, почему эти правила еще /var/logs/maillog
тоже все время пишут, и никого не забанят?
[/ EDIT] будучи немного новичком в fail2ban, я не осознавал, что это (вроде) перебирает каждую строчку через регулярное выражение - вот мой /etc/fail2ban/filter.d/postfix.conf
# Fail2Ban filter for selected Postfix SMTP rejections
#
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = postfix/smtpd
failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
ignoreregex =
# Author: Cyril Jaquier
Вы не сказали нам, что в вашем postfix
фильтр, но если ваша установка похожа на мою, это что-то вроде
failregex = reject: RCPT from (.*)\[<HOST>\]: 554
Поскольку строки журнала, которые вы нам показали, совсем не выглядят, fail2ban
не будет на них срабатывать. Вам нужно будет написать свой собственный фильтр, соответствующий этим строкам, если вы хотите, чтобы они вызывали бан.
Но вы можете обнаружить, что просто чтобы заблокировать этот единственный IP-адрес, более эффективно поставить iptables
властвуй в себе. Что-то вроде
iptables -I INPUT 1 -s 209.15.212.253 -p tcp --dport 25 -j REJECT
вероятно, добился бы цели.