Welche Ports werden von einer Anwendung verwendet [Duplikat]


11

Ich teste eine Anwendung, die ihre eigenen Ports öffnet (als Server für diese Ports fungiert und daher an diesen Ports lauscht) und bei der dieselbe Anwendung eine Verbindung zu Ports herstellt, die an andere Anwendungen gebunden sind (fungiert als Client für diese Ports).

Ich möchte einen Überblick darüber erhalten, welche Ports die Anwendung erstellt und mit welchen Anwendungen und Ports sie verbunden ist.

Wie kann ich das machen?

Antworten:


17

Sie können netstatdies verwenden. Siehe das Beispiel (nach dem ich gesucht habe ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

Erläuterung:

Ich benutze oft die Parameter -putan(weil sie einfach zu merken sind).

  • -p: Zeigt die PIDs der Anwendung / des Prozesses an
  • -u: udp-Ports / -Verbindungen anzeigen
  • -t: TCP-Ports / Verbindungen anzeigen
  • -a: Zeigen Sie sowohl hörende als auch nicht hörende Steckdosen an
  • -n: numerische Ausgabe (keine DNS-Suche nach Hostnamen usw. durchführen)

In der obigen Ausgabe sehen Sie, dass es einen ssh-Daemon-Prozess ( sshd) gibt, bei dem die PID an allen Netzwerkschnittstellen ( ) 1725am Port 22überwacht wird 0.0.0.0. Es gibt auch einen SSH-Client-Prozess (PID 2491), der mit der IP-Adresse 1.2.3.5unter Portnummer verbunden 22ist. Meine IP-Adresse ist 1.2.3.4und mein externer Port ist 45734. Sie sehen, dass die Verbindung hergestellt ist. Deshalb bin ich via angemeldet ssh.


Eine hergestellte TCP-Verbindung an Port 22 zeigt keine erfolgreiche Authentifizierung an. TCP muss eingerichtet werden, bevor eine Authentifizierung in beide Richtungen erfolgen kann.
Jamesbtate

@Puddingfox ja wahr, wir könnten besser sagen "Ich bin mit diesem Port verbunden", aber zum Verständnis sagte ich "Ich bin angemeldet", weil es illustrativer ist.
Chaos

1
hehe ... `-putan ' Ich bin so versucht, diesen kleinen Rechtschreibfehler zu korrigieren;)
James Mertz

Warum veraltete Dienstprogramme verwenden, wenn moderne verfügbar sind? ss -lntp ist das Dienstprogramm der iproute2- Suite.
Marius Matutiae

7

Ein weiteres Tool, das dies tun kann, ist lsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

Folgende Optionen werden verwendet:

  • -i um durch einen Prozess geöffnete Internet-Ports auszudrucken
  • -a um zu bewirken, dass alle Optionen UND-verknüpft werden
  • -p 1981 Ausgabe für Prozess 1981 zu zeigen
  • -n um die Suche nach Hostnamen zu verhindern und stattdessen IP anzuzeigen
  • -P um die Service-Suche zu verhindern und stattdessen die Portnummer anzuzeigen

lsofhat den Vorteil, dass Sie den zu überprüfenden Prozess angeben können, anstatt ihn aus einer größeren Ausgabe herausgreifen zu müssen. netstatist auf Systemen zuverlässiger verfügbar, lsofwird jedoch immer mehr zum Standard als früher.


Ich möchte diesen Befehl ausführen, bevor ich die Anwendung starte, die ich überwachen möchte. Kann ich jedoch feststellen, welche PID eine Anwendung erhält, bevor ich sie starte?
Baz

@Baz, wenn Sie eine Anwendung beim Start überwachen möchten (z. B. bevor Sie wissen, dass es sich um eine PID handelt), sollten Sie die von strace@olivecoder vorgeschlagene Lösung ausprobieren.
Gowenfawr


3

Wir haben bereits gute Antworten, aber sie listen nur die Ports auf, die zum Zeitpunkt der Befehlsausführung geöffnet sind.

strace ist das richtige Tool zur Überwachung der während der Anwendungslebensdauer geöffneten Verbindungen:

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

Die Ausgabe zeigt Ihnen zusätzliche Informationen wie UDP-Anforderungen und geöffnete, aber geschlossene Verbindungen.


0

ss -a4 | less

Ich gehe davon aus, dass Sie über IPv4 sprechen ... Wenn nicht, können Sie die 4 im vorhergehenden Befehl durch 6 ersetzen. Der Parameter -a zeigt alle Ports an (lauschend und nicht). Sie können den Parametern -n hinzufügen, wenn Sie keine Namen in der Anzeige auflösen möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.