Spammer aus der Mailqueue entfernen

Manchmal passiert es, dass eine Webseite- oder das Passwort eines Mailserver-Benutzers gehackt wird.
In der Folge steigt die mail queue auf dem Server rasant an.

In einem solchen Fall ist sehr rasches eingreifen des Administrators gefragt, denn nicht selten sendet der Server so innert wenigen Stunden Zehntausende Spam-Mails raus und die IP-Adresse des Servers landet auf diversen blacklisten, aus die man zum Teil nur sehr schwierig wieder herauskommt.

Zumindest die Mails, welche noch in der Mailqueue sind, kann man aber so entfernen, bevor dieser ebenfalls herausgeschickt werden.

Das oberste Gebot in einem solchen Fall ist es: Zuerst die Verbindung des Mailservers nach draussen kappen: Entweder durch eine Firewall-Regel, welche den Port 25 ausgehend schliesst, oder den Mailserver-Dienst stoppen.

Nun kann man nach dem Spammer in der mailq suchen:

mailq nach Sendern auflisten

mailq | awk '/^[0-9A-F]/ {print $NF}' | sort | uniq -c | sort -n

Output:

[root@webserver ~]# mailq | awk '/^[0-9A-F]/ {print $NF}' | sort | uniq -c | sort -n
   1 agnes.o@example.org
   1 aiden.h@example.org
   1 alberta.f@example.org
   1 alexandra.i@example.org
   1 alyssa.w@example.org
   1 amanda.j@example.org
   1 andrea.d@example.org
   1 andymico@example.net
   1 angelica.c@example.org
   1 angelina.k@example.org

Wir sehen hier, dass die meisten Mails von @example.org kommen und diese Seite wahrscheinlich gehackt wurde.

Als nächstes sucht man im maillog (meist: /var/log/maillog) nach diesen Absendern und notiert sch die Message-ID.
Diese kann man sich dann mit postcat anzeiegn lassen:

Mails in mailq anzeigen

postcat -q

Endeckt man dabei, dass die Mail von einem Web-Script (meist PHP) gesendet worden ist, ist i.d.R. die Webseite hacked:

Output:

To: lynchboogy@example.com
Subject: Looking for a man with big dick
X-PHP-Script: example.org/assets/snippets/ajaxSearch/configs/abepvzwj.php for 66.147.244.91, 127.0.0.1
X-PHP-Originating-Script: 5445:abepvzwj.php(1189) : runtime-created function(1) : eval()'d code(1) : eval()'d code
Date: Fri, 22 Sep 2017 07:24:09 +0200
From: "Alberta F." <alberta.f@example.org>
</alberta.f@example.org>

Header, welche auf ein PHP-Script hinweisen: X-PHP-Script / X-PHP-Originating-Script

Man kann nach diesen auch gezielt nach gehackten PHP-Scripts suchen in der mailq:

for i in `mailq | grep Fri | cut -d" " -f 1`; do postcat -q $i | grep X-PHP; done | sort | uniq -c

Output:

for i in `mailq | grep Fri | cut -d" " -f 1`; do postcat -q $i | grep X-PHP; done | sort | uniq -c
   1 X-PHP-Script: example.org/assets/snippets/ajaxSearch/configs/abepvzwj.php for 10.1.0.54, 178.210.90.90, 127.0.0.1
   4 X-PHP-Script: example.org/assets/snippets/ajaxSearch/configs/abepvzwj.php for 10.1.205.116, 178.210.90.90, 127.0.0.1
   2 X-PHP-Script: example.org/assets/snippets/ajaxSearch/configs/abepvzwj.php for 10.1.38.183, 178.210.90.90, 127.0.0.1
   8 X-PHP-Script: example.org/assets/snippets/ajaxSearch/configs/abepvzwj.php for 10.1.54.4, 178.210.90.90, 127.0.0.1
   1 X-PHP-Script: example.org/assets/snippets/ajaxSearch/configs/abepvzwj.php for 10.1.71.82, 178.210.90.90, 127.0.0.1
  [...]

Dann werden die Mails der betreffenden Domain in der mailq gelöscht:

mailq nach Domain löschen

mailq | awk '/^[0-9A-F].*@example.org/ {print $1}' | postsuper -d -

Hinweis: „example.org“ ersetzen mit der entsprechenden Domain.

Will man nur Mails von einem bestimmten Absender an eine bestimmte Adresse löschen, geht das folgendermassen:

mailq|grep -B2 recipient@example.org | awk '/^[0-9A-F].*MAILER-DAEMON/ {print $1}' | postsuper -d 

Oder wenn man einfach ALLE Mails in der Queue löschen will:

 postsuper -d ALL

Als nächstes kann man sich auf den Webserver der gehackten Domain verbinden und das DOCUMENT_ROOT (i.d.R. public_html) umbenennen und dann „säubern“, bevor die Webseite wieder online gestellt wird.

Herausfinden welche IP eine Domain hat:

[root@webserver ~]# host example.org
example.org has address 93.184.216.34

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert