
Ein PHP-Skript sendet massenhaft E-Mails. Ich möchte herausfinden, was die Quelle ist. Alle E-Mails werden unter Verwendung der WWW-Daten gesendet, die der Benutzer von Apache verwendet. Wenn ich den Vorgang überprüfe, erhalte ich dieses Ergebnis:
www-data 16220 0.7 4.7 402508 95924 ? S 09:37 0:06 /usr/sbin/apache2 -k start
www-data 16352 0.4 3.8 402132 78064 ? S 09:39 0:03 /usr/sbin/apache2 -k start
www-data 16725 0.6 3.8 402472 78624 ? S 09:46 0:02 /usr/sbin/apache2 -k start
www-data 16840 0.8 4.2 410744 87204 ? S 09:48 0:01 /usr/sbin/apache2 -k start
www-data 16949 1.0 4.5 417560 93436 ? S 09:49 0:01 /usr/sbin/apache2 -k start
www-data 16958 1.0 3.5 402120 72748 ? S 09:50 0:01 /usr/sbin/apache2 -k start
www-data 16978 1.2 4.6 425160 94864 ? S 09:51 0:00 /usr/sbin/apache2 -k start
www-data 16980 0.8 3.5 402140 72208 ? S 09:51 0:00 /usr/sbin/apache2 -k start
www-data 16983 0.4 2.6 402160 54400 ? S 09:51 0:00 /usr/sbin/apache2 -k start
Apache verwendet viele Prozesse und ich weiß nicht, welches Skript die E-Mails sendet.
Gibt es eine Möglichkeit, das zu tun?
Antwort1
Möglicherweise können Sie mithilfe eines Strace alle laufenden Apache-Prozesse in eine Datei sichern und dann, nachdem der Spam versendet wurde, versuchen, herauszufinden, was vor sich ging (beispielsweise indem Sie mithilfe von mod_status regelmäßig Serverstatus-Dumps speichern, wenn dies nicht anhand der Dateipfade im Strace offensichtlich ist).
Sie könnten etwas wie das Folgende versuchen – beachten Sie jedoch, dass es möglicherweise ressourcenintensiv ist. Passen Sie den -s
Parameter nach Bedarf an.
pidlist=''; \
for pid in `ps ax | grep apache2 |grep /usr/sbin/apache2 | awk '{print $1}'`;\
do pidlist="$pidlist -p $pid"; \
done; \
strace -s 1024 -tt -F -f $pidlist > strace_apache2.out 2>&1