Назад | Перейти на главную страницу

Нахождение скрипта, пытающегося рассылать спам через postfix

У меня раньше была эта проблема с дерьмовыми сайтами wordpress на моем сервере, но всегда было легко найти источник, скрипт php, посмотрев на заголовок спама и увидев имя скрипта php. Но на этот раз я получил другое.

На самом деле спам не отправляется, его отбрасывает postfix, но он исходит от localhost, и мне нужно найти, откуда он.

Dec  8 13:02:29 myserver postfix/smtpd[22018]: NOQUEUE: reject: RCPT from myserver.local[127.0.0.1]: 550 5.1.0 <msg676@domainonmyserver.tld>: Sender address rejected: User unknown in virtual mailbox table; from=<msg676@domainonmyserver.tld> to=<rodrigo.menck@itelefonica.com.br> proto=ESMTP helo=<domainonmyserver.tld>

Как видите, он пытается отправить под фальшивой учетной записью, поэтому его отбрасывают. Прежде чем я исправил свои настройки постфикса, он на самом деле пытался их отправить, поэтому я взглянул на сам спам, и у него не было заголовка, указывающего где-то php-скрипт (это было первым, они всегда делали это раньше). Еще одна странность заключается в том, что он не пытается залить postfix спамом, вместо этого он рассылает их одну или две в минуту.

Любая идея, как отследить источник, будет оценена. Спасибо.

Auditd Logging

Предполагая, что это происходит не через сетевой сокет (учитывая, что ваш заголовок php не работает), я бы зарегистрировал весь доступ к самому postfix. Создайте правила auditd, которые регистрируют весь доступ к двоичным файлам postfix.

Получить список всех файлов постфикса

rpm -ql postfix | egrep "postfix|sendmail" | grep bin

затем сгенерируйте файл audit.rules (который, скорее всего, будет находиться в /etc/audit/audit.rules, но это зависит от дистрибутива), который выглядит примерно так

-w /usr/sbin/sendmail -p wra -k postfix_access
-w /usr/sbin/sendmail.postfix -p wra -k postfix_access

...и т.д

Возможно, вам придется запустить это, чтобы обновить свои правила:

augenrules

Чтобы отправить этот вывод в syslog / splunk:

sed -i -e 's/^active.*/active = yes/g' /etc/audisp/plugins.d/syslog.conf

Затем перезапустите auditd.

Это может дать вам больше подсказок о том, что вызывает postfix во время создания писем.

Сначала вы должны добавить mail.add_x_header вариант вашего php.ini

mail.add_x_header = On

Он добавит заголовок к вашим письмам, который будет содержать имя скрипта, который вызвал функцию mail ().

Если это не поможет, вы можете следовать этот учебник создать оболочку для sendmail, который также будет записывать все.