4 заметки с тегом

postfix

Открытый почтовый релей

Внезапно обнаружил, что мой почтовый сервер стал полностью открытым. Если честно, то даже не помню когда вносил какие-то сколь значимые изменения в конфигурацию postfix. С какого перепуга произошло это событие — для меня пока что загадка. Единственное, что косвенно указывало на это — возросшая нагрузка на сервер. Но я «грешил» на другое. Команда mailq сегодня выдала очередь из более чем 100 тысяч сообщений на отправку. Пришлось убивать всю очередь, не искать же нормальные письма в такой куче. Изменил несколько параметров почтовика, вроде бы все более-менее пришло в норму, даже сервер стал отвечать побыстрей. Но тесты все равно выдают, что у меня открытый релей, поэтому завтра, если будет свободное время, придется сбрасывать конфигурацию postfix и dovecot на «заводскую» и настраивать всё заново. Благо, что есть рабочий корпоративный сервер и часть настроек можно перенести оттуда. Впрочем, настройка с нуля поможет освежить мою память в этом плане и, возможно, пересмотреть некоторые настройки безопасности.

Почта и вирусы в архивах

Часто вирусные файлы приходят в виде тех же vbs скриптов, упакованных в архив. Я не буду говорить про другие форматы, их не так уж и много, но каждый из них может доставить кучу неприятностей. Особенно если это будет шифровальщик.
Так уж сложилось, что несмотря на все ухищрения, используя стандартные методы, нельзя заставить ClamAV проверять архивы на наличие файлов определенного типа. Он может только попытаться определить заражен ли тот или иной файл в архиве, но со скриптами у него явные проблемы. Скрипт по сути представляет собой обычный текстовый файл, поэтому найти в нем код вируса достаточно проблематично.
Часть этого вопроса удалось решить, заставив postfix отбрасывать письма, в которые вложены файлы из «черного» списка. Но он не может работать с архивами, увы. Это был первый, так сказать этап, который успешно показал себя.
Вторым этапом стал поиск файлов в архивах при помощи ClamAV. Оказывается, можно все-таки заставить его проверять архивы на наличие нужных файлов. Неслучайно копаясь в интернете, наткнулся на эту вот замечательную статью. Использовав информацию из нее, подкинул созданный файл в папку с антивирусными базами ClamAV и перегрузил его. Никаких исправлений в файлы конфигураций вносить не пришлось, он сразу его подхватил. Далее я отправил письмо, полученное утром, и содержащее vbs-скрипт в архиве .7z через этот сервер. Хотел было поймать процесс обработки письма, но не успел. Впрочем, через минуту мне на почту упало сообщение от антивируса, что письмо обработано, найден архив с «вредным» файлом и что письмо было заблокировано. Это было все, чего я добивался.

Virus name: rules_block_7z_vbs.UNOFFICIAL
Sender: *****@*****.ru
Recipient(s): *****@*****.ru

Quarantined to: /var/tmp/virus.yHPWqV

Сам файл с нужными определениями состоит из строк вида

rules_block_exe:CL_TYPE_MAIL:*:\.[Ee][Xx][Ee]$:*:*:*:*:*:*

Здесь самыми интересными для нас являются три поля: имя правила, тип правила и расширение файла. Имя и тип задаются первыми двумя параметрами, разделенными двоеточием. Затем идет имя файла с расширением в виде regexp-строки. Оставшиеся параметры оставляем без изменений. Расширение файла указывается в обоих регистрах.

Борьба со спамом при помощи ASN

Блокируем целую подсеть спамеров одним махом

Бывает, что нужно отсечь почту, приходящую от целой сети. Отправители все время меняют свои адреса: отправляют определенное количество писем, меняют адрес, снова меняют адрес, снова отправляют... В таком случае помогает запрет на прием писем с определенных IP-адресов. А что делать, если таких адресов скапливается очень много? В итоге мы получаем целую «простыню» в настройках почтового сервера. Лично меня это не устраивает. Изучив часть из них, обратил внимание, что все они принадлежат одной сети. Посмотрев на список IP-адресов, закрепленных за этой сетью, понял, что список будет очень большим. Тогда же я заметил, что в регистрационных данных присутствует такая вещь, как ASN. Если очень кратко, то это уникальный идентификатор, присвоенный этой сети. Появилась мысль как-то использовать этот идентификатор в борьбе со спамом. Изучив список плагинов Spamassassin’а, увидел, что помимо прочих он также может определять не только вышеупомянутый ASN, но и подсеть отправителя.
Далее было дело техники. В настройках Spamassassin’а включаем загрузку этого модуля в v320.pre:

loadplugin Mail::SpamAssassin::Plugin::ASN

Дальше нам нужно, чтобы он вставлял нужные заголовки в получаемые письма. Для этого в local.cf добавляем следующую строку:

add_header all ASN _ASN_ _ASNCIDR_

Перезапускаем Spamassassin и... ничего не получилось. Заголовок вставляется, но данных в нем нет

X-Spam-ASN:

Я потратил почти полдня, пока нашел причину почему это не работает. Оказалось, что в параметрах запуска Spamassassin был указан параметр -L, который запрещает работу с DNS. После удаления этого параметра, заголовок приобрел более «осмысленный» вид:

X-Spam-ASN: AS25549 95.170.128.0/22

Вот теперь уже можно отдавать письмо на дополнительную проверку postfix. В файл header_checks добавляем строку:

/^X-Spam-ASN.*AS25549 .*/ DISCARD This is spamer

и перезапускаем postfix. Всё, больше писем из этой сети вы не получите.
Но, к сожалению, не все сети имеют ASN. Тогда бороться с ними остается только по IP-адресам.