administration et sécurite des réseaux informatiques

administration et sécurite des réseaux informatiques technicien supérieur de compétence.

mardi 11 juillet 2017

Les connexions sockets avec la commande ss

II. Liste les connexions

La commande basique consiste à énumérer toutes les connexions présentent sur un système :
# ss|less
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 @/tmp/dbus-VvJjz9EBBc 526779 * 526778
u_str ESTAB 0 0 * 14801853 * 14801854
u_str ESTAB 37 0 * 529524 * 529525
u_str ESTAB 0 0 * 21235 * 21236
u_str ESTAB 0 0 * 529511 * 529512
u_str ESTAB 0 0 * 526668 * 526667
u_str ESTAB 0 0 * 14801854 * 14801853
u_str ESTAB 0 0 * 529071 * 529673
u_str ESTAB 0 0 * 22474 * 22978
u_str ESTAB 0 0 @/tmp/.X11-unix/X0 526800 * 526799
u_str ESTAB 0 0 /run/systemd/journal/stdout 20563 * 20562
De ce premier résultat, on peut toujours filtrer la sortie pour ne récupérer que les lignes concernant les échanges TCP, UDP ainsi que les sockets Unix. Pour ne visualiser que les connexions TCP, UDP ou les connexions de type sockets, on doit filtrer de la façon suivante :
# ss –t
REMARQUE : on peut aussi utiliser la commande équivalente ci-dessous, qui revient strictement au même :
# ss –A tcp

III. Types de connexions

Par défaut, l’option –t affiche uniquement les connexions qui sont de type établies (c’est-à-dire avec l’appellation "ESTABLISHED") ou connectées (avec l’étiquette "CONNECTED"). On évite ainsi toutes les connexions à l’écoute (étiquetées "LISTENING"). Le fait d’ajouter également l’option –a permet aussi de récupérer les connexions à l’écoute.
De la même façon, pour lister les échanges non connectés (c’est-à-dire les sessions UDP), on exécutera la commande suivante :
# ss –ua
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:37211 *:*
UNCONN 0 0 *:884 *:*
UNCONN 0 0 *:1014 *:*
UNCONN 0 0 127.0.0.1:1019 *:*
UNCONN 0 0 *:mdns *:*
UNCONN 0 0 *:44306 *:*
UNCONN 0 0 *:34239 *:*
UNCONN 0 0 192.168.122.1:domain *:*
IMPORTANT : l’option –a permet d’afficher à la fois les sockets "CONNECTING" et "LISTENING". Comme le protocole UDP est un protocole sans connexion, la commande ss –u, seule ne remontera aucune ligne, dans bien des cas. Par contre, le fait de lui adjoindre l’option –a permet d’afficher toutes les connexions UDP.
Si l’on ne souhaite que les sockets de type Unix, il faut exécuter la commande suivante :
# ss –x[a]
Ici, -a est optionnelle et affichera le même résultat avec ou sans l’option. On peut également éviter de résoudre les noms de machines et n’afficher que les adresses IP :
# ss –nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 64 10.97.3.198:22 10.24.10.2:55214
Pour lister les sockets TCP à l’écoute :
# ss -ltn
Pour lister les sockets UDP à l’écoute :
# ss –lun

IV. Nom de processus et pid

De la même façon, on peut également récupérer le nom du processus (ainsi que son PID associé) en exécutant la commande suivante :
# ss –ltp
…
users:(("rpcbind",pid=720,fd=4),("systemd",pid=1,fd=78)) LISTEN 0 128 :::us-cli :::* users:(("httpd",pid=24053,fd=4),("httpd",pid=20059,fd=4),("httpd",pid=20058,fd=4),("httpd",pid=20057,fd=4),("httpd",pid=20056,fd=4),("httpd",pid=20055,fd=4))
LISTEN 0 128 :::ssh :::*
…
On peut d’ailleurs disposer de statistiques précises concernant le nombre de sockets de chaque catégorie :
# ss –s
Total: 622 (kernel 646)
TCP: 22 (estab 1, closed 6, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 646 - -
RAW 0 0 0
UDP 23 15 8
TCP 16 10 6
INET 39 25 14
FRAG 0 0 0
On peut également faire afficher les différentes informations inhérentes à chaque socket en utilisant l’option –o :
# ss –nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 64 10.97.3.198:22 10.24.10.2:55214 timer :(on,418ms,0)

V. Affichage des connexions IPv4 et IPv6

Si l’on souhaite afficher les sockets uniquement de type IPv4, on peut le faire au travers de la commande :
# ss –tl –f inet
REMARQUE : à contrario, si l’on souhaite n’afficher que le sockets de type IPv6 on peut le faire en utilisant l’une des commandes ci-dessous :
# ss –tl6
# ss –tl –f inet6

VI. Filtrage des connexions

La commande ss supporte également un mode étendu autorisant le filtrage et l’affichage d’une catégorie spécifique de sockets. Les expressions permettant le filtrage doivent être de la forme suivante :
# ss [Option] [Etat] [Adresse]
Exemple : pour filtrer les connexions TCP IPv4 en mode "ESTABLISHED" :
# ss –t4 state established
Les différents états que l’on peut utiliser comme filtre sont les suivants :
  • established
  • syn-sent
  • syn-recv
  • fin-wait-1
  • fin-wait-2
  • time-wait
  • closed
  • close-wait
  • last-ack
  • closing
  • all (tous ceux présent ci-dessus)
  • connected
  • synchronized
  • bucket (mini socket : time-wait et syn-recv)
  • big (opposé à bucket)

Aucun commentaire:

Enregistrer un commentaire