Zoeken op website

15 Handige 'Sockstat Commandovoorbeelden' om open poorten in FreeBSD te vinden


Sockstat is een veelzijdig opdrachtregelhulpprogramma dat wordt gebruikt voor het weergeven van netwerk- en systeemgeopende sockets in FreeBSD. Hoofdzakelijk wordt de opdracht Socksstat standaard geïnstalleerd in FreeBSD en wordt deze vaak gebruikt voor het weergeven van de naam van de processen die een bepaalde netwerkpoort op een FreeBSD-systeem hebben geopend.

sockstat kan echter ook open sockets weergeven op basis van de protocolversie (beide IP-versies), de status van de verbinding en op welke poorten een daemon of een programma bindt en luistert.

Lees ook: 20 nuttige ‘netstat’-opdrachtvoorbeelden om netwerkverbindingen te controleren

Het kan ook communicatie-sockets tussen processen weergeven, doorgaans bekend als Unix-domeinsockets of IPC. De Socksstat-opdracht in combinatie met een grep-filter of via een awk-hulpprogramma blijkt een krachtig hulpmiddel te zijn voor de lokale netwerkstack.

Het kan de resultaten voor een geopende verbinding verkleinen op basis van de gebruiker die eigenaar is van de socket, de bestandsbeschrijving van een netwerksocket of de PID van het proces dat de socket heeft geopend.

In deze handleiding geven we een aantal veelvoorkomende gebruiksvoorbeelden, maar ook zeer krachtige, van het commandoregelnetwerkhulpprogramma sokstat in FreeBSD.

Vereisten

  1. FreeBSD 11.1 Installatiehandleiding

1. Maak een lijst van alle geopende poorten in FreeBSD

Het commando sokstat wordt eenvoudigweg uitgevoerd zonder opties of schakelaars en geeft alle geopende sockets in een FreeBSD-systeem weer, zoals geïllustreerd in de onderstaande schermafbeelding.

sockstat

De waarden die worden weergegeven in de sokstat-uitvoer worden als volgt beschreven:

  • USER: de eigenaar (gebruikersaccount) van de socket.
  • COMMAND: het commando waarmee de socket wordt geopend.
  • PID: de proces-ID van de opdracht die eigenaar is van de socket.
  • FD : Het bestandsdescriptornummer van de socket.
  • PROTO: het transportprotocol (meestal TCP/UDP) dat is gekoppeld aan de geopende socket of het sockettype in het geval van Unix-domeinsockets (datagram, stream of seqpac) voor UNIX-sockets.
  • LOKAAL ADRES: dit vertegenwoordigt het lokale IP-adres voor op IP gebaseerde sockets. In het geval van Unix-sockets vertegenwoordigt dit de bestandsnaam van het eindpunt die aan de socket is gekoppeld. De “?? ” notatie impliceert dat het socket-eindpunt niet kon worden herkend of tot stand gebracht.
  • BUITENLANDS ADRES: het externe IP-adres waarmee de socket is verbonden.

2. Maak een lijst van luisterende of geopende poorten in FreeBSD

Uitgevoerd met de vlag -l, zal het commando sokstat alle luistersockets weergeven die zijn geopend in de netwerkstack en alle geopende Unix-domeinsockets of benoemde pijpen die betrokken zijn bij een of andere vorm van lokale gegevensverwerking in het systeem.

sockstat -l

3. Geef een overzicht van de geopende IPv4-poorten in FreeBSD

Om alle geopende sockets alleen voor het IPv4-protocol weer te geven, geeft u de opdracht op met de vlag -4, zoals voorgesteld in het onderstaande voorbeeld.

sockstat -4

4. Geef een overzicht van de geopende IPv6-poorten in FreeBSD

Net als bij de IPv4-versie kunt u ook de geopende netwerksockets alleen voor IPv6 weergeven door de onderstaande opdracht te geven.

sockstat -6

5. Maak een lijst van geopende TCP- of UDP-poorten in FreeBSD

Om netwerksockets alleen weer te geven op basis van een gespecificeerd netwerkprotocol, zoals TCP of UDP, gebruikt u de vlag -P, gevolgd door de argumentnaam van het protocol.

De protocolnamen kunt u vinden door de inhoud van het bestand /etc/protocols te inspecteren. Momenteel wordt het ICMP-protocol niet ondersteund door de Socksstat-tool.

Toon alleen TCP-sockets
sockstat -P tcp

Toon alleen UDP-sockets
sockstat -P udp

Koppel beide protocollen aan elkaar.

sockstat –P tcp,udp

6. Maak een lijst van TCP- en UDP-specifieke poortnummers

Als u alle TCP- of UDP IP-geopende sockets wilt weergeven, gebaseerd op het lokale of externe poortnummer, gebruikt u de onderstaande opdrachtvlaggen en syntaxis, zoals geïllustreerd in de onderstaande schermafbeelding.

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. Maak een lijst van geopende en verbonden poorten in FreeBSD

Om alle geopende en aangesloten sockets weer te geven, gebruikt u de vlag -c. Zoals u in de onderstaande voorbeelden kunt zien, kunt u alle met HTTPS verbonden sockets of alle met TCP verbonden sockets weergeven door de opdrachten te geven.

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

8. Maak een lijst van netwerkluisterpoorten in FreeBSD

Om alle geopende TCP-sockets in luisterstatus weer te geven, voegt u de vlaggen -l en -s toe, zoals weergegeven in het onderstaande voorbeeld. Omdat het een verbindingsloos protocol is, houdt UDP geen informatie bij over de status van de verbinding.

UDP-geopende sockets kunnen niet worden weergegeven op basis van hun status, omdat het udp-protocol datagrammen gebruikt om gegevens te verzenden/ontvangen en geen ingebouwd mechanisme heeft om de status van de verbinding te bepalen.

sockstat -46 -l -s

9. Maak een lijst van Unix-sockets en Named Pipes

Unix-domeinsockets, evenals andere vormen van lokale communicatie tussen processen, zoals Named Pipes, kunnen worden weergegeven met het commando Socksstat door de vlag -u te gebruiken, zoals weergegeven in de onderstaande afbeelding.

sockstat -u

10. Geef een overzicht van de poorten die per toepassing in FreeBSD zijn geopend

De uitvoer van Socksstat-opdrachten kan worden gefilterd via het grep-hulpprogramma om een lijst met poorten weer te geven die zijn geopend door een specifieke toepassing of opdracht.

Stel dat u alle sockets wilt weergeven die zijn gekoppeld aan de Nginx-webserver, dan kunt u de volgende opdracht geven om de taak te voltooien.

sockstat -46 | grep nginx

Om alleen de aangesloten sockets weer te geven die zijn gekoppeld aan de Nginx-webserver, geeft u de volgende opdracht op.

sockstat -46 -c| grep nginx

11. Lijst met HTTPS-verbonden protocollen

U kunt alle aangesloten sockets weergeven die zijn gekoppeld aan het HTTPS-protocol, naast de status van elke verbinding, door de onderstaande opdracht uit te voeren.

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

12. Maak een lijst van HTTP Remote Sockets

Om alle externe sockets weer te geven die aan het HTTP-protocol zijn gekoppeld, kunt u een van de volgende opdrachtcombinaties uitvoeren.

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. Vind de hoogste HTTP-verzoeken op basis van IP-adressen

Als u wilt weten hoeveel HTTP-verbindingen er door elk extern IP-adres worden aangevraagd, voert u de onderstaande opdracht uit. Deze opdracht kan erg handig zijn als u wilt bepalen of uw webserver een DDOS-aanval heeft ondergaan. Bij vermoedens dient u de IP-adressen met het hoogste verzoekpercentage te onderzoeken.

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

14. Lijst met DNS-geopende sockets

Als u bij u op locatie een caching- en forward DNS-server hebt geconfigureerd om interne clients te bedienen via het TCP-transportprotocol en u een lijst met alle sockets wilt weergeven
geopend door de solver, samen met de status van elke socketverbinding, voert u de volgende opdracht uit.

sockstat -46 -P tcp –p 53 -s

15. Vraag TCP DNS op lokaal domein

Als er geen DNS-verkeer op het netwerk is, kunt u handmatig een DNS-query op de TCP-socket activeren vanaf de console van de lokale machine door de volgende opdracht dig uit te voeren. Voer daarna het bovenstaande commando uit om alle solver-sockets weer te geven.

dig +tcp  www.domain.com  @127.0.0.1

Dat is alles! Samen met de opdrachtregelhulpprogramma's netstat en lsof is de opdrachtregel van sokkenstat een krachtig hulpprogramma dat wordt gebruikt voor het verkrijgen van netwerkinformatie en het oplossen van meerdere aspecten van de FreeBSD-netwerkstack en netwerkgerelateerde processen en diensten.

De tegenhanger van het FreeBSD-sockstat-commando in Linux wordt vertegenwoordigd door het netstat of het nieuwe ss commando. Geloof het of niet, op basis van het sokkenstat-hulpprogramma kun je een vergelijkbare applicatie vinden die is ontwikkeld voor Android OS, genaamd SockStat – Simple Netstat GUI.