Wie kann man feststellen, welcher Prozess einen bestimmten Port unter Linux geöffnet hat?

32

Ich habe nmap auf meinem Server ausgeführt und festgestellt, dass ein seltsamer Port offen ist. Ich versuche herauszufinden, ob es eine Möglichkeit gibt, diesen Port einem bestimmten Prozess zuzuordnen, habe aber keine Ahnung, ob es ein solches Tool gibt.

Irgendwelche Vorschläge?

jnman
quelle
Positiv bewertet, dass es sich bei Gogle um die Nummer 1 bei den Antworten handelt Juni 2018.
SDsolar

Antworten:

57

Ebenso wie Netstat, das in anderen Posts erwähnt wurde, sollte der Befehl lsof in der Lage sein, dies in Ordnung zu bringen. Benutze einfach folgendes:

lsof -i :<port number>

und alle Prozesse sollten auftauchen. Ich benutze es unter OS X ziemlich häufig.

Debian-Verwaltungsartikel für lsof

bjtitus
quelle
interessant. Davon wusste ich nichts. Ich untersuche dies jedoch als Ergebnis eines Hackversuchs. Maschine gehört einem Freund. Sie können eine Telnet-Verbindung zum fehlerhaften Port herstellen, aber ANDERE NETSTAT-Verbindungen zeigen den Port nicht als offen an.
jnman
der port ist 5631 was laut / etc / services pcanywheredata so sehr verdächtig ist.
Jnman
Nun, das ist schön, das wusste ich nicht! Immer verwendetes netstat. Danke
Buster
4
Wenn weder netstat noch lsof den verwendeten Port anzeigen, der Computer jedoch darauf reagiert, wurde möglicherweise ein Root-Kit installiert. Ich empfehle, Daten von der Maschine an einen anderen Ort zu verschieben und sie dann zu löschen.
Kamil Kisiel
6
Dies ist in der Tat ein Rootkit. Ich habe dieses Verhalten schon einmal gesehen und es ist immer ein Rootkit. Ihr System ist kompromittiert, und allen Tools, die Sie verwenden, kann nicht vertraut werden. Starten Sie eine Live-CD (die schreibgeschützte vertrauenswürdige Binärdateien enthält) und extrahieren Sie damit Ihre Daten, Einstellungen usw. Alle Programme, Skripte, die Sie hatten, lassen Sie sie fallen. Bring sie nicht mit. Behandle das System so, als hätte es Lepra, weil es / tut /. Sobald Sie fertig sind, nuklearisieren Sie es aus dem Orbit. Mach das so schnell wie möglich. Oh, und trennen Sie Ihre Netzwerkverbindung - verweigern Sie Ihrem Angreifer den Zugriff.
Avery Payne
23

Warnung: Ihr System ist kompromittiert.

Das Tool, das Sie benötigen lsof, listet Dateien (und Sockets und Ports) auf. Es ist höchstwahrscheinlich installiert, und es ist höchstwahrscheinlich die Version des Angreifers, was bedeutet, dass Sie belogen werden .

Dies ist in der Tat ein Rootkit. Ich habe dieses Verhalten schon einmal gesehen und es ist immer ein Rootkit. Ihr System ist kompromittiert, und alle Tools, die Sie verwenden und die von demselben Computer stammen, können nicht als vertrauenswürdig eingestuft werden. Starten Sie eine Live-CD (die schreibgeschützte vertrauenswürdige Binärdateien enthält) und extrahieren Sie damit Ihre Daten, Einstellungen usw. Alle Programme, Skripte, die Sie hatten, lassen Sie sie fallen . Bring sie nicht mit . Behandle sie und das System, als hätten sie Lepra, weil sie es tun .

Sobald Sie fertig sind, nuklearisieren Sie es aus dem Orbit .

Spiel vorbei Mann, Spiel vorbei.

Mach das so schnell wie möglich. Oh, und trennen Sie Ihre Netzwerkverbindung - verweigern Sie Ihrem Angreifer den Zugriff.

Avery Payne
quelle
1
Das sagt eigentlich alles. Finden Sie heraus, was schief gelaufen ist, reduzieren Sie den Server, und stellen Sie das zuletzt als funktionierend bekannte Backup wieder her. Das Leben ist zu kurz, um Spiele zu spielen.
Rob Moir
2
Nur hinzufügen: Stellen Sie sicher, dass Sie das Datum des Einbruchs kennen, da Sie möglicherweise dasselbe Rootkit wiederherstellen, das Sie gerade entfernt haben. Andernfalls stellen Sie die Daten von / vor / diesem Datum wieder her.
Avery Payne
1
Das ist eine lustige Grafik. Ich weiß, dass das System kompromittiert ist (zum Glück ist es nicht meins). Die Frage, die mich neugieriger machte, war, herauszufinden, wie er überhaupt reingekommen ist. Ich vermute über PHP / Joomla, wollte aber verstehen, wie / warum dieser Port offen blieb, als keines der Tools zur Erkennung von Root-Kits diesen Port zeigte.
jnman
1
lol @ "Oh, und trennen Sie Ihre Netzwerkverbindung"
theman_on_osx
6
Bevor Sie zu dieser Schlussfolgerung gelangen , gibt es noch andere mögliche Erklärungen für das Öffnen unerwarteter Ports. wie ein Paket, das Sie installiert, aber vergessen haben.
David J.
14
sudo netstat -lnp  

Listet Ports auf, die auf eingehende Verbindungen warten, sowie den zugeordneten Prozess, bei dem der Port geöffnet ist.

Joe
quelle
4

netstat -anp

Das "-p" weist es an, die Prozess-ID aufzulisten, bei der der Port offen ist. Das -an weist es an, Listening-Ports aufzulisten und Namen nicht aufzulösen. Auf ausgelasteten Systemen kann dies die Rückkehrgeschwindigkeit erheblich beschleunigen.

netstat -anp | grep "LIST"

Das gibt dir nur die offenen Ports.

sysadmin1138
quelle
4

Wenn der Port mit den Betriebssystemtools nicht geöffnet ist und Sie den Verdacht haben, dass eine Sicherheitsverletzung vorliegt, wurde möglicherweise ein Rootkit installiert.

Das Rootkit hat möglicherweise die Systemtools geändert, um bestimmte Prozesse und Ports zu vermeiden, oder die Kernelmodule geändert.

Sie können mit mehreren automatisierten Tools nach Rootkits suchen. 'apt-cache search rootkit' zeigt in Ubuntu Folgendes:

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

Wenn Sie zufällig ein Rootkit haben, können Sie die Änderungen an Ihrem System rückgängig machen. Ich empfehle Ihnen jedoch, herauszufinden, wie die Eingriffe vorgenommen wurden, und das System zu härten, damit es sich nicht wiederholt.


Sie sind nicht exklusiv für Ubuntu, sondern können auch in CentOS verwendet werden. Suchen Sie einfach nach dem Paket oder laden Sie es von der entsprechenden Seite herunter.


An der Ausgabe von diesem Port sieht es tatsächlich so aus, als würden Sie pcanywhere ausführen: " Ы <Eingabetaste>" ist sehr ähnlich zu "Bitte drücken Sie die <Eingabetaste>". Dies ist die Begrüßungsnachricht von pcanywhere. Ich weiß nicht, warum der Prozess nicht in der Prozessliste angezeigt wird. Bist du root?

Sie können versuchen, den Computer neu zu starten, um festzustellen, ob es sich ebenfalls um einen einmaligen Vorgang handelt.

chmeee
quelle
irgendwelche Vorschläge für Centos?
Uhr
seltsamerweise zeigt unhide-tcp keine verdächtigen ports an. chkrootkit / rkhunter meldete alles klar (aber vor allem, weil ich die verdächtigen dirs gelöscht habe, bevor ich diese Frage gestellt habe)
jnman
FWIW, das Rootkit hatte sich als Apache in / var / tmp / ... und /var/tmp/.ICE-Unix/* installiert. Das zweite war hinterhältig, da ich es beim ersten Mal nicht bemerkte und mich fragte, wie Zum Teufel, ein Bash-Prozess hat sich nach dem Tod von selbst entwickelt.
Uhr,
Es stellt sich heraus, dass der Cracker einen Cron-Job installiert hat.
jnman
0

Um die Antwort von @bjtitus zu erläutern, können Sie einige sehr detaillierte Informationen erhalten, zum Beispiel:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Ich kann genau dort sehen, dass Tintenfisch der Prozess ist, aber es ist tatsächlich mein squid-deb-proxy, der den Hafen einnimmt .

Ein weiteres gutes Beispiel für eine Java-App:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

Sie können in lsof(LiSt Open Files) sehen, dass es sich um Java handelt, was weniger als hilfreich ist. psWenn wir den Befehl mit der PID ausführen, können wir sofort erkennen, dass es sich um CrashPlan handelt.

ErebusBat
quelle