In der Mail-Queue lagern hunderte E-Mails, ohne Authentifizierung im Header oder Logfile? Die E-Mails werden meist über ein Malware PHP Script verschickt. Es gibt zwei Möglichkeiten den Verursacher dingfest zu machen.
Methode 1: Sendmail Wrapper
Der Klassiker ist und bleibt der Sendmail Wrapper, die Sendmail Binary wird umhüllt und mit einem zusätzlichen Mail-Header versehen.
Auf den meisten Systemen ist es der Pfad /usr/sbin/sendmail, prüft das bitte nach und passt ggf. den Pfad an.
1 2 3 4 5 |
mv /usr/sbin/sendmail /usr/sbin/sendmail.orig touch /tmp/mail.send echo '#!/bin/sh' > /usr/sbin/sendmail echo '(echo X-Additional-Header: $PWD ;cat)|tee -a /tmp/mail.send|/usr/sbin/sendmail.orig "$@"' >> /usr/sbin/sendmail chmod 755 /usr/sbin/sendmail |
Ab sofort wird in der Datei /tmp/mail.send der Pfad mitgeloggt indem ein PHP mail() ausgeführt wurde. Weiter wird ein Header in der E-Mail eingefügt.
1 |
X-Additional-Header: /var/www/vhosts/example.org/httpdocs/ |
Methode 2: mail.add_x_header ab PHP 5.3.0
Neuere PHP Versionen haben diese Funktion bereits von Haus aus.
Prüft zunächst ob die PHP Version 5.3.0 oder höher vorhanden ist.
1 2 3 4 5 6 |
# php -v PHP 5.3.3-7+squeeze18 with Suhosin-Patch (cli) (built: Dec 12 2013 09:20:04) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd. with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH |
Nun prüfen wir ob die Variable in unserer php.ini existiert.
Debian
1 2 3 4 |
# grep "mail.add_x_header" /etc/php5/*/php.ini /etc/php5/apache2/php.ini:mail.add_x_header = On /etc/php5/cli/php.ini:mail.add_x_header = On /etc/php5/fpm/php.ini:mail.add_x_header = On |
CentOS
1 2 |
# grep "mail.add_x_header" /etc/php.ini mail.add_x_header = On |
Sollte keine Variable vorhanden sein, fügen wir unter [mail function] die Zeile hinzu.
1 2 3 |
[mail function] ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename mail.add_x_header = On |
Das Ergebnis schaut dann zum Beispiel so aus.
1 |
X-PHP-Originating-Script: 501:example_script.php |