Website-Suche

15 nützliche 'sockstat Befehlsbeispiele' zum Auffinden offener Ports in FreeBSD


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

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

Lesen Sie auch: 20 nützliche Beispiele für 'netstat'-Befehle zum Überprüfen von Netzwerkverbindungen

Es kann auch Interprozess-Kommunikations-Sockets anzeigen, die in der Regel als Unix-Domain-Sockets oder IPC bezeichnet werden. Der Befehl sockstat in Kombination mit dem grep-Filter oder dem über das awk-Dienstprogramm piped erweist sich als leistungsstarkes Werkzeug für den lokalen Netzwerk-Stack.

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 dieser Anleitung listen wir einige gängige, aber auch sehr leistungsfähige Anwendungsbeispiele für das Netzwerkprogramm sockstat in FreeBSD auf.

Anforderungen

  1. FreeBSD 11.1 Installationsanleitung

1. Alle geöffneten Ports in FreeBSD auflisten

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 Werte, die in der sockstat-Ausgabe angezeigt werden, werden wie folgt beschrieben:

  • USER : Der Besitzer (Benutzerkonto) des Sockets.
  • COMMAND : Der Befehl, mit dem der Socket geöffnet wurde.
  • PID : Die Prozess-ID des Befehls, dem der Socket gehört.
  • FD : Die Dateideskriptornummer des Sockets.
  • PROTO : Das Transportprotokoll (in der Regel TCP/UDP), das dem geöffneten Socket oder dem Socket-Typ im Falle von Unix-Domain-Sockets (Datagramm, Stream oder Seqpac) für UNIX-Sockets zugeordnet ist.
  • LOKALE ADRESSE : Sie stellt die lokale IP-Adresse für IP-basierte Sockets dar. Im Falle von Unix-Sockets stellt es den Dateinamen des Endpunkts dar, der an den Socket angehängt ist. Die Notation "??" impliziert, dass der Socketendpunkt nicht erkannt oder eingerichtet werden konnte.
  • FOREIGN ADDRESS : Die Remote-IP-Adresse, mit der die Steckdose verbunden ist.

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

Der Befehl sockstat wird mit dem Flag -l ausgeführt und zeigt alle im Netzwerkstapel geöffneten Listening-Sockets sowie alle geöffneten Unix-Domain-Sockets oder Named Pipes an, die an einer Art lokaler Datenverarbeitung im System beteiligt sind.

# sockstat -l

3. Offene IPv4-Ports in FreeBSD auflisten

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. Offene IPv6-Ports in FreeBSD auflisten

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

# sockstat -6

5. Offene TCP- oder UDP-Ports in FreeBSD auflisten

Um Netzwerk-Sockets anzuzeigen, die nur auf einem bestimmten Netzwerkprotokoll basieren, z. B. TCP oder UDP, verwenden Sie das Flag -P, gefolgt vom Argumentnamen des Protokolls.

Die Protokollnamen können gefunden werden, indem Sie den Inhalt der Datei /etc/protocols überprüfen. Derzeit wird das ICMP-Protokoll vom Tool sockstat 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 die 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. Offene und verbundene Ports in FreeBSD auflisten

Um alle geöffneten und angeschlossenen Steckdosen 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 ausgeben.

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

8. Auflisten von Netzwerk-Listening-Ports in FreeBSD

Um alle geöffneten TCP-Sockets im Überwachungszustand aufzulisten, fügen 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 Status der Verbindung.

Mit UDP geöffnete 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 verfügt, um den Status der Verbindung zu bestimmen.

# sockstat -46 -l -s

9. Auflisten von Unix-Sockets und Named Pipes

Unix-Domain-Sockets sowie andere Formen der lokalen Interprozesskommunikation, wie z. B. Named Pipes, können mit dem Befehl sockstat mithilfe des Flags -u angezeigt werden, wie in der folgenden Abbildung gezeigt.

# sockstat -u

10. Liste der Ports, die von der Anwendung in FreeBSD geöffnet wurden

Die Ausgabe des Befehls sockstat 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 dem Nginx-Webserver zugeordnet sind, können Sie 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 mit HTTPS verbundene Protokolle auf

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

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

12. HTTP-Remote-Sockets auflisten

Um alle Remote-Sockets aufzulisten, die dem HTTP-Protokoll zugeordnet sind, 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 einer Art DDOS-Angriff ausgesetzt ist. Bei Verdacht sollten Sie die IP-Adressen mit der höchsten Anforderungsrate untersuchen.

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

14. Offene DNS-Sockets auflisten

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

# sockstat -46 -P tcp –p 53 -s

15. TCP-DNS in der lokalen Domäne abfragen

Wenn kein DNS-Datenverkehr im Netzwerk vorhanden ist, können Sie manuell eine DNS-Abfrage auf dem TCP-Socket über die Konsole des lokalen Computers auslösen, indem Sie den folgenden dig-Befehl ausführen. Geben Sie anschließend den obigen Befehl ein, 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, mit dem Netzwerkinformationen abgerufen und verschiedene Aspekte des FreeBSD-Netzwerkstacks und der netzwerkbezogenen Prozesse und Dienste behoben werden können.

Das Gegenstück zum FreeBSD-Befehl sockstat in Linux wird durch den Befehl netstat oder newly ss dargestellt. Ob Sie es glauben oder nicht, basierend auf dem Dienstprogramm sockstat finden Sie eine ähnliche Anwendung, die für Android OS entwickelt wurde, namens SockStat – Simple Netstat GUI.

Verwandte Artikel: