Recherche de site Web

15 exemples utiles de 'commandes sockstat' pour trouver des ports ouverts dans FreeBSD


Sockstat est un utilitaire de ligne de commande polyvalent utilisé pour afficher les sockets ouverts sur le réseau et le système dans FreeBSD. Principalement, la commande sockstat est installée par défaut dans FreeBSD et elle est couramment utilisée pour afficher le nom des processus qui ont ouvert un certain port réseau sur un système FreeBSD.

Cependant, sockstat peut également lister les sockets ouverts en fonction de la version du protocole (les deux versions IP), de l’état de la connexion et des ports qu’un démon ou un programme lie et écoute.

Lire aussi : 20 exemples utiles de commandes 'netstat' pour vérifier les connexions réseau

Il peut également afficher des sockets de communication inter-processus, généralement appelés sockets de domaine Unix ou IPC. La commande Sockstat combinée au filtre grep ou redirigée via l’utilitaire awk s’avère être un outil puissant pour la pile de réseau local.

Il peut réduire les résultats d’une connexion ouverte en fonction de l’utilisateur qui possède le socket, du descripteur de fichier d’un socket réseau ou du PID du processus qui a ouvert le socket.

Dans ce guide, nous allons énumérer quelques exemples d’utilisation courants, mais aussi très puissants, de l’utilitaire de réseau en ligne de commande sockstat dans FreeBSD.

Exigences

  1. Guide d’installation de FreeBSD 11.1

1. Lister tous les ports ouverts dans FreeBSD

Simplement exécutée sans aucune option ni commutateur, la commande sockstat affichera tous les sockets ouverts dans un système FreeBSD, comme illustré dans la capture d’écran ci-dessous.

# sockstat

Les valeurs affichées dans la sortie de sockstat sont décrites comme suit :

  • UTILISATEUR : Le propriétaire (compte utilisateur) de la socket.
  • COMMANDE : La commande qui a ouvert la prise.
  • PID : L’ID de processus de la commande propriétaire du socket.
  • FD : Le numéro de descripteur de fichier de la socket.
  • PROTO : Le protocole de transport (généralement TCP/UDP) associé au socket ouvert ou au type de socket dans le cas de sockets de domaine unix (datagram, stream ou seqpac) pour les sockets UNIX.
  • ADRESSE LOCALE : Elle représente l’adresse IP locale pour les sockets basés sur IP. Dans le cas des sockets Unix, il représente le nom de fichier du point de terminaison attaché au socket. La notation « ?? » implique que le point final du socket n’a pas pu être reconnu ou établi.
  • FOREIGN ADDRESS : L’adresse IP distante à laquelle la prise est connectée.

2. Liste des ports d’écoute ou ouverts dans FreeBSD

Exécutée avec l’indicateur -l, la commande sockstat affichera toutes les sockets d’écoute ouvertes dans la pile réseau et toutes les sockets de domaine unix ouvertes ou les canaux nommés impliqués dans une sorte de traitement de données locales dans le système.

# sockstat -l

3. Liste des ports IPv4 ouverts dans FreeBSD

Pour afficher tous les sockets ouverts pour le protocole IPv4 uniquement, exécutez la commande avec l’indicateur -4, comme suggéré dans l’exemple ci-dessous.

# sockstat -4

4. Liste des ports IPv6 ouverts dans FreeBSD

Semblable à la version IPv4, vous pouvez également afficher les sockets réseau ouverts pour IPv6 uniquement, en exécutant la commande comme indiqué ci-dessous.

# sockstat -6

5. Liste des ports TCP ou UDP ouverts dans FreeBSD

Pour afficher les sockets réseau basés uniquement sur un protocole réseau spécifié, tel que TCP ou UDP, utilisez l’indicateur -P, suivi de l’argument name du protocole.

Les noms de protocole peuvent être trouvés en inspectant le contenu du fichier /etc/protocols. Actuellement, le protocole ICMP n’est pas pris en charge par l’outil sockstat.

Afficher uniquement les sockets TCP
# sockstat -P tcp

Afficher uniquement les sockets UDP
# sockstat -P udp

Enchaînez les deux protocoles.

# sockstat –P tcp,udp

6. Répertorier les numéros de port spécifiques TCP et UDP

Si vous souhaitez afficher tous les sockets ouverts d’adresse IP TCP ou UDP, en fonction du numéro de port local ou distant, utilisez les indicateurs de commande et la syntaxe ci-dessous, comme illustré dans la capture d’écran ci-dessous.

# 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. Liste des ports ouverts et connectés dans FreeBSD

Pour afficher toutes les prises ouvertes et connectées, utilisez l’indicateur -c. Comme indiqué dans les exemples ci-dessous, vous pouvez répertorier tous les sockets connectés HTTPS ou tous les sockets connectés TCP en exécutant les commandes.

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

8. Liste des ports d’écoute réseau dans FreeBSD

Pour répertorier tous les sockets TCP ouverts en état d’écoute, ajoutez les indicateurs -l et -s, comme indiqué dans l’exemple ci-dessous. Étant un protocole sans connexion, UDP ne conserve aucune information sur l’état de la connexion.

Les sockets UDP ouverts ne peuvent pas être affichés à l’aide de leur état, car le protocole udp utilise des datagrammes pour envoyer/recevoir des données et ne dispose d’aucun mécanisme intégré pour déterminer l’état de la connexion.

# sockstat -46 -l -s

9. Liste des sockets Unix et des pipes nommés

Les sockets de domaine Unix, ainsi que d’autres formes de communication inter-processus locales, telles que les tubes nommés, peuvent être affichés par la commande sockstat à l’aide de l’indicateur -u, comme illustré dans l’image ci-dessous.

# sockstat -u

10. Liste des ports ouverts par l’application dans FreeBSD

La sortie de la commande Sockstat peut être filtrée via l’utilitaire grep afin d’afficher une liste des ports ouverts par une application ou une commande spécifique.

Supposons que vous souhaitiez répertorier tous les sockets associés au serveur Web Nginx, vous pouvez exécuter la commande suivante pour accomplir la tâche.

# sockstat -46 | grep nginx

Pour afficher uniquement les sockets connectés associés au serveur Web Nginx, exécutez la commande suivante.

# sockstat -46 -c| grep nginx

11. Répertorier les protocoles connectés HTTPS

Vous pouvez répertorier tous les sockets connectés associés au protocole HTTPS avec l’état de chaque connexion en exécutant la commande ci-dessous.

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

12. Répertorier les sockets distants HTTP

Pour répertorier tous les sockets distants associés au protocole HTTP, vous pouvez exécuter l’une des combinaisons de commandes suivantes.

# 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. Trouvez les requêtes HTTP les plus élevées par adresse IP

Si vous souhaitez savoir combien de connexions HTTP sont demandées par chaque adresse IP distante, exécutez la commande ci-dessous. Cette commande peut être très utile si vous souhaitez déterminer si votre serveur Web subit une sorte d’attaque DDOS. En cas de soupçon, vous devez enquêter sur les adresses IP ayant le taux de requêtes le plus élevé.

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

14. Liste des sockets DNS ouverts

Si vous avez configuré un serveur DNS de mise en cache et de transfert dans vos locaux pour servir les clients internes via le protocole de transport TCP et que vous souhaitez afficher la liste de tous les sockets
ouverts par le résolveur, ainsi que l’état de chaque connexion de socket, exécutez la commande suivante.

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

15. Interroger le DNS TCP sur le domaine local

S’il n’y a pas de trafic DNS sur le réseau, vous pouvez déclencher manuellement une requête DNS sur le socket TCP à partir de la console de la machine locale en exécutant la commande dig suivante. Ensuite, exécutez la commande ci-dessus pour répertorier tous les sockets du résolveur.

# dig +tcp  www.domain.com  @127.0.0.1

C’est tout! Avec les utilitaires de ligne de commande netstat et lsof, la ligne de commande sockstat est un utilitaire puissant utilisé pour acquérir des informations sur le réseau et dépanner plusieurs aspects de la pile réseau FreeBSD et des processus et services liés au réseau.

L’équivalent de la commande sockstat de FreeBSD sous Linux est représenté par la commande netstat ou la commande newly ss. Croyez-le ou non, sur la base de l’utilitaire sockstat, vous pouvez trouver une application similaire développée pour le système d’exploitation Android, nommée SockStat - Simple Netstat GUI.

Articles connexes: