ss (sockets statistics) est une commande qui permet d’afficher les sockets réseau sur un système linux. Cet outil est similaire à la commande netstat mais avec plus de détails.
Au cours de guide, nous allons voir comment la commande ss peut être utilisée pour afficher plusieurs informations de socket réseau sous Linux.
1- Afficher tous les connexions avec ss:
la commande ss sans option affiche tous les connexions quelques soient leur états :
[root@srv ~]# ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 39987 * 39988 u_str ESTAB 0 0 * 39942 * 39943 u_str ESTAB 0 0 * 39984 * 39985 u_str ESTAB 0 0 * 39985 * 39984 u_str ESTAB 0 0 * 39958 * 39957 u_str ESTAB 0 0 * 39990 * 39991 u_str ESTAB 0 0 * 39991 * 39990 u_str ESTAB 0 0 * 39988 * 39987 u_str ESTAB 0 0 * 39957 * 39958 u_str ESTAB 0 0 * 36290 * 36293 u_str ESTAB 0 0 /run/systemd/journal/stdout 22240 * 22239 u_str ESTAB 0 0 * 39933 * 39932 u_str ESTAB 0 0 * 39978 * 39979 u_str ESTAB 0 0 * 39979 * 39978 u_str ESTAB 0 0 * 39960 * 39961 u_str ESTAB 0 0 * 39976 * 39975 u_str ESTAB 0 0 * 39949 * 39948 u_str ESTAB 0 0 * 39982 * 39981 u_str ESTAB 0 0 * 22239 * 22240 u_str ESTAB 0 0 * 39948 * 39949 u_str ESTAB 0 0 * 39981 * 39982
2- Afficher les sockets en écoute ( Listening Sockets ) :
Pour afficher seulement les sockets en écoute, utilisez l’option -l :
[root@srv ~]# ss -l Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:NetworkManager/6709 * nl UNCONN 0 0 rtnl:NetworkManager/6709 * nl UNCONN 4352 0 tcpdiag:ss/8647 * nl UNCONN 768 0 tcpdiag:kernel * nl UNCONN 0 0 xfrm:kernel * nl UNCONN 0 0 selinux:kernel * nl UNCONN 0 0 selinux:systemd/1 * nl UNCONN 0 0 selinux:dbus-daemon/6600 * nl UNCONN 0 0 selinux:dbus-daemon/6600 * nl UNCONN 0 0 selinux:systemd/1 * nl UNCONN 0 0 audit:kernel * nl UNCONN 0 0 audit:systemd/1 *
3- Afficher tous les connexion TCP :
Pour n’affichier que les connexion TCP utilisez l’option -t :
[root@srv ~]# ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50870 ESTAB 0 48 192.168.162.140:ssh 192.168.162.1:50853
4- Afficher tous les connexion UDP :
Pour n’afficher que les connexions TCP utilisez l’option -u :
[root@srv ~]# ss -ua State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:bootpc *:*
5- Afficher tous les connexion UDP en écoute :
Pour afficher les connexion UDP en écoute (Listening UDP Connections) utilisez l’option -lu
[root@srv ~]# ss -lu State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:bootpc *:*
6- Afficher les PID des sockets avec ss:
Pour cela utilisez l’option –p :
[root@srv ~]# ss -p Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 39987 * 39988 users:(("master",pid=7286,fd=81)) u_str ESTAB 0 0 * 39942 * 39943 users:(("master",pid=7286,fd=36)) u_str ESTAB 0 0 * 39984 * 39985 users:(("master",pid=7286,fd=78)) u_str ESTAB 0 0 * 39985 * 39984 users:(("master",pid=7286,fd=79)) u_str ESTAB 0 0 * 39958 * 39957 users:(("master",pid=7286,fd=52)) u_str ESTAB 0 0 * 39990 * 39991 users:(("master",pid=7286,fd=84)) u_str ESTAB 0 0 * 39991 * 39990 users:(("master",pid=7286,fd=85)) u_str ESTAB 0 0 * 39988 * 39987 users:(("master",pid=7286,fd=82)) u_str ESTAB 0 0 * 39957 * 39958
Vous pouvez vous servir de la commande grep pour filtrer les résultats :
[root@srv ~]# ss -p | grep 7286 u_str ESTAB 0 0 * 39987 * 39988 users:(("master",pid=7286,fd=81)) u_str ESTAB 0 0 * 39942 * 39943 users:(("master",pid=7286,fd=36)) u_str ESTAB 0 0 * 39984 * 39985 users:(("master",pid=7286,fd=78)) u_str ESTAB 0 0 * 39985 * 39984 users:(("master",pid=7286,fd=79)) u_str ESTAB 0 0 * 39958 * 39957 users:(("master",pid=7286,fd=52)) u_str ESTAB 0 0 * 39990 * 39991 users:(("master",pid=7286,fd=84)) u_str ESTAB 0 0 * 39991 * 39990 users:(("master",pid=7286,fd=85)) u_str ESTAB 0 0 * 39988 * 39987 users:(("master",pid=7286,fd=82)) u_str ESTAB 0 0 * 39957 * 39958 users:(("master",pid=7286,fd=51))
7- Statistiques sur les sockets avec ss:
Si vous souhaitez afficher un résumé des statistiques des sockets utiliser l’option -s :
[root@srv ~]# ss -s Total: 575 (kernel 969) TCP: 10 (estab 2, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 969 - - RAW 1 0 1 UDP 1 1 0 TCP 9 4 5 INET 11 5 6 FRAG 0 0 0
8- Afficher les sockets IPv4:
Vous pouvez afficher les sockets IPv4 avec l’option -4
[root@srv ~]# ss -4 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50870 tcp ESTAB 0 48 192.168.162.140:ssh 192.168.162.1:50853
9- Afficher les sockets IPv6:
utilisez pour cela l’option -6 :
[root@srv ~]# ss -6
10- Filtrer les sockets par le nombre du port :
Vous pouvez filtrer le résultat avec le nombre du port, par exemple pour afficher tous les sockets dont le le nombre du port destination et source est celui de ssh il suffit de taper la commande suivante :
[root@srv ~]# ss -at '( dport = :22 or sport = :22 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50870 ESTAB 0 48 192.168.162.140:ssh 192.168.162.1:64462 ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:64465 ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50853 LISTEN 0 128 :::ssh :::* [root@srv ~]#
Installation d’un certificat SSL sur un serveur Nginx
ufw : comment désactiver le pare-feu sur Ubuntu
Le fonctionnement du routeur
Find : 11 Exemples pratiques pour chercher les fichiers
Fail2Ban : How to protect Linux services