Cybersecurity

Hardening Linux Server Produzione: Checklist Completa (2026)

Hardening Linux Server Produzione: Checklist Completa (2026)

L’hardening Linux server produzione è il processo di configurazione proattiva per ridurre la superficie di attacco di un sistema. Si ottiene disabilitando servizi inutili, applicando patch automatiche, configurando firewall e restrizioni SSH, implementando audit e monitoraggio.

| Area | Azione Prioritaria | Impatto |

|—|—|—|

| Aggiornamenti | Abilitare unattended-upgrades | Chiude il 56% delle vie di attacco note |

| SSH | Disabilitare PasswordAuthentication | Elimina il brute force sulle credenziali |

| Firewall | UFW default deny incoming | Riduce la superficie esposta al minimo |

| Servizi | Disabilitare avahi-daemon, cups | Rimuove vettori di attacco locali |

| Audit | Installare Auditd e AIDE | Rileva modifiche non autorizzate |

Ho visto un server in produzione restare attivo per 18 mesi senza mai applicare la hardening checklist. Un pen test esterno ha trovato 8 criticità in 20 minuti. Tutte prevenibili con 2 ore di configurazione. Quando ho ereditato un ambiente con 300+ VM da mettere in sicurezza, la mancanza di uno standard ripetibile era il problema principale. Il 73% dei breach parte da credenziali rubate (Verizon DBIR 2025). Un server non hardened è un invito a nozze. Questa guida ti fornisce la checklist operativa per mettere in sicurezza qualsiasi macchina Linux prima del go-live.

Prerequisiti / Ambiente di test

Per applicare questa guida servono accesso root o privilegi sudo su una distribuzione Debian/Ubuntu. Testa ogni configurazione su un clone della macchina di produzione prima di applicarla. Un errore su sshd_config può bloccarti fuori dal sistema.

Aggiornamenti automatici di sicurezza: unattended-upgrades per l’hardening linux server produzione

Il 56% delle violazioni sfrutta vulnerabilità per cui esisteva già una patch disponibile (CISA 2025). Non applicare gli aggiornamenti di sicurezza è un rischio inaccettabile. Configura unattended-upgrades per installare automaticamente le patch di sicurezza del kernel e dei pacchetti critici.

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Verifica che il file /etc/apt/apt.conf.d/50unattended-upgrades abbia la sezione security abilitata. Controlla lo stato con sudo unattended-upgrades --dry-run.

SSH hardening: i parametri critici

SSH è il primo vettore di attacco su internet. La configurazione di default permette il login root e l’autenticazione tramite password. Cambia questi parametri in /etc/ssh/sshd_config:

Port 2222
PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy@10.0.0.0/24

Riavvia il servizio con sudo systemctl restart sshd. Usa solo chiavi ED25519 per l’accesso. Leggi anche: SSH Senza Password Linux: Configurare le Chiavi in 5 Minuti (2026)

Firewall UFW: regole minime per produzione

Il firewall deve seguire il principio del minimo privilegio. Default deny incoming, default allow outgoing. Abilita solo le porte strettamente necessarie.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH custom port'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable

Verifica con sudo ufw status verbose. Ogni regola in più è una superficie di attacco in più.

Fail2ban: configurazione per server esposto

Fail2ban blocca automaticamente gli IP che mostrano comportamenti malevoli, come tentativi di login ripetuti. Su un server esposto ad internet è obbligatorio.

sudo apt install fail2ban
sudo systemctl enable fail2ban

Crea il file /etc/fail2ban/jail.local con parametri restrittivi:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3

Disabilitare servizi non necessari

Ogni servizio in esecuzione è un potenziale vettore di attacco. Controlla cosa sta girando sulla tua macchina.

sudo systemctl list-units --type=service --state=running

Su installazioni desktop o server con pacchetti extra, trovi spesso avahi-daemon, cups o bluetooth in esecuzione. Disabilitali.

sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups

Se non sai a cosa serve un servizio, documenta la sua funzione prima di disabilitarlo.

Filesystem: mount options, /tmp noexec, separare /var

Le opzioni di mount limitano i danni in caso di compromissione. Monta /tmp con noexec, nosuid e nodev. Questo impedisce l’esecuzione di script malevoli piazzati in /tmp, una tecnica comune per l’escalation dei privilegi.

Modifica /etc/fstab:

/tmp     none     swap     defaults,noexec,nosuid,nodev     0 0

Separa /var e /tmp su partizioni diverse. Se un processo fuori controllo riempie i log in /var, non bloccherà la partizione root. Applica le stesse opzioni restrittive a /dev/shm.

Auditd: loggare le azioni critiche

Non puoi proteggere ciò che non vedi. Auditd registra le chiamate di sistema critiche. AIDE verifica l’integrità dei file. Installali entrambi.

sudo apt install aide auditd
sudo aideinit

Configura Auditd per tracciare le modifiche agli utenti e ai file critici:

sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes

Il comando sudo aideinit crea il database iniziale dell’integrità dei file. Programma un controllo giornaliero tramite cron per rilevare modifiche non autorizzate ai binari di sistema.

Lynis: score di sicurezza e cosa correggere

Lynis è uno strumento di audit automatico che valuta la configurazione del tuo server e assegna uno score. Esegui lo scan e leggi il report.

sudo apt install lynis
sudo lynis audit system

Uno score superiore a 85 è accettabile per ambienti generici. Per ambienti regulated, punta a 90+. Lynis ti dice esattamente cosa correggere e ti fornisce il suggerimento specifico per ogni voce. Non ignorare i warning sui permessi dei file di configurazione.

CIS Benchmark: lo standard per ambienti enterprise/regulated

Se la tua organizzazione deve rispettare NIS2 art.21 o ISO 27001:2022, il CIS Benchmark è il riferimento. Fornisce centinaia di controlli specifici per ogni distribuzione Linux.

Applica i parametri di rete e kernel consigliati dal CIS Benchmark per mitigare attacchi a livello di rete e memory corruption:

sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w kernel.randomize_va_space=2

Il primo abilita il reverse path filtering per bloccare lo spoofing IP. Il secondo attiva l’ASLR (Address Space Layout Randomization) per rendere più difficili gli exploit basati su buffer overflow. Rendi le modifiche persistenti in /etc/sysctl.conf. Leggi anche: Fail2ban su Linux: Configurazione Completa e Sicurezza SSH

Checklist finale: 20 punti da verificare prima del go-live

Questa è la checklist operativa che applico su ogni server prima di metterlo in produzione.

  1. Unattended-upgrades abilitato per la sicurezza
  2. SSH su porta non standard
  3. PermitRootLogin no in sshd_config
  4. PasswordAuthentication no in sshd_config
  5. AllowUsers configurato con IP sorgente
  6. UFW abilitato con default deny incoming
  7. Solo porte 80, 443 e SSH aperte
  8. Fail2ban attivo con bantime 3600
  9. avahi-daemon, cups e bluetooth disabilitati
  10. Postfix configurato per solo local delivery (se non serve l’invio esterno)
  11. /tmp montato con noexec, nosuid, nodev
  12. /dev/shm montato con noexec, nosuid, nodev
  13. /var su partizione separata
  14. Auditd installato e regole attive
  15. AIDE inizializzato e check giornaliero configurato
  16. Password complessa richiesta (pam_pwquality)
  17. Utenti con privilegi sudo minimi necessari
  18. sysctl net.ipv4.conf.all.rp_filter=1
  19. sysctl kernel.randomize_va_space=2
  20. Lynis audit eseguito con score superiore a 85

Errori comuni e troubleshooting

L’errore più frequente è bloccarsi fuori da SSH. Quando modifichi sshd_config, non chiudere la sessione corrente. Apri un secondo terminale e verifica che il nuovo login funzioni. Se qualcosa va storto, ripristina la configurazione dal terminale ancora attivo.

Un altro errore è configurare unattended-upgrades senza escludere pacchetti critici per l’applicazione. Se un aggiornamento automatico rompe una dipendenza in produzione, il downtime è garantito. Usa la direttiva Unattended-Upgrade::Package-Blacklist per i pacchetti sensibili.

Non dimenticare di riavviare il server dopo aver applicato le patch del kernel. Unattended-upgrades non riavvia la macchina di default senza la configurazione Automatic-Reboot.

FAQ, Domande Frequenti

Come applicare la hardening checklist su 50 server senza farlo a mano?

Usa Ansible. Crea un playbook con i task per ogni voce della checklist. L’ho fatto per un ambiente con 300+ VM. Riduce il tempo di deployment da giorni a ore e garantisce coerenza. Leggi anche: GitHub Actions Deploy Server Linux: Guida Automatica in 20 Minuti (2026)

Qual è la differenza tra AIDE e Auditd?

AIDE rileva modifiche ai file confrontando l’hash corrente con il database iniziale. È un controllo periodico. Auditd monitora le chiamate di sistema in tempo reale. Usa AIDE per l’integrità dei file e Auditd per tracciare chi fa cosa.

Lynis è sufficiente per la compliance NIS2?

No. Lynis è un ottimo strumento di assessment, ma la compliance NIS2 art.21 richiede processi organizzativi, gestione degli incidenti e continuità operativa. Lynis ti aiuta con la parte tecnica, ma non copre l’intero framework normativo.

Perché montare /tmp con noexec?

Gli attaccanti usano /tmp per scaricare ed eseguire exploit locali. Se /tmp ha il flag noexec, l’esecuzione fallisce. È una difesa profonda che blocca molti script di privilege escalation automatizzati.

Come testare le regole Auditd senza riavviare il demone?

Usa sudo augenrules --load per ricaricare le regole dai file in /etc/audit/rules.d/. Verifica con sudo auditctl -l che le regole siano attive.

Conclusioni con takeaway operativi

L’hardening non è un evento singolo. È un processo continuo. La checklist ti mette al riparo dalle minacce comuni, ma devi monitorare, aggiornare e auditare il sistema regolarmente. Applica questi 20 punti prima del go-live. Usa Lynis per misurare il tuo score. Integra AIDE e Auditd per avere visibilità. Quando ho standardizzato questa procedura su oltre 300 VM, gli alert per tentativi di intrusione sono crollati del 70%. Meno rumore, più sicurezza reale.

Aggiornato: Maggio 2026

Condividi questo articolo:

Scritto da

Rosario Giordano

Rosario Giordano è System Administrator e consulente IT specializzato in cybersecurity e cloud, con oltre 20 anni di esperienza nella gestione di infrastrutture Linux enterprise. Le sue aree di competenza includono hardening di SSH, piattaforme Kubernetes, database PostgreSQL, ambient i virtualizzati VMware e Proxmox, nonché la conformità ai framework di sicurezza NIS2 e ISO 27001.