Режем спам. Дополнительные методы::Журнал СА 2.2005
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1894
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1936
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1497
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1097
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1667
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

Электронка - 2020!

 Режем спам. Дополнительные методы

Архив номеров / 2005 / Выпуск №2 (27) / Режем спам. Дополнительные методы

Рубрика: Администрирование /  Электронная почта

ДЕНИС НАЗАРОВ

Режем спам

Дополнительные методы

Идет бабулька по подворотням, видит два парня третьего пинают, она cпрашивает:

– За что это вы его так, сынки?

– Бабка, да это спамер!

– А ну тогда по почкам его! По почкам!

Знакомый анекдот? А в реальной жизни вы пробовали подсчитать количество «спама», проходящего через ваш почтовый сервер? Недавний аудит одной финансовой компании показал, что через почтовый сервер прошло больше 22 Гб почтового трафика в месяц. Я информировал об этом начальство и со спокойной душой решил, что аудит окончен, но я ошибся, руководство компании уверяло меня в том, что это просто невозможно, т.к. раньше у них был гораздо меньший объем почтового трафика, а новых сотрудников они не набирали. Пришлось разбираться дальше. Проанализировав протоколы за месяц, я пришел к выводу, что 20 из этих 22 Гб были просто «спамом». Решено было избавлять компанию от этой назойливой почты...

Итак, мы имеем в наличии

  • OpenBSD 3.6.
  • Postfix 2.1.5 (считаю этот МТА одним из лучших благодаря гибкости настройки и возможностям).
  • DrWeb 4.32 (отличный антивирус, никогда не подводил, идеально работает с OpenBSD).
  • Пользователи: примерно 500 человек.

Задача: Обеспечить максимальную защиту от спама и вирусов, которые вам стремятся подсунуть по электронной почте.

Система

Настройка системы начинается с файла /etc/rc.conf. С версии 3.3 OpenBSD имеет встроенный механизм защиты от спама, называемый spamd. Именно о настройке данного компонента системы мы и поговорим. Что есть spamd? Это демон, который пропускает через себя весь почтовый поток и принимает решения – отдать ли письмо на обработку «реальному» МТА или же отбросить, как «спам».

Как работает spamd? В его распоряжении имеются 2 или 3 списка (в зависимости от того, что вы выберете в конфигурационном файле) – «черный список», «белый список», «серый список». Последний («серый список») может быть отключен, если вам нужен более жесткий контроль над спамерами. Демон spamd при запуске начинает слушать порт 8025 на интерфейсе 127.0.0.1 (переопределить порт можно, отредактировав файл /etc/services). Затем при помощи PF (OpenBSD Packet Filter) мы перенаправляем весь трафик с 25-го порта на порт 8025. И видим следующую картину:

Trying 127.0.0.1...

Connected to localhost.

Escape character is "^]".

220 bastion ESMTP spamd IP-based SPAM blocker; Tue Feb 15 12:57:50 2005

С виду похоже на приветствие обычного МТА, если не считать строчку: IP-based SPAM blocker.

Вот теперь начинается самое интересное. Возвращяемся к спискам.

  • «Черный список» – думаю все понятно. IP-адреса, перечисленные тут, будут вежливо отвергнуты.
  • «Белый список» – IP-адреса из этого списка будут иметь доступ к «реальному» МТА напрямую, без прохождения спам-фильтра. Подразумевается, что в этот список вы вносите те IP-адреса, в которых уверены на 99,97%.
  • Grey List – динамический список. Приходящее письмо с IP-адресом, не входящее ни в «черный список», ни в «белый список», будет помечено как «grey», и отвергнуто с ошибкой: «450. Temporary failure. Try again later.» Получая данный ответ, удаленный хост, отправивший вам сообщение, должен будет снова попытаться переслать сообщение через некоторое время. Обычно интервал ожидания может быть от 10 до 30 минут. Spamd следит за этим и, получая письмо второй раз, передает его почтовой системе, занося отправителя в «белый список». Зачем все это нужно? Получив в ответ ошибку, спамер будет настойчиво пытаться впихнуть нам свое сообщение. Возможно, даже выполняя множество попыток в течение одной минуты. Spamd считает такие попытки. При превышении определенного количества хост тут же попадает в «черный список».

Чтобы окончательно понять, как это работает, приступим к конфигурированию.

/etc/rc.conf

spamd_flags=""   # for normal use: "" and see spamd-setup(8)

spamd_grey=YES   # use spamd greylisting if YES

Влючаем spamd и указываем на то, что мы хотим использовать Grey Listing.

Crontab

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

В crontab для root прописываем запуск утилиты spamd-setup таким образом, чтобы она выполнялась в начале каждого часа. Данная утилита скачивает из Интернета списки с IP-адресами спамерских релеев и автоматически заносит их в ваш «черный список».

/etc/spamd.conf

all:\

        :spamhaus:spews1:spews2:china:korea:whitelist:blacklist:

# Mirrored from http://spfilter.openrbl.org/data/sbl/SBL.cidr.bz2

spamhaus:\

    :black:\

    :msg="SPAM. Your address %A is in the Spamhaus Block List\n\

    See http://www.spamhaus.org/sbl and\

    http://www.abuse.net/sbl.phtml?IP=%A for more details":\

    :method=http:\

    :file=www.openbsd.org/spamd/SBL.cidr.gz

# Mirrored from http://www.spews.org/spews_list_level1.txt

spews1:\

    :black:\

    :msg="SPAM. Your address %A is in the spews level 1 database\n\

    See http://www.spews.org/ask.cgi?x=%A for more details":\

    :method=http:\

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

# Mirrored from http://www.spews.org/spews_list_level2.txt

spews2:\

    :black:\

    :msg="SPAM. Your address %A is in the spews level 2 database\n\

    See http://www.spews.org/ask.cgi?x=%A for more details":\

    :method=http:\

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

# Mirrored from http://www.okean.com/chinacidr.txt

china:\

    :black:\

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

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

    :method=http:\

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

# Mirrored from http://www.okean.com/koreacidr.txt

korea:\

    :black:\

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

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

    :method=http:\

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

# Whitelists are done like this, and must be added to «all» after each blacklist from which you want

# the addresses in the whitelist removed

whitelist:\

    :white:\

    :file=/var/mail/whitelist.txt

blacklist:\

    :black:\

    :msg="SPAM! Go fsck anyone else!":\

    :file=/var/mail/blacklist.txt

relaydb-black:\

    :black:\

    :msg="SPAM. Your address %A is in my relaydb list.":\

    :method=exec:\

    :file=relaydb -4lb:

relaydb-white:\

    :white:\

    :method=exec:\

    :file=relaydb -4lw:

Данный файл отвечает за обработку этих самых «черных», «белых» и «серых» списков. Я перечислил основные самые крупные «черные списки» для спамеров, вы можете их смело использовать.

Переходим к настройке ваших «черных» и «белых» списков.

blacklist:

    :black:

    :msg="SPAM! Go fsck anyone else!":

    :file=/var/mail/blacklist.txt

Директива msg отвечает за то сообщение, которое мы будем отправлять во время сессии, в том случае если хост находится в «черном списке». Директива file определяет путь для файла со списком IP-адресов, которые автоматом при загрузке попадают в «черный список».

# cat /var/mail/blacklist.txt

81.213.107.93

212.112.102.194

81.195.250.132

212.19.145.86

Конфигурационный файл похож и для «белого списка», за исключением директивы msg – она отсутствует.

# cat /var/mail/whitelist.txt

192.168.0.0/24

Важно.

all:

    :spamhaus:spews1:spews2:china:korea:whitelist:blacklist:

Решение принимается на основе последнего совпадения IP-адреса и записи в списках.

Все. Основная конфигурация для spamd закончена. Так как мы перенаправляем письма в spamd при помощи PF (Packet Filter), то конфигурируем сам фильтр:

/etc/pf.conf

table persist

table persist

rdr pass inet proto tcp from to any port smtp -> 127.0.0.1 port 8025

rdr pass inet proto tcp from ! to any port smtp -> 127.0.0.1 port 8025

Тем, кто читал в журнале мои предыдущие статьи о пакетном фильтре операционной системы OpenBSD, все будет понятно. Для остальных поясню – фильтр перенаправляет весь трафик с 25-го порта на порт 8025. Но если трафик на 25 порт идет с IP-адреса, который находится в «белом списке», то PF пропускает трафик сразу «реальному» МТА.

Готово. Теперь осталось запустить spamd.

Можно запустить spamd вручную, но лучше будет – перезагрузить сервер, т.к. при запуске spamd создает нужные файлы в /var/db, а также «привязывает» себя к пакетному фильтру.

# ps ax | grep -i spa

 3123 ??  Is      3:52.08 spamd: (pf update) (spamd)

17434 ??  I      17:44.88 /usr/libexec/spamd -g

11229 ??  I       0:01.86 spamd: (/var/db/spamd update) (spamd)

26245 ??  Is      0:00.00 /usr/libexec/spamlogd

23886 p0  I+      0:00.00 grep -i spa

Отлично. Спам-фильтр, основанный на проверке IP-адресов, это, конечно, хорошо и будет работать в связке с любым МТА, но мы сделаем еще лучше.

Идем дальше.

Postfix

Я не буду рассказывать, почему Postfix такой замечательный и гибкий, и быстрый, и мощный – просто сразу начнем его настраивать.

/etc/postfix/main.cf

#

# Our stuff for coniguring Postfix goes here

#

Запрещаем использование команды VRFY для проверки наличия пользователя в системе.

disable_vrfy_command = yes

Обязываем удаленный хост здороваться с нами, а не сразу начинать нас забрасывать почтой. Софт, разработанный для рассылки спама, зачастую не умеет работать с smtp-командой helo.

smtpd_helo_required = yes

Проверяем наличие «верного» имени хоста для отправителей. Иначе отказываем отправителю.

smtpd_helo_restictions = permit_mynetworks,

    reject_invalid_hostname,

    reject_unknown_hostname,

    reject_non_fqdn_hostname

Проверяем наличе «верного» домена у отправителя, иначе отказываем.

smtpd_sender_restrictions = reject_unknown_sender_domain,

    check_sender_access hash:/etc/postfix/reject

Если же намеренно хотим отказать отправителю – заносим его домен в файл /etc/postfix/reject и выполняем команду:

# postmap /etc/postfix/reject

Утилита postmap создаст хеш из файла /etc/postfix/reject, который будет использоваться самим Postfix для отказа в приеме почты.

Проверяем наличие «верного» имени домена для получателей, отказываем всем, чьё имя домена не соответствует требованиям FQDN, или не существует вообще.

smtpd_recipient_restrictions = reject_invalid_hostname,

    reject_non_fqdn_sender,

    reject_non_fqdn_recipient,

    reject_unknown_sender_domain,

    reject_unknown_recipient_domain,

    reject_unauth_pipelining,

    permit_mynetworks,

    reject_unauth_destination,

    reject_rbl_client relays.visi.com,

    reject_rbl_client relays.ordb.org,

    reject_rbl_client list.dsbl.org,

    reject_rbl_client dnsbl.sorbs.net,

    reject_rbl_client dnsbl.void.ru,

    reject_rbl_client blackholes.mail-abuse.org,

    reject_rbl_client relays.mail-abuse.org,

    reject_rbl_client dul.mail-abuse.org,

    reject_rbl_client relays.ordb.org,

    reject_rbl_client blackholes.wirehub.net,

    reject_rbl_client dynablock.wirehub.net,

    reject_rbl_client dnsbl.njabl.org,

    reject_rbl_client list.dsbl.org,

    reject_rbl_client opm.blitzed.org,

    reject_rbl_client http.dnsbl.sorbs.net,

    reject_rbl_client socks.dnsbl.sorbs.net,

    reject_rbl_client misc.dnsbl.sorbs.net,

    reject_rbl_client smtp.dnsbl.sorbs.net,

    reject_rbl_client web.dnsbl.sorbs.net,

    reject_rbl_client bl.spamcop.net,

    reject_rbl_client dev.null.dk,

    reject_rbl_client blackholes.mail-abuse.com,

    reject_rbl_client relays.mail-abuse.com,

    reject_rbl_client dialups.mail-abuse.com,

    reject_rbl_client relays.ordb.org,

    reject_rbl_client list.dsbl.org,

    reject_rbl_client multihop.dsbl.org,

    reject_rbl_client argentina.blackholes.us,

    reject_rbl_client brazil.blackholes.us,

    reject_rbl_client china.blackholes.us,

    reject_rbl_client cn-kr.blackholes.us,

    reject_rbl_client hongkong.blackholes.us,

    reject_rbl_client japan.blackholes.us,

    reject_rbl_client korea.blackholes.us,

    reject_rbl_client malaysia.blackholes.us,

    reject_rbl_client mexico.blackholes.us,

    reject_rbl_client nigeria.blackholes.us,

    reject_rbl_client singapore.blackholes.us,

    reject_rbl_client taiwan.blackholes.us,

    reject_rbl_client thailand.blackholes.us,

    reject_rbl_client turkey.blackholes.us

Строчка reject_rbl_client relays.visi.com … добавляет так называемую RBL-проверку. Принцип тот же, что и у spamd. Хост проверяется в «черном списке» у всех добавленных нами «reject_rbl_client», и, если будет обнаружен там, письмо отбрасывается, как спам.

После данной настройки системы и Postfix в качестве MTA в протоколах мы можем наблюдать следующее:

# tail /var/log/daemon

Feb 15 12:10:22 bastion spamd[17434]: 66.94.237.32: connected (1/0)

Feb 15 12:10:23 bastion spamd[17434]: 66.94.237.32: disconnected after 1 seconds.

Feb 15 12:13:29 bastion spamd[17434]: 222.67.37.40: connected (103/100), lists: china

Feb 15 12:13:32 bastion spamd[17434]: 222.67.37.40: disconnected after 3 seconds. lists: china

Feb 15 12:13:53 bastion spamd[17434]: 63.209.157.52: connected (1/1), lists: spamhaus

Feb 15 12:21:11 bastion spamd[17434]: 63.209.157.52: disconnected after 438 seconds. lists: spamhaus

Из протоколов видно, какой IP-адрес и сколько раз пытался соединиться и отправить нам спам.

# grep –i spam /var/log/maillog

Feb 15 01:19:34 bastion postfix/smtpd[8447]: NOQUEUE: reject: RCPT from domain.name[195.2.80.59]: 554 Service unavailable;

Client host [195.2.80.59] blocked using dnsbl.sorbs.net; Spam Received See: http://www.dnsbl.sorbs.net/lookup.shtml?195.2.80.59;

from= to= proto=SMTP helo=

Система работает, как часы, все четко и точно. Если вам не нравится, как spamd распределяет IP-адреса отправителей по «черному» и «белому» списку, используем утилиту spamdb.

# spamdb | more

WHITE|12.111.30.74|||1105460517|1105466496|1108576943|2|0

WHITE|129.215.166.64|||1106681432|1106683445|1109793856|2|0

WHITE|13.16.138.21|||1105587869|1105591107|1108701528|3|0

WHITE|130.126.232.30|||1106168619|1106170545|1109281002|6|0

WHITE|134.130.3.130|||1107270887|1107274487|1110384920|2|0

WHITE|138.220.29.7|||1105954380|1105956190|1109066641|6|0

Данный листинг показывает ваши «белый список» и Grey Lists. Если вы намеренно хотите добавить в таблицу хост, помеченный как White, используем параметр -a, чтобы удалить -d:

spamdb –a xxx.xxx.xxx.xxx

spamdb –d xxx.xxx.xxx.xxx

Примечание. Добавить или удалить можно только IP-адреса, помеченные как White. Для добавления IP-адреса в ваш «черный список» отредактируйте файл, указанный в директиве file файла /etc/spamd.conf.

Основная настройка закончена. Остаются «рюшечки». Спам это, конечно, вредная вещь, но вирусы, трояны и прочее может принести вам еще больше проблем. Приступим.

Берем последнюю версию DrWeb на сайте http://download.drweb.com/unix/OpenBSD+3.6 и оттуда же фильтр для Postfix.

Установка DrWeb очень проста. Нужно распаковать архив и расположить файлы в системе так, как это сказано в readme. Также вам потребуется наличие демонстрационного ключа для запуска антивируса в демо-режиме. Если понравится работа DrWeb (а я надеюсь, так и будет), то вы можете без проблем приобрести нормальный ключ.

Переходим к Postfix. Тут тоже все довольно просто.

/etc/postfix/master.cf

Заменяем строчку:

smtp      inet  n       -       n       -       -       smtpd

на

smtp      inet  n       -       n       -       -      smtpd -o content_filter=filter:dummy

и добавляем в конец файла:

filter    unix  -   n   n   -   -   pipe

    flags=R user=drweb argv=/usr/local/drweb/drweb-postfix -f ${sender} -- ${recipient}

Вот, в общем-то, и все. Отличная антивирусная защита к вашему Postfix готова.

На сим заканчиваю, надеюсь, описанные мной способы помогут отбить все почки вашим спамерам.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru