ГлавнаяМатериалы по FreeBSDБорьба со спамом средствами ipfw

Борьба со спамом средствами ipfw

(0 Голосов)

anti-spam Борьба со спамом - процесс непрерывный и бесконечный. Существует множество методов ведения этой борьбы, различных по эффективности, скорости работы, сложности и другим параметрам. Цель  - предотвратить, не допустить и своевременно выявить нежелательную корреспонденцию - спам, до получения ее конечным пользователем. С результатами тестирования некоторых из современных анти-спам решений можно ознакомиться на ресурсе Habrahabr.

Расскажу об одном из практикуемых мною противоспамных средств. В качестве MTA на почтовом сервере работает Postfix. Он анализирует и тщательно протоколирует весь проходящий через него почтовый трафик. Воспользуемся полученной информацией для полного блокирования хостов, не прошедших проверку на соответствие требованиям RFC.

Схема простая. При помощи скрипта вытягиваем из логов почтового сервера ip-адреса нарушителей, критерии отбора при этом можно менять. А затем, по аналогии со статьей, блокируем эти хосты средствами ipfw.

Пишем скрипт readlog.sh:

#!/bin/sh
cat /var/log/maillog | grep "too many errors" | grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}'
| sort | uniq > /etc/badsmtp.cfg # пишем все в одну строчку
cat /var/log/maillog | grep "Relay access denied" | grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}'
| sort | uniq >> /etc/badsmtp.cfg # пишем все в одну строчку

В данном примере использовали для отбора явных релейщиков ("relay access denied") и многократных ("too many errors") нарушителей. Команда grep с параметрами -E и -o  позволяет применить регулярное выражение для определения ip-адреса и вывести в файл только эту информацию. Обращаем внимание на то, что во второй строчке используется оператор добавления в файл ">>", иначе будут стерты результаты отбора по первому критерию.

Стоит заметить, что при такой схеме отбора не исключена ситуация, когда в файл будут выведены повторяющиеся ip-адреса. Это может привести к ошибкам при добавлении их в таблицы ipfw. Исправим это, несколько изменив наш скрипт:

#!/bin/sh
cat /var/log/maillog | grep -i "too many errors\|Relay access denied" |
grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}' | sort | uniq > /etc/badsmtp.cfg # пишем все в одну строчку

В этом случае проверка ведется одновременно по двум условиям, результат будет положительным при выполнении любого из них. А перед выводом в файл мы отсеиваем одинаковые значение, используя параметр uniq. Кроме этого, сделаем поиск регистронезависимым, применив grep с параметром -i.

Добавляем информацию из файла badsmtp.cfg в таблицу ipfw (редактируем скрипт addip.sh):

#!/bin/sh
##################
fwcmd="/sbin/ipfw"
...
badsmtp="/etc/badsmtp.cfg"
##################
$fwcmd -f table all flush
...
##################
cat $badsmtp |while read line; do
$fwcmd table 25 add $line
done

В конфиге ipfw настраиваем блокировку нежелательных гостей:

cmd="/sbin/ipfw -q add"
...
$cmd 0600 deny ip from "table(25)" to me 25,465 # зыкрываем "почтовые" порты

Настраиваем cron для выполнения скриптов readlog.sh и addip.sh.

Информация в таблице блокировки будет обновляться с периодичностью, указанной в cron'е.

Если настроена ежедневная ротация почтовых логов (у меня так и сделано), то и блокировать будем только "сегодняшних" спамеров.

Обновлено 29.02.2012 13:01

Ваше мнение

Вы с пользой провели время на сайте?
 

Кто сейчас на сайте

Сейчас на сайте:
  • 1 гость

wolf3Волк - символ свободы и самостоятельности среди животных.

wolf1Волк - это символ бесстрашия. В любой схватке волк борется до победы или до смерти.

wolfsВолк живет семьей, ухаживает только за своей волчицей-женой и воспитывает своих детей-волчат.

Наверх