Bestimmen Sie den Ursprungsprozess für ausgehenden Datenverkehr
9
Ich kann sehen, dass mein Server viel Verkehr sendet. Wenn ich zu netstat -apln | gehe grep httpd Ich kann sehen, dass der gesamte Datenverkehr auf eine IP geht.
Kann ich sehen, mit welchem Skript / welcher Datei die Daten an diese IP gesendet werden? Oder irgendeine IP im Allgemeinen?
Ich weiß, dass tcpdump Pakete betrachten kann, aber es scheint keine Möglichkeit zu sein, dies zu tun.
Der netstatBefehl kann Ihnen nur sagen, welche Verbindungen derzeit geöffnet sind, nicht jedoch, wie viel Verkehr jeder gesendet und empfangen hat. Um herauszufinden, welche Verbindungen die meisten Daten übertragen, müssten Sie andere Tools verwenden, z. B. iftopoder tcpdump.
Was Sie als Nächstes tun, hängt stark von der Lebensdauer jeder Verbindung ab und davon, an welchem Ende die Verbindung hergestellt wurde. Wenn Ihr Ende der Server ist, sollten Sie in der Lage sein, den zum Serverprozess gehörenden Listening-Socket zu identifizieren.
Wenn es sich tatsächlich um einen httpdProzess handelt (wie Sie in Ihrer Frage zu implizieren scheinen), ist Ihr Webserver-Zugriffsprotokoll der richtige Ort für Sie. Eine Einschränkung ist, dass jede Anforderung erst protokolliert wird, wenn die Übertragung für diese Anforderung abgeschlossen ist. Dies kann einen erheblichen Unterschied machen, wenn Sie Dateien mit einer Größe von vielen MB bereitstellen.
Wenn Ihr Ende zufällig der Client ist, werden keine Abhörsockets angezeigt. Wenn die Verbindungen jedoch langlebig sind, können Sie die Verbindungen und den entsprechenden Prozess mithilfe von finden netstat, sobald Sie bestätigt haben, welche Verbindung Bandbreite verbraucht.
Sollte die oben beschriebene Untersuchung dazu führen, dass der größte Teil des Datenverkehrs auf kurzlebigen Verbindungen stattfindet, die von Ihrem Ende aus hergestellt wurden, netstatreicht dies nicht aus, um festzustellen, welcher Prozess verantwortlich ist. Dieses spezielle Szenario wurde in einer älteren Frage behandelt .
Der Grund, warum ich weiß, dass es viel ausgehenden Datenverkehr gibt, ist das IPS, das wir haben. Es zeigt, dass der Server ein Client ist und ständig auf einen anderen Server trifft. Ich muss herausfinden, welche Datei den gesamten Datenverkehr sendet, da ich vermute, dass es sich wahrscheinlich um eine schädliche Datei handelt.
user2078802
2
Sie können versuchen zu lsofüberprüfen, welche Prozesse die Netzwerkverbindungen verwenden.
Liste aller Netzwerkverbindungen: lsof -i
Listen Sie alle TCP- oder UDP-Verbindungen auf: lsof -i tcp; lsof -i udp;
Prozesse, die einen bestimmten Port abhören: lsof -i :80
Listen Sie Netzwerkdateien auf, die von einem Prozess verwendet werden: lsof -i -a -p 234
Listen Sie die Netzwerkdateien auf, die von den Prozessen geöffnet wurden, beginnend mit ssh: lsof -i -a -c ssh
lsof wird auf der Clientseite hilfreich sein (was das Ende ist, das das Problem zu sein scheint), aber nur für den Fall, dass die Verbindung besteht, wenn der Befehl abgespielt wird. Bei kurzlebigen Verbindungen kann die wiederholte Verwendung von 'lsof -i tcp' zu Ergebnissen führen.
Tonioc
Diese Antwort hat mir geholfen, Datenverkehr zu identifizieren, der von einer bestimmten PID auf meinem Computer in Wireshark stammt, dh die PID zu ermitteln, mit lsof das Ziel zu ermitteln, an das die Anwendung Datenverkehr sendet, und dann in Wireshark / tcpdump zu filtern. thx
lobi
2
nethogs meldet die pro Prozess verwendete Bandbreite, die einmal pro Sekunde aktualisiert wird.
netstat -nlpt (muss als sudo oder root ausgeführt werden) gibt die pid / den Namen des Prozesses zurück, der für eine Verbindung verantwortlich ist. Da Sie die IP kennen, sollten Sie dies einfach tun können
sudo netstat -nlpt | grep xx.xx.xx.xx
und sehen, welcher Prozess es ist. Meine Fähigkeiten sind eher in Windows, daher könnte meine Syntax etwas abweichen. Ich sah die Schalter für Linux und fand dies als # 5 hier .
Dies war eine interessante Frage, und es sieht so aus, als ob der Kernel standardmäßig keine Zähler für die prozessbezogene Netzwerkdurchsatzauslastung speichert. Ein Kernelmodul netatop [1] fügt diese Funktion hinzu und stellt sie dann für die Protokollierung und Berichterstellung mit atop [zur Verfügung. 2].
Sie können versuchen zu
lsof
überprüfen, welche Prozesse die Netzwerkverbindungen verwenden.Liste aller Netzwerkverbindungen:
lsof -i
Listen Sie alle TCP- oder UDP-Verbindungen auf:
lsof -i tcp; lsof -i udp;
Prozesse, die einen bestimmten Port abhören:
lsof -i :80
Listen Sie Netzwerkdateien auf, die von einem Prozess verwendet werden:
lsof -i -a -p 234
Listen Sie die Netzwerkdateien auf, die von den Prozessen geöffnet wurden, beginnend mit ssh:
lsof -i -a -c ssh
quelle
nethogs meldet die pro Prozess verwendete Bandbreite, die einmal pro Sekunde aktualisiert wird.
quelle
netstat -nlpt (muss als sudo oder root ausgeführt werden) gibt die pid / den Namen des Prozesses zurück, der für eine Verbindung verantwortlich ist. Da Sie die IP kennen, sollten Sie dies einfach tun können
sudo netstat -nlpt | grep xx.xx.xx.xx
und sehen, welcher Prozess es ist. Meine Fähigkeiten sind eher in Windows, daher könnte meine Syntax etwas abweichen. Ich sah die Schalter für Linux und fand dies als # 5 hier .
quelle
Dies war eine interessante Frage, und es sieht so aus, als ob der Kernel standardmäßig keine Zähler für die prozessbezogene Netzwerkdurchsatzauslastung speichert. Ein Kernelmodul netatop [1] fügt diese Funktion hinzu und stellt sie dann für die Protokollierung und Berichterstellung mit atop [zur Verfügung. 2].
[1]: Siehe http://www.atoptool.nl/netatop.php
[2]: Siehe http://www.atoptool.nl/
quelle