Skip to content

Latest commit

 

History

History
134 lines (111 loc) · 3.86 KB

04-ss.md

File metadata and controls

134 lines (111 loc) · 3.86 KB

Comando ss

ss es una utilidad para inspeccionar sockets en Linux. Recuerda que un socket es la combinación IP:puerto. Entre otros muchos estados, un socket en nuestra máquina puede estar en estado listening, es decir, abierto a la espera de que alguien (otro socket) se conecte con él, o established, es decir, conectado a otro socket (ip:puerto), que puede ser local o remoto.

ss es un comando complejo y con muchísima funcionalidad. Lo que aquí se recoge es una guía muy rápida (quizás demasiado ...), para servir como primer contacto.

En primer lugar, veremos las principales opciones, y luego pondremos ejemplos concretos de uso.

La sintaxis del comando es:

ss [opciones] [filtros]

1. Principales opciones

Lo dicho, opciones hay millones, y por eso se recomienda consultar la documentación oficial. Sin embargo, aquí tenemos algunos de los más comunes:

  • -l: muestra sólo las conexiones que estén en estado listening, a la escucha. Es decir, te lista los server sockets que por defecto, no se muestran.
  • -a: Muestra todos los sockets: los listenings y los non-listenings.
  • -n: no resolver nombres de dominio ni puerto.
  • -p: muestra el pid del proceso asociado al socket.
  • -u: muestra sólo sockets udp.
  • -t: muestra sólo sockets tcp.
  • -4: muestra sólo sockets ipv4.
  • -6: muestra sólo sockets ipv6.

NOTA: Todas estas opciones se pueden combinar. Por ejemplo:

ss -punta

Es decir, muestra sockets:

  • junto con la información del pid del proceso asociado (p)
  • udp (u)
  • sin resolver ips ni puertos (n)
  • tcp (t)
  • listening y no-listening (a)

2. Ejemplos de consultas sencillas

  1. Listar todas las conexiones:

    ss
  2. Listar sockets que están a la escucha y los que se conectan a sockets en escucha:

    ss -a
  3. Listar sólo sockets que están a la escucha (servidores):

    ss -l
  4. Mostrar las conexiones tcp:

    ss -t
  5. Mostar conexiones tcp a la escucha:

    ss -tl
  6. Mostar todas las conexiones udp:

    ss -ua
  7. Mostrar el PID (id del proceso), del proceso asociado a las conexiones TCP:

    ss -tp

3. Ejemplos de consultas con filtros

A lo anterior, podemos añadir filtros adicionales. Por ejemplo, si queremos consultar sockets en ciertos estados, podemos usar el modificador state. Aunque un socket puede estar en muchos estados distintos, por simplificar, vamos a considerar que hay 2:

  • established: conectado con otro socket (local o remoto)
  • listening: a la escucha
  1. Conexiones TCP a la escucha:
    ss -t state listening
    o también:
    ss -tl
  2. Conexiones TCP establecidas:
    ss -t state established
    o también:
    ss -t
    

4. Uso de filtros por puerto

  1. Filtrar tráfico http saliente de nuestra máquina:

    ss '( dport = :80 )' 
  2. Filtrar tráfico http entrante o saliente de nuestra máquina:

    ss '( dport = :80 or sport = :80 )' 
  3. Conexiones http establecidas:

    ss state established '( dport = :80 or sport = :80 )' 
  4. Conexiones establecidas a servidores http y https:

    ss state established '( dport = :80 or dport = :443 )'
  5. Servidores ssh a la escucha en nuestra máquina

    ss state listening '( sport = :22 )'

5. Sockets indicando ip y puerto

En este caso, podemos usar dst ip:puerto o src ip:puerto.

  1. Conexiones tcp dirigidas al puerto 443.
    ss -nt dst :443
  2. Conexiones dirigidas a puertos https y ssh:
    ss -nt dst :443 or dst :22
  3. Conexiones de mi máquina al servidor web de todofp.es:
    ss -tn dst 212.128.114.103:80