Come trovare le connessioni SSH attive su Linux

Prerequisiti
- Un server con sistema operativo Linux.
- Accesso root o privilegi sufficienti per eseguire i comandi mostrati.
Breve definizione: SSH (Secure Shell) è il protocollo usato per accedere in modo sicuro a shell remoti; sshd è il demone che ne gestisce le connessioni; /var/log/wtmp registra gli accessi.
Perché verificare le connessioni SSH
Controllare le connessioni SSH è fondamentale per la sicurezza e il troubleshooting. Permette di: rilevare accessi non autorizzati, capire chi esegue processi pesanti, tracciare attività sospette e verificare metriche di utilizzo.
Importante: se noti connessioni sospette, isola la macchina, raccogli log e segui la procedura di incident response della tua organizzazione.
Trovare connessioni SSH attive con who
who mostra gli utenti attualmente connessi.
Esegui:
who
Esempio di output:
root pts/0 2020-05-01 02:37 (27.61.161.61)
root pts/1 2020-05-01 02:39 (45.58.38.21)
Interpretazione: due sessioni aperte dai rispettivi indirizzi IP.
Trovare connessioni SSH attive con w
w mostra informazioni più dettagliate: utenti, TTY, tempo di inattività, processi attivi e load average.
Esegui:
w
Esempio di output:
02:40:07 up 1 day, 18:35, 2 users, load average: 0.02, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 27.61.161.61 02:37 1.00s 0.04s 0.01s ssh [email protected]
root pts/1 45.58.38.21 02:39 1.00s 0.02s 0.00s w
Uso pratico: utile per vedere cosa stanno eseguendo gli utenti in tempo reale.
Trovare connessioni SSH attive con ps
ps consente di trovare i processi sshd associati alle sessioni e il relativo PID.
Esegui:
ps auxwww | grep sshd: | grep -v grep
Esempio di output:
root 609 0.0 0.1 12160 7268 ? Ss Apr29 0:01 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 35532 0.0 0.2 13864 8796 ? Ss 02:37 0:00 sshd: root@pts/0
root 35669 0.0 0.2 13860 8916 ? Ss 02:38 0:00 sshd: root@pts/1
Interpretazione: il PID permette di tracciare la risorsa consumata o di terminare una sessione (con cautela).
Trovare connessioni SSH attive con netstat
netstat mostra le connessioni di rete attive e le porte.
Esegui:
netstat -tnpa | grep 'ESTABLISHED.*sshd'
Esempio di output:
tcp 0 88 45.58.38.21:22 27.61.161.61:8363 ESTABLISHED 35532/sshd: root@pt
tcp 0 0 45.58.38.21:22 45.58.38.21:51166 ESTABLISHED 35669/sshd: root@pt
Nota: su alcune distribuzioni netstat fa parte del pacchetto net-tools non installato di default; in tal caso installalo o usa ss.
Trovare connessioni SSH attive con last
last legge /var/log/wtmp e indica chi è ancora connesso.
Esegui:
last -a | grep -i still
Esempio di output:
root pts/1 Fri May 1 02:39 still logged in 45.58.38.21
root pts/0 Fri May 1 02:37 still logged in 27.61.161.61
reboot system boot Wed Apr 29 08:04 still running 5.4.0-26-generic
Uso pratico: utile per audit e per capire da quanto tempo le sessioni sono attive.
Trovare connessioni SSH attive con ss
ss è il sostituto moderno di netstat. Mostra socket, stati e statistiche.
Esegui:
ss | grep -i ssh
Esempio di output:
tcp ESTAB 0 0 45.58.38.21:51166 45.58.38.21:ssh
tcp ESTAB 0 56 45.58.38.21:ssh 27.61.161.61:8363
tcp ESTAB 0 0 45.58.38.21:ssh 45.58.38.21:51166
ss è consigliato per script e analisi perché è più veloce e fornisce filtri precisi.
Esempi rapidi e snippet di utilità
- Lista rapida di IP con sessioni SSH attive:
ss -tnp | awk '/sshd/ {print $5}' | cut -d: -f1 | sort -u
- Controllo PID e ultimo comando per una sessione (sostituisci PID):
ps -fp 35532
lsof -p 35532
- Terminare una sessione (usa con cautela):
kill -15 35532
Quando questi metodi possono fallire
- Connessioni via port forwarding o jump host possono mostrare IP del salto invece dell’IP client.
- Sessioni compensate da bastion host non mostrano il client finale sul server di destinazione.
- Se i log sono stati ruotati o cancellati, last non mostrerà informazioni complete.
Approcci alternativi
- Abilitare logging dettagliato in /etc/ssh/sshd_config con LogLevel VERBOSE per traccia più ricche.
- Usare strumenti di auditing centralizzati (rsyslog, syslog-ng, ELK/EFK) per aggregare e analizzare connessioni.
- Implementare autenticazione a due fattori o certificate-based per ridurre il rischio.
Check-list per l’amministratore
- Verificare connessioni attive almeno una volta al giorno.
- Confrontare IP con elenco di indirizzi autorizzati.
- Monitorare tentativi di accesso ripetuti (fail2ban o simili).
- Registrare PID e output in caso di attività sospette.
- Eseguire snapshot o acquisire RAM se sospetto un compromesso.
Modello mentale rapido
Pensa ai comandi come a diversi livelli di dettaglio: who/w = chi; ps = processo; ss/netstat = rete; last = storico.
Sicurezza e privacy
- Limita l’accesso SSH con firewall, allowlist IP o VPN.
- Registra i log su server separato per evitare manomissioni.
- Assicurati che la raccolta e la conservazione dei log rispettino la normativa locale sulla privacy.
Glossario in una riga
- SSH: protocollo per accesso remoto sicuro. sshd: demone SSH. wtmp: file binario che registra login/logout.
Conclusione
Questi comandi ti permettono di vedere rapidamente chi è connesso al server e da dove. Usa una combinazione di strumenti per ottenere visibilità completa: who/w per controllo veloce, ps per indagare processi, ss/netstat per dettagli di rete e last per lo storico.
Importante: integra questi comandi in procedure operative (SOP) e sistemi di logging centralizzati per migliorare la rilevazione e la risposta agli incidenti.
Sommario:
- Controlla connessioni regolarmente.
- Usa più comandi per confermare informazioni.
- Automatizza notifiche per connessioni anomale.
Nota: evita di terminare sessioni senza aver identificato chiaramente la causa; potresti interrompere lavoro legittimo.