Ubuntu 24.04: unattended-upgrades è attivo di default?
Ubuntu Server 24.04 include unattended-upgrades, ma 20auto-upgrades lo attiva. Automatic-Reboot resta false e una simulazione mostra cosa verrebbe installato.
Perché vale la pena configurare gli aggiornamenti di sicurezza automatici
Un server senza patch è il bersaglio più facile su Internet. La maggior parte delle violazioni dei server di piccole dimensioni non richiede tecniche sofisticate: sfrutta un bug noto presente in un vecchio pacchetto che il proprietario non ha mai aggiornato. Ubuntu include uno strumento che elimina autonomamente questo problema: unattended-upgrades installa automaticamente gli aggiornamenti di sicurezza secondo una pianificazione, senza richiedere l'accesso interattivo. È la misura di sicurezza più economica disponibile su un VPS e, su Ubuntu, richiede pochi minuti di configurazione.
Lo strumento è volutamente conservativo. Per impostazione predefinita applica solo gli aggiornamenti di sicurezza, non l'aggiornamento di tutti i pacchetti, perché una patch di sicurezza presenta un rischio ridotto e conviene installarla senza revisione, mentre un aggiornamento funzionale può modificare un comportamento da cui dipendi. Questa impostazione predefinita è adatta alla maggior parte dei server e questa guida la mantiene, mostrando solo le poche impostazioni che vale la pena modificare.
Passaggio 1: installare e abilitarlo
Su Ubuntu 24.04 il pacchetto è spesso già presente, ma non sempre è abilitato. Installalo e attivalo:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesLa richiesta dpkg-reconfigure pone una sola domanda con risposta sì o no: se scaricare e installare automaticamente gli aggiornamenti stabili. Rispondi sì. In questo modo viene scritto il file che abilita l'esecuzione giornaliera:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";La prima riga aggiorna ogni giorno l'elenco dei pacchetti; la seconda esegue ogni giorno l'aggiornamento non interattivo. Impostare entrambi su 1 significa che la macchina verifica e applica ogni giorno gli aggiornamenti di sicurezza tramite un timer systemd, senza ulteriori interventi da parte tua.
Passaggio 2: decidere cosa applicare automaticamente
La policy si trova in /etc/apt/apt.conf.d/50unattended-upgrades. Aprila e individua il blocco Allowed-Origins nella parte iniziale:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};Le righe -security sono quelle rilevanti e, per impostazione predefinita, sono abilitate. Questa è la policy conservativa: installare gli aggiornamenti di sicurezza e lasciare a te l'applicazione manuale dei normali aggiornamenti funzionali. Puoi aggiungere la riga relativa all'origine "${distro_id}:${distro_codename}-updates" per applicare automaticamente tutti gli aggiornamenti, ma su un server che ospita qualcosa di importante, applicare automaticamente solo le patch di sicurezza è l'impostazione più prudente. Lasciala invariata, come fornita dal pacchetto, salvo una ragione specifica per modificarla.
Passaggio 3: gestire i riavvii
Alcuni aggiornamenti, come quelli del kernel o di una libreria di base, diventano pienamente effettivi solo dopo un riavvio. unattended-upgrades non riavvia il server se non glielo indichi esplicitamente; di conseguenza, un kernel aggiornato può restare inutilizzato fino al successivo riavvio. Decidi come gestire questa situazione e imposta esplicitamente il comportamento in 50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";Questa impostazione riavvia il server alle quattro del mattino, ma solo quando un aggiornamento lo richiede. Su un singolo VPS senza un cluster a cui eseguire il failover, un breve riavvio nelle prime ore del mattino è in genere un compromesso ragionevole per applicare tempestivamente le correzioni del kernel. Se il server esegue un servizio che non deve mai riavviarsi in modo imprevisto, lascia disabilitato il riavvio automatico e riavvia manualmente il server dopo aver controllato /var/run/reboot-required.
Passaggio 4: verificare che funzioni
Non aspettare un giorno per verificare se il job viene eseguito. Avvia una simulazione che mostri esattamente cosa verrebbe applicato, senza modificare nulla:
sudo unattended-upgrade --dry-run --debugL'output elenca i pacchetti considerati e le relative origini, così puoi verificare la policy in funzione. Dopo la prima esecuzione effettiva del job, il relativo registro si trova qui:
cat /var/log/unattended-upgrades/unattended-upgrades.logQuesto log risponde alla domanda: "il mio server sta applicando davvero le patch in autonomia?". Se mostra l'installazione pianificata di pacchetti di sicurezza, il job funziona.
Dove si inserisce
Gli aggiornamenti automatici sono un livello della messa in sicurezza del server, non l'intera soluzione. Impediscono che i bug noti restino presenti, ma non intervengono sugli utenti autorizzati ad accedere né sui servizi esposti. Abbinali a un hardening di SSH con accesso basato solo su chiavi, in modo da impedire attacchi di forza bruta al punto di accesso, a un firewall UFW con criterio default-deny, così che sia raggiungibile solo ciò che scegli, e a utenti di servizio senza privilegi, così che un'applicazione compromessa non possa prendere il controllo dell'intero server. Le applicazioni ospitate gestiscono inoltre i propri secret; se questo server esegue un password vault self-hosted, un intervento di hardening di Vaultwarden protegge il token amministrativo e il file di backup, che nessuna quantità di patch applicate da apt può proteggere. Le patch chiudono le vulnerabilità note; gli altri livelli limitano i danni causati da quelle che non conosci.
FAQ
unattended-upgrades applica tutti gli aggiornamenti o solo quelli di sicurezza?
Per impostazione predefinita, solo gli aggiornamenti di sicurezza. Il blocco Allowed-Origins in /etc/apt/apt.conf.d/50unattended-upgrades abilita le origini -security e lascia a te l'applicazione manuale dei normali aggiornamenti funzionali. È una scelta intenzionale: le patch di sicurezza presentano un rischio ridotto e conviene installarle automaticamente, mentre gli aggiornamenti funzionali possono modificare il comportamento del sistema; per questo la maggior parte dei server dovrebbe mantenere l'impostazione conservativa predefinita.
Gli aggiornamenti automatici riavvieranno il server?
Solo se lo specifichi. Imposta Unattended-Upgrade::Automatic-Reboot "true" e un Automatic-Reboot-Time nella configurazione: il server si riavvierà a quell'ora quando un aggiornamento lo richiede, ad esempio dopo una patch del kernel. Se lasci l'impostazione disabilitata, un kernel aggiornato resterà in attesa fino al riavvio manuale; controlla /var/run/reboot-required per verificare se ce n'è uno in sospeso.
Come verifico che gli aggiornamenti automatici siano effettivamente in esecuzione?
Esegui sudo unattended-upgrade --dry-run --debug per vedere cosa verrebbe applicato in questo momento, senza modificare nulla, e consulta /var/log/unattended-upgrades/unattended-upgrades.log per il registro delle esecuzioni precedenti; ogni installazione automatica viene inoltre registrata in /var/log/apt/history.log. Se il log mostra l'installazione giornaliera di pacchetti di sicurezza, il timer funziona. Se la simulazione restituisce No packages found that can be upgraded unattended, significa che tutto è già aggiornato oppure che le origini autorizzate sono troppo limitate per includere il repository di sicurezza.
unattended-upgrades è sufficiente per mantenere sicuro il server?
No, ma è un livello necessario. Impedisce che le vulnerabilità note restino senza patch, evitando il tipo più comune di violazione, ma non controlla gli accessi né l'esposizione dei servizi. Combinalo con l'hardening di SSH, un firewall con criterio default-deny e utenti di servizio con privilegi minimi, per ottenere un server realmente difficile da compromettere.