4.8 Как определить кто шлет спам на VPS/Dedicated. Блокировка почты для отдельного сайта
Практически па всех наших серверах мы используем для отправки почты сервис под названием Exim.
Exim — это так называемый MTA (Mail Transfer Agent), агент передачи сообщений, в просторечии - почтовик или почтовый сервер, использующийся во многих операционных системах семейства UNIX.
У каждого письма, которое проходит через почтовый сервис есть свой идентификатор или по-другому уникальный номер письма. Идентификаторы сообщений в очередях Exim, представляют из себя буквенно-цифровые последовательности в верхнем и нижнем регистра, например “1TrXS1-0003SL-3h”, и используются большинством команд администрирования очереди и логгирования в Exim.
Базовые комадны для работы с Exim
Теперь рассмотрим краткий список команд SSH по управлению почтой и почтовой очередью.
Важно: Все команды нужно выполнять от root и они доступны только для VPS/Dedicated.
Вывести количество сообщений в почтовой очереди (то, что мы видим в мониторинге): exim -bpc
Печать списка сообщений в очереди. Выводятся, время постановки в очередь, размер, ID сообщения, отправитель, получатель:
- exim -bp
Пример такого списка:
4h 791 1TrXgs-0004t8-0W noelle_foreman@artemida2012.kiev.ua
bbyy@aol.com
4h 1.8K 1TrXgu-0004tZ-5w
noelle_foreman@artemida2012.kiev.ua
Соответственно идентификаторы этих двух сообщений: 1TrXgs-0004t8-0W и 1TrXgu-0004tZ-5w.
Во всех представленных примерах [id] - это уникальный идентификатор нужного Вам письма. Удалить сообщение из очереди:
- exim -Mrm [id]
(Пример: exim -Mrm 1TrXgs-0004t8-0W, удалит из очереди сообщение с переданным идентификатором)
Просмотреть заголовки сообщений:
- exim -Mvh [id]
Просмотреть тело сообщений:
- exim -Mvb [id]
Просмотр логов сообщения:
- exim -Mvl [id]
Удалить все заблокированные сообщения в почтовой очереди:
$ exipick -z -i | xargs exim -Mrm
Удалить все сообщения из почтовой очереди, где домен отправителя domain:
- exipick -f @domain -i | xargs exim -Mrm
Удалить все сообщения из почтовой очереди, где домен получателя domain:
- exipick -r @domain -i | xargs exim -Mrm
Удалить все сообщения из почтовой очереди:
- exipick -i | xargs exim -Mrm
Если в очереди несколько сотен тысяч сообщений, быстрее будет выполнить удаление очереди командами:
- rm -rfv /var/spool/exim4/input/
- rm -rfv /var/spool/exim4/msglog/
Как определить откуда идет рассылка спама на сервере
Теперь рассмотрим как найти кто и каким образом рассылает спам на сервере и как это заблокировать?
Для этого необходимо выполнить следующую цепочку команд.
1. Вывести список сообщений в почтовой очереди с помощью команды
- exim -bp
2. Визуально определить в списке с какого домена либо ящика идет почта. Обычно это легко видно за счет большого количества почты, отправленной с одного почтового ящика. Также, определить с чего именно идет спам можно анализируя логи, тело и заголовок нескольких однообразных писем с помощью команд, описанных выше.
3. Если спам идет со взломанного почтового ящика - отключить его, либо сменить пароль ящика в его свойствах в разделе Почтовые ящики.
Если спам идет с CRON-задания - удалить такое задание в разделе Планировщик Cron
Если спам отправляется сайтом - Найденный WWW-домен нужно либо заблокировать, либо заблокировать почту для этого WWW-домена. Cайт при этом будет работать - не работать будет только почта, отправленная скриптом PHPmail - для режимов работы PHP CGI и PHP Apache это делается по разному:
- для режима php apache в общем конфиге apache2 (/etс/apache2/apache2.conf) сервера под rootнайти блок Virtualhost нужного домена и в строчке
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f
сменить в пути /usr/sbin/sendmail слово sendmail на sendmoil. Либо сделать таr же в разделе WWW-домены в свойствах конфига apache2. После этого нужно перезагрузить сервис apache2 чтобы изменения вступили в силу. После этого PHPmail только для этого сайта и только в режиме PHP Apache работать не будет и скрипты не смогут рассылать письма.
- для режима PHP CGI под пользователем-владельцем сайта в файле php-bin/php.ini в строчке
sendmail_path = "/usr/sbin/sendmail -t -i -f
меняем в пути /usr/sbin/sendmail слово sendmail на sendmoil. При этом перезагружать ничего не нужно и указанная блокировка будет распространятся на ВСЕ WWW-домены данного пользователя, которые работают в режиме PHP CGI, а не на какой-то конкретный.
Еще раз хотелось бы отметить, что такая блокировка распространяется только на скрипты и крон с помощью которых распространяется почта - ящики, созданные на этом же домене будут работать.
Продвинутые методы определения отправителей спам-рассылки
Если определить кто шлет спам с помощью очереди не удалось, можно воспользоватся еще несколькими командами:
- tail -n 1000 /var/log/nginx/access.log | grep POST
Выведет список POST-запросов всех сайтов, в которых можно определить вредоносный файл, который генерирует рассылку.
Также рассылку могут делать подключившись по SSH. Для определения взломанного пользователя воспользуйтесь командой:
- ps axu | grep ssh
Которая выведет все SSH-подключения к серверу. Затем наберите команду:
- w
Которая выведет все активные соединения. Обычно пользователь, которого нет в выводе этой команде, но есть в выводе предыдущей взломан - в таком случае просто смените пароль пользователя либо его FTP-аккаунта.
Команда
- killall -u user
закроет все открытые SSH-соединения пользователя user.
Если вместо логина пользователя указаны цифры либо FTP-аккаунт пользователя, которого в Пользователях не видно, найти можно в файле /etc/group либо /etc/passwd.
Также скрипт рассылки может быть в папках tmp и var/tmp - эти папки также стоит проверить и почистить.
Еще рассылать спам можно запуская скрипты через cron. Быстро просмотреть все cron всех пользователей можно в папке /var/spool/cron/crontabs.
Также, бывает что отправителем спама указаны разные несуществующие ящики на вашем почтовом домене - это также один из методов рассылки. Для того, чтобы предотвратить появление таких писем, нужно в свойствах Почтового домена установить в поле Действие по умолчанию “Игнорировать и удалить”.
Если на сервере установлен не Exim a postfix, можно воспользоваться следующими командами.
Вывод почтовой очереди:
- mailq
Чистка почтовой очереди:
- postsuper -d ALL
Также, в панели управления ISPManager4 для работы с почтовой очередью есть возможность установить и использовать плагин, который называется Почтовая очередь. Установить плагин можно только из под root в разделе Плагины – нажмите Установить справа вверху, из списка выберите ispmque и установите его. После этого обновите панель управления и в разделе Инструменты появится новый раздел Почтовая очередь. В этом разделе можно полностью просматривать всю очередь и все записи каждого письма в очереди, а также чистить очередь и повторять отправку отдельных писем, то есть по сути все то же что и описанным выше методом по SSH.