Monitorizar una red con el comando ss

Monitorizar una red con el comando ss.

El comando ss (Socket Statistics), es una herramienta que nos muestra información sobre el socket de red en un sistema Linux.

Puedes pensar que ya tenemos la herramienta Netstat, y yo te digo que te equivocas. SS es más detallado, ademas, hace tiempo que en el manual oficial de «netstat» indica que la herramienta esta obsoleta, y que su sustituto natural es el comando ss.

En este articulo vemos como utilizar (con ejemplos) el comando ss, y mostrar información diversa sobre la conexión del socket en Linux.

En términos generales, un socket de red se define por una dirección IP, protocolo de transporte y puerto. Esta combinación constituye un lado de una conexión bidireccional. Por ejemplo, si un servidor web escucha conexiones TCP entrantes en 1.1.1.1:80, esto es el socket.

OJO!!!, el socket no es la conexión en sí, sino uno de los puntos finales de la conexión.

 

Monitorizar una red con el comando ss

La sintaxis del comando ss es bastante simple, tan solo especificas la opción, y si quieres, también filtros opcionales.

ss [options] [ FILTER ]

Listado de opciones disponibles:

Usage: ss [ OPTIONS ]
       ss [ OPTIONS ] [ FILTER ]
   -h, --help          this message
   -V, --version       output version information
   -n, --numeric       don't resolve service names
   -r, --resolve       resolve host names
   -a, --all           display all sockets
   -l, --listening     display listening sockets
   -o, --options       show timer information
   -e, --extended      show detailed socket information
   -m, --memory        show socket memory usage
   -p, --processes     show process using socket
   -i, --info          show internal TCP information
   -s, --summary       show socket usage summary
   -b, --bpf           show bpf filter socket information
   -E, --events        continually display sockets as they are destroyed
   -Z, --context       display process SELinux security contexts
   -z, --contexts      display process and socket SELinux security contexts
   -N, --net           switch to the specified network namespace name

   -4, --ipv4          display only IP version 4 sockets
   -6, --ipv6          display only IP version 6 sockets
   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets
       --vsock         display only vsock sockets
   -f, --family=FAMILY display sockets of type FAMILY
       FAMILY := {inet|inet6|link|unix|netlink|vsock|help}

   -K, --kill          forcibly close sockets, display what was closed
   -H, --no-header     Suppress header line

   -A, --query=QUERY, --socket=QUERY
       QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]

   -D, --diag=FILE     Dump raw information about TCP sockets to FILE
   -F, --filter=FILE   read filter information from FILE
       FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
       STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
         TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
          connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
       synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
             bucket := {syn-recv|time-wait}
                big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}

 

Listar todas las conexiones

Al usar el comando básico sin ninguna opción, enumera todas las conexiones, independientemente del estado en que se encuentren.

ss

ejemplo…
[root@host ~]# ss
Netid  State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
u_str  ESTAB      0      0                                     * 3140191                                             * 3140192              
u_str  ESTAB      0      0                                     * 38876                                               * 38877                
u_str  ESTAB      0      0                                     * 33985                                               * 28643                
u_str  ESTAB      0      0                                     * 29120                                               * 30725                
u_str  ESTAB      0      0                                     * 2209884                                             * 2209883              
u_str  ESTAB      0      0                                     * 38868                                               * 38867                
u_str  ESTAB      0      0           /run/systemd/journal/stdout 30725                                               * 29120                
u_str  ESTAB      0      0                                     * 3174898                                             * 3169193              
u_str  ESTAB      0      0                                     * 40389                                               * 34608                
u_str  ESTAB      0      0                                     * 31266                                               * 31265                
u_str  ESTAB      0      0       /run/containerd/containerd.sock 34608                                               * 40389                
u_str  ESTAB      0      0                                     * 38874                                               * 38873                
u_str  ESTAB      0      0                /var/run/dovecot/anvil 3140155                                             * 3145021              
u_str  ESTAB      0      0                                     * 38864                                               * 38865  
......................................

 

Listar puertos que escuchan, y que no escuchan

ss -a

ejemplo…
[root@host ~]# ss -a
Netid  State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
nl     UNCONN     0      0                                  rtnl:NetworkManager/1740                                  *                     
nl     UNCONN     768    0                                  rtnl:dockerd/2477                                         *                     
nl     UNCONN     0      0                                  rtnl:named/2443                                           *                     
nl     UNCONN     0      0                                  rtnl:kernel                                               *                     
nl     UNCONN     0      0                                  rtnl:named/2443                                           *                     
nl     UNCONN     0      0                                  rtnl:NetworkManager/1740                                  *                     
nl     UNCONN     768    0                               tcpdiag:kernel                                               *                     
nl     UNCONN     4352   0                               tcpdiag:ss/32204                                             *                     
nl     UNCONN     0      0                                  xfrm:kernel                                               *                     
nl     UNCONN     0      0                                  xfrm:dockerd/2477                                         *                     
nl     UNCONN     0      0                               selinux:kernel                                               *                     
nl     UNCONN     0      0                                 audit:auditd/1621                                          *                     
nl     UNCONN     0      0                                 audit:systemd/1                                            *                     
nl     UNCONN     0      0                                 audit:kernel                                               *                     
nl     UNCONN     0      0                             fiblookup:kernel                                               *                     
nl     UNCONN     0      0                             connector:kernel                                               *                     
nl     UNCONN     0      0                                   nft:kernel                                               *   
..................................

 

Listar sockets de escucha

ss -l

ejemplo…
[root@host ~]# ss -l
Netid  State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
nl     UNCONN     0      0                                  rtnl:NetworkManager/1740                                  *                     
nl     UNCONN     768    0                                  rtnl:dockerd/2477                                         *                     
nl     UNCONN     0      0                                  rtnl:named/2443                                           *                     
nl     UNCONN     0      0                                  rtnl:kernel                                               *                     
nl     UNCONN     0      0                                  rtnl:named/2443                                           *                     
nl     UNCONN     0      0                                  rtnl:NetworkManager/1740                                  *                     
nl     UNCONN     768    0                               tcpdiag:kernel                                               *                     
nl     UNCONN     4352   0                               tcpdiag:ss/34569                                             *                     
nl     UNCONN     0      0                                  xfrm:kernel                                               *
...............................................

 

Listar todas las conexiones TCP

ss -t

ejemplo…
[root@host ~]# ss -t
State      Recv-Q Send-Q                       Local Address:Port                                        Peer Address:Port                
ESTAB      0      0                            62.210.146.38:https                                       66.249.66.53:50779                
ESTAB      0      0                            62.210.146.38:https                                     193.178.51.161:38026                
ESTAB      0      0                            62.210.146.38:https                                     152.200.82.104:23844                
ESTAB      0      0                            62.210.146.38:imaps                                      52.125.139.39:36666                
ESTAB      0      0                            62.210.146.38:https                                    181.192.186.249:14307                
ESTAB      0      0                            62.210.146.38:https                                      189.242.217.8:45872                
ESTAB      0      0                            62.210.146.38:https                                     186.68.255.158:47164                
ESTAB      0      0                            62.210.146.38:https                                     189.174.235.92:58527                
ESTAB      0      36262                        62.210.146.38:https                                      189.131.58.18:40076                
ESTAB      0      0                            62.210.146.38:https                                       66.249.66.55:46118 
.......................

 

Listar las conexiones TCP que escuchan

ss -lt

ejemplo…
[root@host ~]# ss -lt
State      Recv-Q Send-Q                       Local Address:Port                                        Peer Address:Port                
LISTEN     0      128                              127.0.0.1:hbci                                                   *:*                    
LISTEN     0      100                                      *:smtp                                                   *:*                    
LISTEN     0      128                              127.0.0.1:rndc                                                   *:*                    
LISTEN     0      100                              127.0.0.1:12346                                                  *:*                    
LISTEN     0      128                          62.210.146.38:https                                                  *:*                    
LISTEN     0      128                                      *:pcsync-https                                           *:*                    
LISTEN     0      100                                      *:sieve                                                  *:*                    
LISTEN     0      128                              127.0.0.1:12768                                                  *:*                    
LISTEN     0      128                                      *:imaps                                                  *:*                    
LISTEN     0      128                                      *:pop3s                                                  *:*                    
LISTEN     0      128                              127.0.0.1:memcache                                               *:*
..............................................................

 

Listar todas las conexiones UDP

ss -ua

ejemplo…
[root@host ~]# ss -ua
State      Recv-Q Send-Q                       Local Address:Port                                        Peer Address:Port                
UNCONN     0      0                               172.17.0.1:domain                                                 *:*                    
UNCONN     0      0                            62.210.146.38:domain                                                 *:*                    
UNCONN     0      0                                127.0.0.1:domain                                                 *:*                    
UNCONN     0      0                                        *:sunrpc                                                 *:*                    
UNCONN     0      0                                127.0.0.1:323                                                    *:*                    
UNCONN     0      0                                        *:972                                                    *:*                    
UNCONN     0      0                                     [::]:domain                                              [::]:*                    
UNCONN     0      0                                     [::]:sunrpc                                              [::]:*                    
UNCONN     0      0                                    [::1]:323                                                 [::]:*                    
UNCONN     0      0                                     [::]:972                                                 [::]:*
...............................

 

Mostrar el PID (id de proceso) de las conexiones sockets

ss -p

ejemplo…
[root@host ~]# ss -p
Netid  State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
u_str  ESTAB      0      0                                     * 3235299                                             * 3232745               users:(("imap",pid=35425,fd=11))
u_str  ESTAB      0      0                                     * 38876                                               * 38877                 users:(("master",pid=3267,fd=28))
u_str  ESTAB      0      0                                     * 33985                                               * 28643                 users:(("imap",pid=35425,fd=1),("imap-login",pid=35424,fd=1),("imap",pid=35423,fd=1),("imap-login",pid=35419,fd=1),("stats",pid=7539,fd=1),("config",pid=2264,fd=1),("log",pid=2257,fd=2),("log",pid=2257,fd=1),("anvil",pid=2255,fd=1),("dovecot",pid=2080,fd=2),("dovecot",pid=2080,fd=1))
u_str  ESTAB      0      0                                     * 29120                                               * 30725                 users:(("NetworkManager",pid=1740,fd=2),("NetworkManager",pid=1740,fd=1))
u_str  ESTAB      0      0                                     * 2209884                                             * 2209883               users:(("nginx",pid=9157,fd=21),("nginx",pid=9156,fd=21))
....................

 

Estadísticas resumidas

Esta opción es muy interesante.

ss -s

ejemplo…
[root@host ~]# ss -s
Total: 408 (kernel 1482)
TCP:   3808 (estab 227, closed 3549, orphaned 13, synrecv 0, timewait 3547/0), ports 0

Transport Total     IP        IPv6
*	  1482      -         -        
RAW	  0         0         0        
UDP	  3         2         1        
TCP	  259       250       9        
INET	  262       252       10       
FRAG	  0         0         0

 

Ver las conexiones de socket IPv4

ss -4

ejemplo…
[root@host ~]# ss -4
Netid  State      Recv-Q Send-Q                    Local Address:Port                                     Peer Address:Port                
tcp    ESTAB      0      0                         62.210.146.38:https                                  193.178.51.161:38026                
tcp    ESTAB      0      0                         62.210.146.38:imaps                                   52.125.139.39:36666                
tcp    ESTAB      0      36                        62.210.146.38:ssh                                     37.187.78.186:61088                
tcp    ESTAB      0      0                         62.210.146.38:https                                    5.224.235.44:60412                
tcp    ESTAB      0      0                             127.0.0.1:58338                                       127.0.0.1:12768                
tcp    ESTAB      0      0                         62.210.146.38:https                                 201.178.248.215:56606                
tcp    ESTAB      0      0                         62.210.146.38:imaps                                   52.125.139.39:56630  
................

 

Ver las conexiones de socket IPv6

ss -6

 

Filtrar conexiones por puerto definido

En el ejemplo vemos el puerto 22.

ss -at '( dport = :22 or sport = :22 )'

ejemplo…
[root@host ~]# ss -at '( dport = :22 or sport = :22 )'
State      Recv-Q Send-Q                       Local Address:Port                                        Peer Address:Port                
LISTEN     0      128                                      *:ssh                                                    *:*                    
ESTAB      0      36                           62.210.146.38:ssh                                        37.187.78.186:61088                
ESTAB      0      84                           62.210.146.38:ssh                                         77.60.37.105:48554                
LISTEN     0      128                                   [::]:ssh                                                 [::]:*

Estas son las opciones más utilizadas, pero existen muchas más como puedes ver más arriba.

 

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario