Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #85, ЯНВАРЬ 2006 г.

Spamd - секретный контрудар

Andrey Matveev, Anton Karpov

Хакер, номер #085, стр. 085-106-2


На основании полученных данных и в зависимости от IP-адреса подключившегося SMTP-сервера в наших силах:

* перенаправить входящее SMTP-подключение демону spamd, который не разорвет соединение, как можно было предположить, а наоборот, будет стараться максимально долго удерживать спамера «на линии»:

table <spamd> persist

rdr pass on $ext_if inet proto tcp from <spamd> to port smtp \

-> 127.0.0.1 port spamd

* разрешить прохождение валидных пакетов:

block in

pass in log on $ext_if inet proto tcp from any to $ext_if \

port smtp flags S/SA keep state

В итоге спам не доставляется (важно отметить: после завершения соединения spamd <--> MTA рекламные письма будут возвращены в почтовую очередь отправителя), нагрузка на наш сервер практически не возрастает, а вот время и системные ресурсы подключившегося спамерского сервера, который обрабатывает сотни соединений одновременно, тратятся впустую. Можно сказать, spamd проводит очень аккуратную DoS-атаку, при этом не отступая ни на йоту от положений, задокументированных в почтовых RFC. Да-да, в идеале, если бы все почтовые серверы были оборудованы подобной защитой, спамерам пришлось бы весьма туго.

[от теории к практике]

Конфигурирование демона следует начинать с правки spamd.conf(5). В качестве значения директивы «all» указываем адреса засветившихся спамеров из дружественных восточных стран (можно, конечно, включить в перечисление секции spamhaus и spews, но тогда будь внутренне готов к тому, что в одно прекрасное утро ты перестанешь получать почту из доменов mail.ru, narod.ru, yandex.ru и т.д.):

# vi /etc/spamd.conf

all:\

:china:korea:

china:\

:black:\

:msg="SPAM. Your address %A appears to be from China\n\

See www.okean.com/asianspamblocks.html for more details":\

:method=http:\

:file=www.openbsd.org/spamd/chinacidr.txt.gz:

korea:\

:black:\

:msg="SPAM. Your address %A appears to be from Korea\n\

See www.okean.com/asianspamblocks.html for more details":\

:method=http:\

:file=www.openbsd.org/spamd/koreacidr.txt.gz:

Ключевое слово black определяет принадлежность к блэклисту, msg задает сообщение об ошибке, возвращаемое SMTP-серверу отправителя, а method и file описывают способ получения сжатого gzip(1)'ом текстового файла, содержащего IP-адреса спамеров.

Далее утилитой crontab(1) вызываем текстовый редактор (тот, что определен в переменной окружения $EDITOR) для периодического обновления базы с адресами ( каждый час):

# crontab -e

0 * * * * /usr/libexec/spamd-setup

Теперь ненадолго отвлечемся от процесса конфигурирования и заострим свое внимание на режиме greylisting.

[магия greylisting]

Борьба со спамом может идти на двух фронтах: на стороне сервера либо на стороне клиента. Заставлять клиента совершать какие-либо телодвижения - это кощунство :), а на стороне сервера, помимо традиционных черных списков, существуют два различных подхода: анализ непосредственной корреспонденции, когда по совокупности многих параметров делается вывод о «чистоте» каждого конкретного письма, а также технология «серых списков» (greylisting). Вот о последней мы и поговорим подробнее, ведь при грамотной реализации и правильной настройке данная технология способна отфильтровывать до 98% спама, не затрачивая время и ресурсы сервера на трафик и обработку «грязных»писем.

Назад на стр. 085-106-1  Содержание  Вперед на стр. 085-106-3