Kürzlich habe ich festgestellt, dass SSHd auf einigen von mir verwalteten Systemen unaufhaltsame Prozesse erzeugt, die sehr viel CPU verbrauchen.
Der Syscall zeigt, dass die Prozesse alle "laufen" und keine Zombies sind oder darauf warten, dass ihre Eltern sie töten (zumindest nicht so weit ich das beurteilen kann).
Ich habe alles versucht, um diese Prozesse zu beenden. Die einzige zuverlässige Methode, die ich bisher gefunden habe, ist, den gesamten Server neu zu starten (was nicht ideal ist). Ich habe versucht, openssh-server auf dropbear umzustellen, aber es verhält sich nicht so, wie ich es für meine Anwendungen benötige.
Ich habe es versucht:
killall -9 sshd
Töte jeden SSHD durch seine ID. Einige andere Dinge (htop + sigterm, etc ...)
Ich würde gerne einige Ideen haben, um diese Prozesse zu beenden oder die Ursachen dafür zu lösen.
Antworten:
Wenn es sich tatsächlich um OpenSSH-SSHDs handelt, würde ich vermuten, dass ein Skript sie irgendwo in einer unterbrochenen Schleife ausführt und einer ihrer untergeordneten Prozesse die gesamte CPU auslastet.
Wie Marki555 vorgeschlagen hat,
strace
würde Ihnen helfen, aber Sie sollten verwenden,strace -f
damit Strace den untergeordneten Prozessen folgt. Vonman strace
:Da strace so viele Daten generiert, ist es möglicherweise auch eine gute Idee, das Argument -e zu verwenden (um beispielsweise nur open () -Aufrufe anzuzeigen):
Ein weiterer Befehl, den Sie versuchen können, ist
ps xaf
oderpstree -a
eine leicht verständliche Strukturansicht der Prozesse und ihrer untergeordneten Prozesse zu erhalten, damit Sie bestimmen können, welcher Prozess diese sshds gestartet hat.lsof
Vielleicht hilft Ihnen auch, es wird Ihnen sagen, welche Dateien ein Prozess geöffnet hat.Und stellen Sie sicher, dass Sie das neueste OpenSSH verwenden. Ich denke, Rsync + große Dateien + ssh auf einem alten OpenSSH 3.4p1 wäre problematisch.
Wenn dies NICHT wirklich sshd-Prozesse sind, wird möglicherweise eine MD5-Prüfsumme der Binärdatei korrekt angezeigt, es wird jedoch möglicherweise nicht das eigentliche sshd-Programm ausgeführt. Der
md5sum
Befehl selbst kann auch eine Backdoor-Version sein, die geändert wurde, um die korrekte Prüfsumme für bestimmte Dateien (wie z. B. sshd) zu melden.Sie sollten sich / proc / [sshd pid] / exe ansehen und sicherstellen, dass es sich um einen Symlink zu / usr / sbin / sshd (oder wo immer sich Ihr sshd befindet) handelt, sowie / proc / [sshd pid] / environ, um dies zu sehen Welche Umgebungsvariablen es verwendet, und / proc / [sshd pid] / cmdline, um zu sehen, mit welchem Befehl es tatsächlich gestartet wurde.
Ein Angreifer hätte das Schadprogramm in "sshd" umbenennen und es dann ausführen können, damit es sshd zu sein scheint. Hätte sogar / usr / sbin / sshd nach / tmp / sshd verschieben können und dann das böswillige sshd nach / usr / sbin / sshd verschoben, um zu versuchen, es vor dieser Art von / proc-Analyse zu verbergen, aber wenn / tmp / sshd zurück verschoben wird / usr / sbin / sshd Der Symlink / proc / [sshd pid] / exe wird angezeigt
ls
als:Auch wenn diese sshd die etwas tun , aktiv in den normalen Prozessanalyse verhindern, könnten Sie versuchen ,
kill -STOP
stattkill -9
auf „Pause“ wird der Prozess (Anwendung ,kill -CONT
um es wieder auf . Siehe http://en.wikipedia.org/wiki/Job_control_%28Unix%29 #Implementierung ).Wenn ein Angreifer jedoch über Root-Rechte verfügt, kann ein Rootkit installiert werden, das sich vor / proc, netstat, ls usw. versteckt. Wenn Sie wirklich gefährdet sind, sollten Sie das System offline schalten und seine Partitionen auf einer anderen Partition bereitstellen ( Reinigen Sie das System und führen Sie dann die Forensik durch (oder verwenden Sie eine dieser Live-Linux-CDs für die Forensik).
quelle