Назад | Перейти на главную страницу

Блокировка домена отправителя из журнала сообщений

Наш почтовый сервер получает множество ударов. В почтовом журнале их много:

Apr 23 04:35:13 mail1 postfix/smtpd[31700]: NOQUEUE: reject: RCPT from unknown[119.153.14.231]: 554 <bob@domainname.net>: Recipient address rejected: User unknown in local recipient table; from=<hareme.com@shareme.com> to=<bob@domainname.net> proto=ESMTP helo=<localhost>

У меня есть скрипт, который ищет IP-адреса и блокирует их. У меня проблема, когда я блокирую IP-адреса RCPT. Вместо этого я хочу заблокировать домен отправителя, как в этом примере: shareme.com. Что мне для этого нужно изменить в моем скрипте?

#!/bin/bash
IPT=/sbin/iptables
LIMIT=10
cd /admin
# first get one minute of log
grep "`date +"%b %d %H:%M:" --date="1 minutes ago"`" /var/log/maillog > minutelog
# now extract the rejected attempts, sort and count uniq ip
cat minutelog | grep "reject:" | cut -d" " -f10 | cut -d"[" -f2 | cut -d"]" -f 1 | sort | uniq -c | sort -n | sed 's/^[ \t]*//' > tmp1
# for each line in result
while read line
do
MYCOUNT=`echo $line | cut -d" " -f1`
MYIP=`echo $line | cut -d" " -f2`
if [ $MYCOUNT -lt $LIMIT ] ;
then
echo $MYIP is ok: $MYCOUNT attempts
else
echo blocking the spammer at $MYIP with $MYCOUNT attempts
$IPT -I INPUT -i eth0 --proto tcp -s $MYIP --destination-port 25 -j DROP
echo $MYIP >> blocked.smtp
fi
done < tmp1
rm -f minutelog
rm -f tmp1

Лучше попробовать Fail2ban: http://www.fail2ban.org/

Fail2ban сканирует файлы журналов, такие как / var / log / pwdfail или / var / log / apache / error_log, и блокирует IP-адреса, которые приводят к слишком большому количеству сбоев пароля. Он обновляет правила брандмауэра, чтобы отклонить IP-адрес.

Невозможно заблокировать по домену отправителя SMTP, используя только IP-фильтр, поскольку электронная почта с данным доменом может исходить с любого IP-адреса. Более того, вообще опасно блокировать по домену отправителя, потому что любой может подделать электронную почту отправителя и отправить несколько сообщений с чем-то вроде some@google.com, и ваш скрипт с радостью заблокирует весь трафик из Gmail.

Чтобы решить вашу проблему, я рекомендую проверить раздел «Меры против клиентов, которые устанавливают слишком много подключений» в http://www.postfix.org/TUNING_README.html