Quando esce una patch critica come quella di PHP2Shell, il tempo che passa tra la pubblicazione e l’installazione è il periodo in cui il server è più esposto. Su un VPS gestito da una sola persona quel tempo dipende da quando ci si ricorda di collegarsi via SSH. Con unattended-upgrades Ubuntu scarica e installa da solo gli aggiornamenti di sicurezza, di notte, senza che tu debba fare nulla.
Funziona bene, ma ha un limite che su un server con OpenLiteSpeed conta parecchio, e lo vediamo dopo.
Leggi anche: PHP, aggiornamento di sicurezza critico: cosa fare su aaPanel e sul proprio server
Cosa fa e cosa non fa per impostazione predefinita
Sulle installazioni server di Ubuntu il servizio è quasi sempre già presente e attivo. Di base installa solo gli aggiornamenti di sicurezza che arrivano dai repository ufficiali di Ubuntu. Non tocca i pacchetti che arrivano da repository esterni, e questo include openlitespeed e tutti i pacchetti lsphp, che provengono dal repository di LiteSpeed. Se ti affidi alla configurazione standard, il kernel e le librerie di sistema si aggiornano da soli, mentre PHP resta alla versione che hai installato a mano. Per una falla in PHP è il caso peggiore.
Leggi anche: Vulnerabilità PHP e Server Web: Come Aggiornare OpenLiteSpeed su VPS Ubuntu
1. Verificare che sia installato e attivo
sudo apt update
sudo apt install -y unattended-upgrades apt-listchanges
systemctl status unattended-upgrades
systemctl list-timers 'apt-daily*'
Se vuoi attivarlo con la procedura guidata:
sudo dpkg-reconfigure -plow unattended-upgrades
Il comando crea il file /etc/apt/apt.conf.d/20auto-upgrades con questo contenuto, che puoi controllare e correggere a mano se serve:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Il valore 1 significa una volta al giorno.
2. Le impostazioni personalizzate in un file a parte
Il file principale è /etc/apt/apt.conf.d/50unattended-upgrades, ma conviene non modificarlo. Se lo cambi e il pacchetto viene aggiornato, apt ti chiede cosa fare con le differenze e si finisce per confondersi. Crea invece un file tuo, che viene letto dopo:
sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local
Contenuto di partenza:
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";
Unattended-Upgrade::Mail "tuamail@tuodominio.it";
Unattended-Upgrade::MailReport "only-on-error";
Cosa fanno queste righe:
Remove-Unused-Dependencieselimina i pacchetti rimasti orfani dopo gli aggiornamenti, così il disco non si riempie di vecchi kernel.Automatic-Rebootriavvia il server quando un aggiornamento lo richiede, in genere dopo un nuovo kernel. L’orario è fissato alle 4:30, quando di solito c’è meno traffico. Se il sito non può permettersi nemmeno un minuto di interruzione, metti"false"e controlla ogni tanto se esiste il file/var/run/reboot-required.MaileMailReportmandano un messaggio solo quando qualcosa va storto. Con"always"ricevi un resoconto ogni volta, con"on-change"solo quando viene installato qualcosa.
Per far arrivare le email il server deve avere un programma per spedirle. Senza, la riga viene ignorata senza errori. Se non hai già un MTA configurato, installa msmtp-mta o postfix in modalità solo invio.
3. Includere PHP e OpenLiteSpeed
Per far aggiornare automaticamente anche i pacchetti di LiteSpeed devi dire a unattended-upgrades di fidarsi di quel repository. Prima scopri come si identifica:
grep -h -E "^(Origin|Label|Suite|Codename):" /var/lib/apt/lists/*litespeed*Release
Ti restituisce righe come Origin: e Codename:. Usa i valori che trovi tu, non quelli di un esempio, perché devono corrispondere esattamente. Poi aggiungi nel file 52unattended-upgrades-local, sostituendo VALORE_ORIGIN con il testo che compare dopo Origin::
Unattended-Upgrade::Origins-Pattern {
"origin=VALORE_ORIGIN,codename=${distro_codename}";
};
Fai una prova prima di fidarti:
sudo unattended-upgrade --dry-run --debug 2>&1 | grep -i -E "lsphp|litespeed|allowed origins"
Nell’elenco delle origini consentite deve comparire anche quella di LiteSpeed. Se i pacchetti lsphp risultano aggiornabili, vedrai che verrebbero installati.
Prima di attivare tutto questo, valuta una cosa. Gli aggiornamenti dei pacchetti lsphp restano nello stesso ramo (8.3 resta 8.3), quindi i rischi di incompatibilità sono bassi, ma non nulli. Se gestisci siti per clienti e un plugin vecchio potrebbe reagire male, puoi lasciare PHP fuori dagli aggiornamenti automatici e programmare tu un controllo settimanale. In quel caso la procedura con snapshot e rollback che trovi nella guida all’aggiornamento di lsphp su OpenLiteSpeed è il metodo giusto.
4. Il riavvio dopo l’aggiornamento di PHP
C’è un dettaglio che si dimentica facilmente. Quando un pacchetto lsphp viene aggiornato, i processi PHP già in esecuzione continuano a usare il codice vecchio fino a quando non vengono riavviati. Una patch installata ma non ancora caricata non ti protegge. Il riavvio automatico dell’intero server alle 4:30 risolve il problema solo quando c’è un nuovo kernel. Per essere sicuro puoi programmare un riavvio notturno di OpenLiteSpeed:
sudo crontab -e
30 4 * * * /usr/local/lsws/bin/lswsctrl restart
È un riavvio che non interrompe le connessioni in corso e dura pochi secondi.
5. Escludere pacchetti delicati
Se ci sono pacchetti che preferisci aggiornare a mano, per esempio il database, puoi escluderli:
Unattended-Upgrade::Package-Blacklist {
"mariadb-server";
"mysql-server";
};
Un riavvio del database fatto in automatico, nel momento sbagliato, può interrompere un’operazione di scrittura. Per molti è meglio decidere quando farlo.
6. Controllare che stia funzionando
La prima prova è il test a secco, che mostra cosa verrebbe fatto senza installare niente:
sudo unattended-upgrade --dry-run --debug
Dopo qualche giorno guarda il registro delle operazioni:
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
Per vedere se serve un riavvio:
cat /var/run/reboot-required 2>/dev/null
Se il file non esiste, il server è aggiornato e non c’è nulla in sospeso.
Dove ti protegge e dove no
Gli aggiornamenti automatici coprono il sistema operativo e, se li hai configurati come sopra, anche PHP e OpenLiteSpeed. Non toccano WordPress, i plugin e i temi, che si aggiornano a parte. Per quelli puoi usare gli aggiornamenti automatici integrati di WordPress oppure WP-CLI da cron. Se vuoi approfondire le opzioni lato WordPress, trovi le costanti utili nella guida ai comandi per wp-config.php.
Leggi anche: PHP2Shell: come limitare i danni di una falla PHP con disable_functions e blocco dei file in uploads
Tieni sempre uno snapshot recente del VPS. L’aggiornamento automatico è comodo, ma è l’unico caso in cui qualcosa cambia sul server mentre non ci sei. Se una notte va storto qualcosa, ripristinare è molto più veloce che cercare la causa.
Altro per te
WordpressSito WordPress che si blocca ogni 5-6 ore: la causa nascosta è php-fpm su OpenLiteSpeed
WordPress si blocca con OpenLiteSpeed, Redis, php-fpm e Cloudflare, funziona perfettamente per alcune ore, poi si blocca mostrando l'errore Cloudflare 524 (A timeout occurred).…
Come installare PHP 8.4 su Ubuntu con tutte le dipendenze ed estensioni
Installazione Cyberpanel OpenLiteSpeed Ubuntu
Ubuntu o CentOS per una VPS? Come orientarsi dopo la fine del vecchio modello Red Hat
Samsung Galaxy S26 FE ufficiale: One UI 9, Exynos 2500 e 7 anni di aggiornamenti
Come disattivare gli aggiornamenti automatici di WordPress
Come aumentare i limiti di PHP su WordPress: Di quanto e perchè
Qual’è la versione PHP migliore per WordPress? Comparazione (PHP 7.4, 8.1, 8.2, 8.3, 8.4)
Altri articoli su PHP
- Plugin WordPress vulnerabili o abbandonati: come riconoscerli ed eliminarli prima che bucano il sito27 Ott
- Cosa fare se un aggiornamento di WordPress rompe il sito: guida alla diagnostica27 Ott
- WordPress: come correggere l’anteprima mobile e tablet del Customizer22 Ott
