Cosa fa#
Mostra lo stato di tutti i socket di rete del sistema — porte in ascolto, connessioni attive, socket Unix. Sostituisce netstat che e' deprecato sui sistemi Linux moderni. Legge direttamente dal kernel via Netlink — piu' veloce e accurato di netstat che parsava /proc.
"Chi sta parlando con chi?" Ottimo quando vuoi il quadro completo delle connessioni attive senza sapere cosa cercare.
Sintassi#
ss [opzioni]
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
ss -tuln | -t -u -l -n | tcp+udp+listen+numeric | Porte TCP e UDP in ascolto, numeri invece di nomi |
ss -tlnp | -t -l -n -p | tcp+listen+numeric+process | TCP in ascolto con il processo che le usa |
ss -an | -a -n | all+numeric | Tutti i socket, porte numeriche |
ss -tn | -t -n | tcp+numeric | Solo connessioni TCP attive |
ss -s | -s | summary | Statistiche aggregate sui socket |
ss -o | -o | options | Mostra timer TCP (keepalive, retransmit) |
ss -4 | -4 | IPv4 | Solo socket IPv4 |
ss -6 | -6 | IPv6 | Solo socket IPv6 |
Flag principali da combinare#
-t → TCP
-u → UDP
-l → solo LISTEN (in ascolto)
-a → tutti (LISTEN + ESTABLISHED + altro)
-n → numerico — porta 22 invece di "ssh"
-p → mostra il processo (richiede sudo per processi altrui)Leggere l'output#
sudo ss -tlnp
# State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
# LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234))
# LISTEN 0 128 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=5678))
# ^ ^ ^
# stato chi ascolta:porta chi puo' connettersi0.0.0.0:22 → ascolta su tutte le interfacce, porta 22 — raggiungibile dall'esterno
127.0.0.1:631 → ascolta solo su localhost — non raggiungibile dall'esterno
:::22 → IPv6 equivalente di 0.0.0.0netstat vs ss#
netstat (deprecato) ss (moderno)
─────────────────── ────────────────────────────
parsava /proc/net/ legge direttamente dal kernel
piu' lento molto piu' veloce
stesso output output piu' ricco
da non usare standard su Linux modernoEquivalenze:
netstat -tuln → ss -tuln
netstat -an → ss -an
netstat -tulnp → sudo ss -tlnpss vs nc#
ss -tlnp vs nc -zv host 1-100:
ss -tlnp nc -zv host 1-100
────────────────────────── ──────────────────────────────
guarda DENTRO la macchina guarda dall'ESTERNO verso un host
mostra cosa ascolta localmente testa se le porte sono aperte
legge dal kernel — istantaneo manda pacchetti TCP reali
nessun traffico di rete genera traffico di rete
incident response locale port scan / verifica connettivitàIn pratica: ss è lo specchio interno, nc -zv è il test esterno. Su un server sospetto usi ss per vedere cosa gira. Da Kali verso Ubuntu usi nc -zv per vedere cosa è raggiungibile dall'esterno.
Combinazioni utili#
# Incident response — panoramica immediata
sudo ss -tlnp # chi ascolta?
sudo ss -tn | grep ESTABLISHED # chi e' connesso adesso?
# Trova un processo per porta
sudo ss -tlnp | grep :8080
# Connessioni verso l'esterno (esclude localhost)
ss -tn | grep ESTABLISHED | grep -v "127.0.0"
# Conta le connessioni per stato
ss -s
# Vedi i timer TCP di una connessione
ss -o state established
# Socket Unix (comunicazione locale tra processi)
ss -xlScenario Reale#
# Incident response — processo sospetto apre una porta
sudo ss -tlnp
# LISTEN 0 128 0.0.0.0:4444 0.0.0.0:* users:(("nc",pid=9876))
# ^
# porta 4444 — classica reverse shell netcat
# Connessioni verso IP esterni insoliti
ss -tn | grep ESTABLISHED
# ESTAB 0 0 192.168.64.3:54231 45.33.x.x:443
# ^
# IP esterno sconosciuto su porta 443
# Verifica con lsof chi ha aperto quella connessione
sudo lsof -i :54231sudo ss -tlnp e' il primo comando in qualsiasi incident response sulla rete — ti da' immediatamente la mappa di tutte le porte aperte e quale processo le usa.
Senza sudo, -p mostra solo i processi del tuo utente. Con sudo vedi tutti i processi di sistema. Quasi sempre serve sudo per l'analisi forense.
Dove l'ho usato#
- Lab Ubuntu — verifica porte aperte dopo configurazione SSH
Note personali#
Se vedi una porta in ascolto che non riconosci, non fermarti a ss — usa sudo lsof -p PID per vedere tutti i file e le connessioni di quel processo, e ps -p PID -o pid,user,etime,cmd per capire da quanto gira.
Collegato a#
- system — categoria
- lsof — alternativa con piu' dettagli sui file aperti
- ip — mostra le interfacce, ss mostra le connessioni su quelle interfacce
- linux-processes — ss collega porte a PID


