Было создано правило (каждый из regexp объясню ниже)
cat /etc/fail2ban/filter.d/mail.conf (коментарии пропущены)
[INCLUDES]
before = common.conf
[Definition]
failregex =
cannot find your hostname\S \S<HOST>\S
RCPT from .+\[<HOST>\]: .+ Recipient address rejected: User unknown in virtual mailbox table
Client host \[<HOST>\] blocked using [\.\w]+;
RCPT from .+\[<HOST>\]: .+: Sender address rejected: Domain not found
RCPT from .+\[<HOST>\]: .+: Helo command rejected:
milter-reject: END-OF-MESSAGE from .*\[<
ignoreregex =
а также добавлена секция в файл /etc/fail2ban/jail.conf
[mail-iptables]
enabled = true
filter = mail
action = iptables[name=mail, port=smtp, protocol=tcp]
logpath = /var/log/maillog
maxretry = 1
то есть после 1 неудачи спамер долго к почтовику подключится не может.
Теперь поясню правила на примерах лога (часть лога которая берется в качестве основы регулярного выражения выделена жирным):
1). баним хосты не имеющие обратной зоны;
cannot find your hostname\S \S<HOST>\S
Sep 5 05:10:17 redhat postfix/smtpd[26817]: NOQUEUE: reject: RCPT from unknown[91.218.38.132]: 450 4.7.1 Client host rejected: cannot find your hostname, [91.218.38.132]; from=<gais@allexperts.com> to=<olya@chucha.kiev.ua> proto=ESMTP helo <mail.ru>
в postfix (main.cf )должна быть включена проверка
smtpd_client_restrictions =
reject_unknown_client_hostname
2). баним хосты, которые не знают наших почтовых пользователей
RCPT from .+\[<HOST>\]: .+ Recipient address rejected: User unknown in virtual mailbox table
Sep 6 00:31:50 redhat postfix/smtpd[24421]: NOQUEUE: reject: RCPT from wpc4883.amenworld.com[85.10.140.230]: 550 5.1.1 <jdauaaysieugeniavoznyuk@chukcha.kiev.ua>: Recipient address rejected: User unknown in virtual mailbox table<jdauaaysieugeniavoznyuk@chukcha.kiev.ua>; from=<isaiah@gmail.com> to=<jdauaaysieugeniavoznyuk@chukcha.kiev.ua> proto=ESMTP helo=<wpc4883.home>
3). баним хосты, которые уже забанены каким-то DNSBL
Client host \[<HOST>\] blocked using [\.\w]+;
Sep 7 08:35:36 redhat postfix/smtpd[16967]: NOQUEUE: reject: RCPT from net-93-64-240-213.cust.dsl.vodafone.it[93.64.240.213]: 554 5.7.1 Service unavailable; Client host [93.64.240.213] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=93.64.240.213; from=<lulow5021@vodafone.it> to=<memory@chukcha.kiev.ua> proto=ESMTP helo=<vodafone.it>
в postfix (main.cf )должна быть включена проверка
smtpd_recipient_restrictions =
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client db.wpbl.info
reject_rbl_client psbl.surriel.com,
reject_rbl_client sbl.csma.biz,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcannibal.org,
4). баним хосты, домен которых не существует
RCPT from .+\[<HOST>\]: .+: Sender address rejected: Domain not found
Sep 8 18:41:46 redhat postfix/smtpd[21768]: NOQUEUE: reject: RCPT from host81-149-53-2.in-addr.btopenworld.com[81.149.53.2]: 450 4.1.8 <zelenii@bigart.com.ua&t;: Sender address rejected: Domain not found; from=<zelenii@bigart.com.ua> to=<olya@chukcha.kiev.ua> proto=ESMTP helo=<icasexch.icas.local>
в postfix (main.cf )должна быть включена проверка
smtpd_recipient_restrictions =
reject_unknown_sender_domain,
5). баним хосты, у которых hello кривое
Sep 23 00:20:09 redhat postfix/smtpd[28248]: NOQUEUE: reject: RCPT from 110-210.trifle.net[212.3.110.210]: 504 5.5.2 <silvina-bfam4c5>: Helo command rejected: need fully-qualified hostname; from=<stem8@eiras.ru> to=<igor@chukcha.kiev.ua> proto=ESMTP helo=<silvina-bfam4c5>
в postfix (main.cf )должна быть включена проверка
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
check_client_access hash:/etc/postfix/whitelisted_clients,
check_client_access hash:/etc/postfix/blacklisted_clients,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_invalid_hostname,
check_helo_access hash:/etc/postfix/access_helo,
permit
cat /etc/postfix/access_helo
127.0.0.1 REJECT Your server configured incorrectly
localhost REJECT Your server configured incorrectly
localhost.localdomain REJECT Your server configured incorrectly
localhost.domain.com REJECT Your server configured incorrectly
10 REJECT Your server configured incorrectly
172.16 REJECT Your server configured incorrectly
192.168 REJECT Your server configured incorrectly
1.2.3.4 REJECT Your server configured incorrectly
name1.domain.com REJECT Your server configured incorrectly
name2.domain.com REJECT Your server configured incorrectly
name3.domain.com REJECT Your server configured incorrectly
mail3.kc.sss OK
promkmos.PMK.local OK
romkmos2.PMK.local OK
обьяснения см. http://www.opennet.ru/docs/RUS/postfix_soho/
6). баним хосты, которые хотят подобрать авторизацию и отправить письмо через демон saslauth
warning: .+\[<
Oct 23 11:53:31 redhat postfix/smtpd[13090]: warning: 190.172.0.4: hostname 190-172-0-4.speedy.com.ar verification failed: Name or service not known
Oct 23 11:53:31 redhat postfix/smtpd[13090]: connect from unknown[190.172.0.4]
Oct 23 11:53:33 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:36 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:54 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:56 redhat postfix/smtpd[13090]: too many errors after AUTH from unknown[190.172.0.4]
Oct 23 11:54:56 redhat postfix/smtpd[13090]: disconnect from unknown[190.172.0.4]
7). баним хосты которые не нравятся политике dkim-milter, а собственно
On-Default reject
On-BadSignature reject
On-DNSError tempfail
On-InternalError accept
On-NoSignature accept
On-Security discard
milter-reject: END-OF-MESSAGE from .*\[<
Apr 8 04:53:54 redhat postfix/cleanup[7219]: 4654B6A68001: milter-reject: END-OF-MESSAGE from mails.marsmail.com.ua[91.224.75.2]: 4.7.1 Service unavailable - try again later; from=<irina04041@marsmail.com.ua> to=<sales@chukcha.kiev.ua> proto=ESMTP helo=<mails.marsmail.com.ua>
что обозначают значки + \S и другие в регулярных выражениях можно почитать сдесь http://www.py-my.ru/post/4bfb3c691d41c846bc000081, а как пользоваться утилитой fail2ban-regex для проверки регулярных выражений на строке, файле здесь
http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Usage
Теперь у меня в табличке iptables которая баних почтовики стандартно 900-1300 хостов:
hostname#iptables -n --list fail2ban-mail | wc -l
1041
и в логе fail2ban за 1 минуту 1-4 хоста или банится или разбанивается
#tail /var/log/fail2ban.log
2010-09-10 15:51:51,473 fail2ban.actions: WARNING [mail-iptables] Unban 77.120.122.24
2010-09-10 15:52:54,579 fail2ban.actions: WARNING [mail-iptables] Unban 186.203.62.80
2010-09-10 15:54:34,733 fail2ban.actions: WARNING [mail-iptables] Unban 201.240.87.5
2010-09-10 15:55:01,781 fail2ban.actions: WARNING [mail-iptables] Unban 124.105.93.2
2010-09-10 15:55:39,851 fail2ban.actions: WARNING [mail-iptables] Unban 116.114.83.32
2010-09-10 15:56:00,895 fail2ban.actions: WARNING [mail-iptables] Unban 212.30.218.11
2010-09-10 15:56:14,094 fail2ban.actions: WARNING [mail-iptables] Unban 125.165.34.1
2010-09-10 15:56:30,130 fail2ban.actions: WARNING [mail-iptables] Unban 196.205.231.112
2010-09-10 15:56:42,153 fail2ban.actions: WARNING [mail-iptables] Ban 195.184.220.242
2010-09-10 15:56:56,185 fail2ban.actions: WARNING [mail-iptables] Unban 115.75.224.221
и лог logwatch стал приятно меньше.
также sasl кракеров можно рубать и стандартными средствами из jail.conf
[sasl-iptables]
enabled = true
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
# sendmail-whois[name=sasl, dest=you@example.com]
logpath = /var/log/maillog
Комментариев нет:
Отправить комментарий