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.
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.
# 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.
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.
Ein weiteres Tool, das dies tun kann, ist
lsof
: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 anzuzeigenlsof
hat den Vorteil, dass Sie den zu überprüfenden Prozess angeben können, anstatt ihn aus einer größeren Ausgabe herausgreifen zu müssen.netstat
ist auf Systemen zuverlässiger verfügbar,lsof
wird jedoch immer mehr zum Standard als früher.quelle
strace
@olivecoder vorgeschlagene Lösung ausprobieren.ss
Dienstprogramm aus dem iproute- Paket für Linuxquelle
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:Die Ausgabe zeigt Ihnen zusätzliche Informationen wie UDP-Anforderungen und geöffnete, aber geschlossene Verbindungen.
quelle
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.
quelle