Поиск скрипта при попытке отправить спам через постфикс

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

Спам не отправляется на самом деле, он удаляется постфиксом, но он исходит от 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 (это было первое, что они всегда делали раньше). Еще одна странная вещь: он не пытается залить постфикс спамом, вместо этого он рассылает их раз в две или две.

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

2 ответа

Auditd Logging

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

Получить список всех файлов 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

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

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

Во-первых, вы должны добавить опцию mail.add_x_header в ваш php.ini

mail.add_x_header = On

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

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

Другие вопросы по тегам