Website-Suche

15 nützliche „Sockstat-Befehlsbeispiele“ zum Finden offener Ports in FreeBSD


Sockstat ist ein vielseitiges Befehlszeilenprogramm, das zum Anzeigen von Netzwerk- und System-geöffneten Sockets in FreeBSD verwendet wird. Der Befehl sockstat ist hauptsächlich standardmäßig in FreeBSD installiert und wird häufig zum Anzeigen der Namen der Prozesse verwendet, die einen bestimmten Netzwerkport auf einem FreeBSD-System geöffnet haben.

sockstat kann jedoch auch offene Sockets basierend auf der Protokollversion (beide IP-Versionen), dem Status der Verbindung und den Ports auflisten, an denen ein Daemon oder ein Programm bindet und lauscht.

Lesen Sie auch: 20 nützliche „netstat“-Befehlsbeispiele zum Überprüfen von Netzwerkverbindungen

Es kann auch prozessübergreifende Kommunikations-Sockets anzeigen, die normalerweise als Unix-Domänen-Sockets oder IPC bezeichnet werden. Der Befehl „Sockstat“ erweist sich in Kombination mit dem grep-Filter oder der Weiterleitung über das Dienstprogramm „awk“ als leistungsstarkes Tool für den lokalen Netzwerkstapel.

Es kann die Ergebnisse für eine geöffnete Verbindung basierend auf dem Benutzer, dem der Socket gehört, dem Dateideskriptor eines Netzwerk-Sockets oder der PID des Prozesses, der den Socket geöffnet hat, verkleinern.

In diesem Handbuch listen wir einige häufige, aber auch sehr leistungsstarke Anwendungsbeispiele des Befehlszeilen-Netzwerkdienstprogramms sockstat in FreeBSD auf.

Anforderungen

  1. FreeBSD 11.1 Installationshandbuch

1. Listen Sie alle geöffneten Ports in FreeBSD auf

Der Befehl sockstat wird einfach ohne Optionen oder Schalter ausgeführt und zeigt alle geöffneten Sockets in einem FreeBSD-System an, wie im folgenden Screenshot dargestellt.

sockstat

Die in der Sockstat-Ausgabe angezeigten Werte werden wie folgt beschrieben:

  • USER: Der Besitzer (Benutzerkonto) des Sockets.
  • BEFEHL: Der Befehl, der den Socket geöffnet hat.
  • PID: Die Prozess-ID des Befehls, der den Socket besitzt.
  • FD: Die Dateideskriptornummer des Sockets.
  • PROTO: Das Transportprotokoll (normalerweise TCP/UDP), das dem geöffneten Socket oder Socket-Typ bei Unix-Domänen-Sockets (Datagramm, Stream oder Seqpac) für UNIX-Sockets zugeordnet ist.
  • LOKALE ADRESSE: Stellt die lokale IP-Adresse für IP-basierte Sockets dar. Im Falle von Unix-Sockets stellt es den Namen der Endpunktdatei dar, die an den Socket angehängt ist. Der “?? Die Notation „“ impliziert, dass der Socket-Endpunkt nicht erkannt oder eingerichtet werden konnte.
  • AUSLÄNDISCHE ADRESSE: Die Remote-IP-Adresse, mit der der Socket verbunden ist.

2. Listen Sie hörende oder geöffnete Ports in FreeBSD auf

Der mit dem Flag -l ausgeführte Befehl sockstat zeigt alle im Netzwerkstapel geöffneten Listening-Sockets und alle geöffneten Unix-Domänen-Sockets oder Named Pipes an, die an einer lokalen Datenverarbeitung im System beteiligt sind.

sockstat -l

3. Listen Sie geöffnete IPv4-Ports in FreeBSD auf

Um alle geöffneten Sockets nur für das IPv4-Protokoll anzuzeigen, geben Sie den Befehl mit dem Flag -4 ein, wie im folgenden Beispiel vorgeschlagen.

sockstat -4

4. Listen Sie geöffnete IPv6-Ports in FreeBSD auf

Ähnlich wie bei der IPv4-Version können Sie auch die geöffneten Netzwerk-Sockets nur für IPv6 anzeigen, indem Sie den unten gezeigten Befehl ausführen.

sockstat -6

5. Listen Sie die geöffneten TCP- oder UDP-Ports in FreeBSD auf

Um Netzwerk-Sockets anzuzeigen, die nur auf einem bestimmten Netzwerkprotokoll wie TCP oder UDP basieren, verwenden Sie das Flag -P, gefolgt von Argumentname des Protokolls.

Die Protokollnamen können durch Überprüfen des Inhalts der Datei /etc/protocols ermittelt werden. Derzeit wird das ICMP-Protokoll vom Sockstat-Tool nicht unterstützt.

Nur TCP-Sockets anzeigen
sockstat -P tcp

Nur UDP-Sockets anzeigen
sockstat -P udp

Verketten Sie beide Protokolle.

sockstat –P tcp,udp

6. Listen Sie TCP- und UDP-spezifische Portnummern auf

Wenn Sie alle geöffneten TCP- oder UDP-IP-Sockets basierend auf der lokalen oder Remote-Portnummer anzeigen möchten, verwenden Sie die folgenden Befehlsflags und Syntax, wie im folgenden Screenshot dargestellt.

sockstat -P tcp -p 443             [Show TCP HTTPS Port]
sockstat -P udp -p 53              [Show UDP DNS Port] 
sockstat -P tcp -p 443,53,80,21    [Show Both TCP and UDP]

7. Geöffnete und verbundene Ports in FreeBSD auflisten

Um alle geöffneten und verbundenen Sockets anzuzeigen, verwenden Sie das Flag -c. Wie in den folgenden Beispielen gezeigt, können Sie alle mit HTTPS verbundenen Sockets oder alle mit TCP verbundenen Sockets auflisten, indem Sie die Befehle ausführen.

sockstat -P tcp -p 443 -c
sockstat -P tcp -c

8. Listen Sie Netzwerk-Listening-Ports in FreeBSD auf

Um alle geöffneten TCP-Sockets im Überwachungsstatus aufzulisten, hängen Sie die Flags -l und -s an, wie im folgenden Beispiel gezeigt. Da es sich um ein verbindungsloses Protokoll handelt, speichert UDP keine Informationen über den Verbindungsstatus.

Geöffnete UDP-Sockets können nicht anhand ihres Status angezeigt werden, da das UDP-Protokoll Datagramme zum Senden/Empfangen von Daten verwendet und über keinen integrierten Mechanismus zur Bestimmung des Verbindungsstatus verfügt.

sockstat -46 -l -s

9. Listen Sie Unix-Sockets und Named Pipes auf

Unix-Domänen-Sockets sowie andere Formen der lokalen Kommunikation zwischen Prozessen, wie beispielsweise benannte Pipes, können mit dem Befehl sockstat mithilfe des Flags -u angezeigt werden, wie in der folgenden Abbildung dargestellt.

sockstat -u

10. Listen Sie die von der Anwendung in FreeBSD geöffneten Ports auf

Die Ausgabe des Sockenstat-Befehls kann über das Dienstprogramm grep gefiltert werden, um eine Liste der Ports anzuzeigen, die von einer bestimmten Anwendung oder einem bestimmten Befehl geöffnet wurden.

Angenommen, Sie möchten alle Sockets auflisten, die mit dem Nginx-Webserver verknüpft sind. Sie können den folgenden Befehl ausführen, um die Aufgabe zu erfüllen.

sockstat -46 | grep nginx

Um nur die verbundenen Sockets anzuzeigen, die dem Nginx-Webserver zugeordnet sind, geben Sie den folgenden Befehl ein.

sockstat -46 -c| grep nginx

11. Listen Sie die mit HTTPS verbundenen Protokolle auf

Sie können alle verbundenen Sockets, die mit dem HTTPS-Protokoll verknüpft sind, zusammen mit dem Status jeder Verbindung auflisten, indem Sie den folgenden Befehl ausführen.

sockstat -46 -s -P TCP -p 443 -c

12. Listen Sie HTTP-Remote-Sockets auf

Um alle mit dem HTTP-Protokoll verknüpften Remote-Sockets aufzulisten, können Sie eine der folgenden Befehlskombinationen ausführen.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr
sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr

13. Finden Sie die höchsten HTTP-Anfragen nach IP-Adressen

Wenn Sie herausfinden möchten, wie viele HTTP-Verbindungen von jeder Remote-IP-Adresse angefordert werden, geben Sie den folgenden Befehl ein. Dieser Befehl kann sehr nützlich sein, wenn Sie feststellen möchten, ob Ihr Webserver einem DDOS-Angriff ausgesetzt ist. Im Verdachtsfall sollten Sie die IP-Adressen mit der höchsten Anfragerate untersuchen.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr

14. Listen Sie die geöffneten DNS-Sockets auf

Wenn Sie einen Caching- und Forward-DNS-Server an Ihrem Standort konfiguriert haben, um interne Clients über das TCP-Transportprotokoll zu bedienen, und Sie eine Liste aller Sockets anzeigen möchten
Führen Sie zusammen mit dem Status jeder Socket-Verbindung, die vom Resolver geöffnet wurde, den folgenden Befehl aus.

sockstat -46 -P tcp –p 53 -s

15. Fragen Sie TCP-DNS in der lokalen Domäne ab

Wenn im Netzwerk kein DNS-Verkehr stattfindet, können Sie manuell eine DNS-Abfrage am TCP-Socket von der Konsole des lokalen Computers auslösen, indem Sie den folgenden dig-Befehl ausführen. Geben Sie anschließend den obigen Befehl aus, um alle Resolver-Sockets aufzulisten.

dig +tcp  www.domain.com  @127.0.0.1

Das ist alles! Zusammen mit den Befehlszeilendienstprogrammen netstat und lsof ist die Befehlszeile sockstat ein leistungsstarkes Dienstprogramm zum Erfassen von Netzwerkinformationen und zur Fehlerbehebung bei mehreren Aspekten des FreeBSD-Netzwerkstapels sowie netzwerkbezogener Prozesse und Dienste.

Das Gegenstück zum FreeBSD-Sockstat-Befehl unter Linux wird durch den Befehl netstat oder neu ss dargestellt. Ob Sie es glauben oder nicht, basierend auf dem Dienstprogramm sockstat finden Sie eine ähnliche Anwendung, die für das Android-Betriebssystem entwickelt wurde und den Namen SockStat – Simple Netstat GUI trägt.