Поиск спамеров

Есть два аспекта обращения со спамом для администратора сервера:

  1. Входящий спам, идущий к пользователям.
  2. Исходящий спам от взломанных скриптов.

Оба требуют сильно различающихся методов для их поиска и удаления.

Поиск спамеров
Поиск спамеров

Поиск спамеров

WHM > Exim Configuration Editor > Use callouts to verify the existance of email senders.

Эти две опции заставят exim проверять, что каждый сервер, пытающийся передавать почту на Ваш сервер, может в действительности принимать почту в ответ. Эта часть RFC-требований к SMTP серверу и неспособность сервера делать это выявляет вероятных спамеров.

Существует большое количество проверок. Которые вы можете выполнять на RCPT стадии SMTP в ACL (списках контроля доступа) exim. Например, использование RBL проверок (списки спам адресов) чтобы отклонять почту с IP адресов, которые происходят от IP адресов, известных как спамерские:

deny message = Message rejected - $sender_fullhost is in an RBL, see $dnslist_text

     !hosts = +relay_hosts

     !authenticated = *

     dnslists = bl.spamcop.net : sbl-xbl.spamhaus.org

Вы также можете проверять формат емэйл заголовков, чтобы убедиться что они удовлетворяют рекомендациям RFC, т.е. многие спамерские сервера их не соблюдают. Типичный пример — это проверка команды протокола SMTP HELO/EHLO, которая подтверждает что заголовок имеет корректную структуру:

deny message = HELO/EHLO set to my IP address

     condition = ${if match {$sender_helo_name}{11.22.33.44} {yes}{no}}

(где 11.22.33.44 — главный IP адрес вашего сервера)

deny message = EHLO/HELO does not contain a dotted address

     condition = ${if match{$sender_helo_name}{\\.}{no}{yes}}

Наконец, когда письмо прошло эти барьеры, вы можете выполнить стороннее приложение, сканирующее емайлы и помечающее их как вероятный спам. cPanel имеет встроенное решение, использующее SpamAssassin чтобы отмечать письма, вероятно являющиеся спамом. Вы можете затем отфильтровывать такие письма в специальный аккаунт, или клиент может отфильтровывать такие письма основываясь на модификациях заголовков писем, сделанных SpamAssassin‘ом.

Как альтернативу, можно использовать более аккуратные инструменты, такие как MailScanner, которые могут очень эффективно помечать спамерские письма.

Однако, cPanel сервер, использующий подобные утилиты, не поддерживается cPanel и может понадобится удалить/отключить их перед тем как cPanel будет исследовать проблемы связанные с почтой, с которыми вы обратились за поддержкой.

Исходящий спам от взломанных скриптов

Исходящий спам вероятнее всего идёт из следующих двух источников:

  1. Косвенно от взломанных веб-скриптов в клиентских аккаунтах, php спамер
  2. Напрямую от клиентов, sms спамер

Начальная точка для поиска источников — это главный лог exim‘а:

/var/log/exim_mainlog (Linux)

/var/log/exim/mainlog (FreeBSD)

В этом документе я буду предполагать использование ОС Linux.

Наиболее кропотливый путь отследить сообщения — это просматривать лог exim’а в поисках аномального поведения. Это действительно очень трудно сделать и Вам нужно как можно точнее знать что именно вы ищете.

Отслеживание спамеров — трудное дело, но его можно упростить с помощью некоторых приготовлений в среде вашего сервера. Я настоятельно советую добавить следующие настройки в exim, чтобы включить некоторую дополнительную информацию в логи сервера, это сильно упростит поиск спаммеров на сервере:

В WHM > Exim Configuration Editor > Switch to Advanced Mode > в первом текстовом поле добавьте следующую строку и сохраните:

log_selector = +arguments +subject

Это скажет exim’у сохранять в логе путь на диске к отправителю емайла. Вам будет проще исследовать лог exim’a.

Лучший способ это сделать — получить заголовок письма из спама, рассылающегося с вашего сервера. Его вы можете получить или от лица, сообщившего о спаме, или из остатков спаммерской атаки в почтовой очереди exim’а.

Требующаяся часть письма — это идентификатор сообщения в строке Received: заголовка, внутри емейл заголовка спама.

Для примера возьмём следующий емейл заголовок:

Return-path: 

Received: from [11.22.33.44] (helo=barfoo.com)

     by foobar.com with esmtps (TLSv1:AES256-SHA:256)

     (Exim 4.52)

     id 1FZ8z3-0006M4-Do

     for fred @ foobar.com; Thu, 27 Apr 2006 17:04:49 +0100

Received: from forums by barfoo.com with local (Exim 4.43)

     id 1FZ8zt-0005lz-E7

     for fred @ foobar.com; Thu, 27 Apr 2006 12:05:41 -0400

To: fred @ foobar.com

Subject: Buy Me!

From: bob @ barfoo.com

Строки Received: добавляются к заголовку письма, поэтому первая Received: строка, которая нам нужна:

Received: from forums by barfoo.com with local (Exim 4.43)

     id 1FZ8zt-0005lz-E7

     for fred @ foobar.com; Thu, 27 Apr 2006 12:05:41 -0400

И идентификатор который мы хотим это 1FZ8zt-0005lz-E7.

Это уникальный идентификатор для данного письма, которое было послано с сервера. С ним мы можем проследить exim транзакцию на сервере и увидеть как она была обработана, используя:

grep 1FZ8zt-0005lz-E7 /var/log/exim_mainlog

(учитывайте что exim_mainlog файлы сменяются, поэтому вам может понадобится распаковать архивы и искать в них).

Поиск спамеров
Поиск спамеров

В этом примере мы можем видеть что письмо пришло от локального серверного пользователя nobody. Это означает что, вероятно, спам был выслан php скриптом на сервере. Пользователь nobody используется для запуска веб сервера Apache и является именем пользователя и группой по умолчанию, от имени которого Apache запускает веб скрипты. Две вещи могут влиять на это:

  1. suexec, если включен, запускает CGI скрипты как владелец скрипт файла, обычно от имени cPanel аккаунта.
  2. phpsuexec, если включен, запускает PHP скрипты так же как CGI скрипты.

Suexec обычно всегда включен на веб серверах, а phpsuexec может быть включен или выключен. Если phpsuexec выключен, то по всей вероятности скрипт, запущенный под аккаунтом nobody был PHP скриптом.

Из примера выше мы можем видеть что скрипт был запущен из директории /home/ClientX/public_html/phpBB/ на сервере, поэтому можно предположить что взломанный PHP скрипт находится внутри этой директории.

Вот другой пример спама, исходящего от клиента, а не от скрипта. Это может случится как злонамеренно, так и потому, что клиентский компьютер был заражён вирусом или червём с которого неоднократно рассылался спам:

2006-04-27 17:54:51 1FZ9lT-000707-O2 <= bob @ barfoo.com H=someisp.com ([192.168.254.2]) [11.22.33.44] P=esmtpa A=fixed_plain:bob @ barfoo.com S=715 id=ABCDEFG T=»Buy Me!»
2006-04-27 17:54:51 cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc 1FZ9lT-000707-O2
2006-04-27 17:54:51 1FZ9lT-000707-O2 => fred @ foobar.com R=boxtraper_autowhitelist T=boxtrapper_autowhitelist
2006-04-27 17:54:52 1FZ9lT-000707-O2 => fred @ foobar.com R=lookuphost T=remote_smtp H=foobar.com [44.33.22.11] X=TLSv1:AES256-SHA:256
2006-04-27 17:54:52 1FZ9lT-000707-O2 Completed

В это примере ключевая часть:

A=fixed_plain:bob @ barfoo.com

Отсюда видно, что письмо было аутентифицировано для доставки используя SMTP AUTH (т.е. fixed_plain) и имя пользователя bob @ barfoo.com.

Как Вы можете видеть, может потребоваться большой объём работ чтобы найти спамеров на сервере, плюс дополнительная работа по закрытию дыр в небезопасных скриптах, если они были причиной спама. Некоторые случаи могут быть гораздо сложнее и требовать поисков доменов в логах Apache в /usr/local/apache/domlogs/* что не является тривиальным делом.

Лучшей защитой от подобной эксплуатации сервера будет поддерживать его защищённым и следить за тем, кому и что Вы разрешаете на Вашем сервере.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *