Buongiorno a tutti e ben tornarti su un nuovo articolo di tooldech! Oggi parliamo di Hardening!
Quando si mette online un server Linux, che sia su un cloud provider come AWS, un VPS o una macchina in casa, la sicurezza è fondamentale. Il “hardening” è il processo di messa in sicurezza del sistema operativo riducendo le superfici di attacco: si eliminano servizi inutili, si configurano le protezioni base e si migliorano i controlli di accesso.
In questa guida vedremo 10 passi concreti per proteggere un server Linux Ubuntu (valido anche per Debian e derivate), con comandi spiegati passo per passo, ideali anche per chi è alle prime armi.
1. Aggiornare il sistema
Un sistema non aggiornato può contenere vulnerabilità note, che sono state riparate nell patch di sicurezza.
Comandi
sudo apt update && sudo apt upgrade -y
apt update
: aggiorna la lista dei pacchetti disponibili.apt upgrade
: installa gli aggiornamenti.-y
: conferma automatica.

2. Cambiare la porta SSH
La porta 22 è bersaglio comune dei bot automatici. Cambiarla riduce la visibilità del servizio SSH.
N.B. C’è una differenza tra ssh e sshd, il primo sta per ssh client e il secondo sshd sta per il server, quindi se non avete ssh server è da installare . Ecco una guida che ve lo spiega sshd .

Comandi
Una volta installato il ssh server potete partire con la serie di comandi
sudo nano /etc/ssh/sshd_config

Trova la riga:
#Port 22
e sostituiscila con, ad esempio:
Port 2222

Poi riavvia il servizio:
sudo systemctl restart sshd
Ricorda: se hai un firewall attivo, apri la nuova porta (vedi punto 4).
3. Disabilitare l’accesso SSH come root
L’utente root
ha pieni poteri. Se viene compromesso, il sistema è esposto completamente e può essere compromesso se attaccato.
Comandi
Modifica il file:
sudo nano /etc/ssh/sshd_config
Trova la riga:
PermitRootLogin yes

e cambiala in:
PermitRootLogin no
Riavvia SSH:
sudo systemctl restart sshd
4. Abilitare il firewall con UFW
Blocca tutte le connessioni non autorizzate.
Comandi
sudo apt install ufw

sudo ufw allow 2222/tcp # se hai cambiato la porta SSH

sudo ufw enable
sudo ufw status

ufw
è il firewall semplificato per Ubuntu/Debian. Puoi anche aprire HTTP e HTTPS:
sudo ufw allow 80,443/tcp
5. Installare Fail2ban
Previene attacchi brute-force bloccando IP dopo tentativi falliti ripetuti.
Comandi

sudo apt install fail2ban
sudo systemctl enable fail2ban --now

Per configurare:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local
Verifica che [sshd]
sia attivo:
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
maxretry = 5

Riavvia:
sudo systemctl restart fail2ban
6. Disattivare servizi inutili
Ogni servizio attivo è una potenziale porta d’ingresso.
Comandi
Lista dei servizi attivi:
sudo ss -tuln

Oppure:
sudo systemctl list-units --type=service

Disattiva quelli non essenziali:
sudo systemctl disable nome_servizio --now

Esempio:
sudo systemctl disable avahi-daemon --now
7. Usare l’autenticazione SSH con chiave pubblica
Più sicuro della password per autenticazione, da un altro PC locale non sul server
Comandi
ssh-keygen

Invia la chiave al server:
ssh-copy-id -p 2222 utente@ip_del_server
Nel file /etc/ssh/sshd_config
:
PasswordAuthentication no

8. Abilitare il logging e la verifica automatica
Tenere traccia delle azioni è utile per analisi post-attacco.
Comandi
Verifica i log:
journalctl -xe
sudo less /var/log/auth.log
Puoi anche installare logwatch
:
sudo apt install logwatch
E configurarlo per inviare email giornaliere.
9. Creare un utente normale con privilegi sudo
Lavorare come root non è consigliato, invece creare un utente con privilegi simili al root è più consigliato.
Comandi
sudo adduser nomeutente
sudo usermod -aG sudo nomeutente

Poi accedi con:
ssh -p 2222 nomeutente@ip_server
10. Configurare aggiornamenti automatici di sicurezza
Ti protegge da vulnerabilità senza dover intervenire manualmente.
Comandi
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Verifica:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Assicurati che ci sia:
"${distro_id}:${distro_codename}-security";
Dimostrazione finale funzionante
- Accedi da un altro PC:
ssh -p 2222 nomeutente@ip_server
- Prova a fare login con
root
: accesso negato. - Controlla il firewall:
sudo ufw status verbose
- Verifica i log di Fail2ban:
sudo fail2ban-client status sshd
- Simula un aggiornamento automatico:
sudo unattended-upgrade --dry-run --debug
Tutto funzionante? Il tuo server è ora molto più sicuro di prima!
Conclusione
Applicare questi 10 passi ti mette al riparo dalla maggior parte degli attacchi automatizzati. Ogni server esposto su Internet deve essere protetto in modo proattivo, soprattutto se ospita dati o servizi importanti.
Grazie di essere arrivati fino alla fine della lettura, al prossimo tutorial.
Seguici sui social !