Поиск скрипта при попытке отправить спам через постфикс
Раньше у меня была эта проблема с дерьмовыми 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
, который также будет регистрировать все.