PHP su CentOS 6 nel 2026: gestire un server doppiamente fuori supporto

Un server CentOS 6 con PHP 5 è fuori supporto sia nel sistema operativo sia nell’interprete. Cosa comporta strato per strato, come fare l’inventario, proteggere PHP con il backport, isolare il server e pianificare il passaggio a un sistema nuovo con PHP 8.

Copertina con il logo php∞, la categoria Distribuzioni Linux, il titolo PHP su CentOS 6 nel 2026 e il numero 17

CentOS 6 ha smesso di ricevere aggiornamenti il 30 novembre 2020. Quasi sei anni dopo, qualche server con questo sistema è ancora acceso: spesso ospita un gestionale scritto su misura, un vecchio negozio online o un portale che nessuno ha più toccato perché “funziona”. Sopra c’è quasi sempre un PHP della serie 5, a sua volta abbandonato dal progetto PHP da molti anni.

È una situazione doppiamente fuori supporto: né il sistema operativo né l’interprete ricevono correzioni. In questo articolo vediamo cosa comporta davvero, strato per strato, come fare un inventario senza rompere nulla, cosa si può fare subito per proteggere PHP e ridurre l’esposizione del server e perché, su CentOS 6, la migrazione va pianificata adesso e non rimandata.

Cosa vuol dire doppiamente fuori supporto

Su un server supportato, una vulnerabilità di PHP o di una libreria di sistema viene corretta da chi mantiene i pacchetti. Su CentOS 6 questa catena si è interrotta due volte. Il sistema operativo è fermo all’ultima versione, la 6.10, con i pacchetti archiviati su vault.centos.org. Il PHP di base è la versione 5.3.3, di un ramo che il progetto PHP ha chiuso il 14 agosto 2014. Chi aveva bisogno di una versione più recente usava i pacchetti di Remi Collet o le Software Collections, con PHP dal 5.4 al 5.6: rami chiusi rispettivamente nel 2015, nel 2016 e alla fine del 2018.

Anche le fonti alternative si sono fermate. Il repository di Remi per Enterprise Linux 6 non riceve aggiornamenti da tempo e, ad agosto 2026, è stato spostato tra gli archivi e non viene più distribuito dai mirror. Red Hat offre per RHEL 6 un supporto esteso a pagamento, rinnovabile di anno in anno fino al 2030, ma vale solo per i sistemi con un abbonamento RHEL e copre i pacchetti di RHEL 6, quindi al massimo il PHP 5.3 di base.

Schema a strati di un server CentOS 6 con PHP, dall’alto verso il basso: applicazione scritta per PHP 5.x; PHP 5.3.3 di base o dal 5.4 al 5.6 da Remi o Software Collections, rami chiusi tra il 2014 e il 2018; librerie OpenSSL 1.0.1e e glibc 2.12, ferme a novembre 2020; kernel Linux 2.6.32, fermo a novembre 2020; sistema CentOS 6.10, fuori supporto dal 30 novembre 2020. Una parentesi indica che il backport di PHP copre solo lo strato di PHP, mentre librerie, kernel e sistema restano scoperti
Il backport protegge lo strato di PHP; tutto quello che sta sotto si risolve solo cambiando sistema.

Cosa c’è sotto PHP

Il problema di CentOS 6 non è solo l’età di PHP. Tutto il software di base appartiene a una generazione precedente, e ogni componente porta i suoi limiti:

ComponenteVersione su CentOS 6.10Cosa comporta
KernelLinux 2.6.32nessuna correzione dal 2020: una falla in PHP può diventare il punto di partenza per ottenere i privilegi di root
OpenSSL1.0.1eniente TLS 1.3; PHP lo usa per HTTPS, cURL e le connessioni verso servizi esterni come gateway di pagamento e API
glibc2.12il software moderno compilato per sistemi recenti non si installa
Avvio dei serviziSysV init e Upstartniente systemd: strumenti e procedure attuali non si applicano
PHP5.3.3, oppure 5.4 – 5.6 da Remi o SCLvulnerabilità pubblicate dopo la fine del ramo senza correzione ufficiale
Versioni degli ultimi pacchetti pubblicati per CentOS 6.10 su vault.centos.org.

Oltre al rischio di attacco c’è quello di un guasto improvviso: un fornitore di pagamenti, un corriere o un servizio di fatturazione aggiorna i requisiti delle sue connessioni e il server smette di comunicare. Sotto pressione, a quel punto, si tende a improvvisare.

L’inventario, prima di toccare qualcosa

Su un server così vecchio la documentazione è spesso incompleta, e chi lo ha configurato non lavora più in azienda. Prima di qualsiasi intervento serve una fotografia precisa di cosa gira e di come. Questi comandi leggono soltanto, e funzionano anche con i repository irraggiungibili:

# Versione del sistema, del kernel e delle librerie principali
cat /etc/redhat-release
uname -r
rpm -q openssl glibc

# Versione di PHP della riga di comando e pacchetti installati
php -v
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{VENDOR}\n' | grep -i php | sort

# Collezioni installate in parallelo (Red Hat e Remi)
ls -d /opt/rh/* /opt/remi/* 2>/dev/null

# Servizi avviati al boot e porte in ascolto
chkconfig --list | grep ':on'
ss -tlnp

All’elenco aggiungi le cose che i comandi non dicono: le attività pianificate in crontab, i virtual host del server web, le connessioni verso database e servizi esterni, le credenziali salvate nei file di configurazione. Poi fai una copia completa del server, un’immagine della macchina virtuale o un backup a livello di disco, da usare come ambiente di prova.

Proteggere PHP, per quanto possibile

Il primo passo pratico è lo stesso di CentOS 7: puntare i repository all’archivio vault.centos.org, che per CentOS 6 contiene i pacchetti della 6.10, così da poter installare di nuovo dipendenze e strumenti. Abbiamo descritto i comandi nell’articolo su CentOS 7 dopo la fine del supporto: per CentOS 6 sono identici.

Il secondo passo è il backport delle patch sul PHP installato. Ricostruiamo lo stesso pacchetto, con lo stesso nome, gli stessi percorsi e le stesse estensioni, aggiungendo le correzioni per le vulnerabilità pubblicate dopo la fine del ramo e adattate al suo codice. La compilazione avviene in un ambiente CentOS 6 pulito, identico a quello di produzione, e il pacchetto viene provato con l’applicazione reale prima del rilascio, che facciamo con Ansible e un piano di rollback. Per dare un’idea della mole di lavoro su questi rami: sul solo PHP 5.6.40, l’ultima versione ufficiale del 5.6, il nostro pacchetto corregge 55 CVE, 11 delle quali aggiunte da noi con backport dedicati. Ne parliamo nell’articolo su PHP 5.6 nel 2026.

Su CentOS 6 il backport ha però un limite evidente: chiude le falle di PHP e delle sue estensioni, mentre kernel, OpenSSL e librerie restano scoperti. Per questo va sempre affiancato dall’isolamento del server.

Isolare il server

L’obiettivo è che il server CentOS 6 parli con il minor numero possibile di sistemi, e che nessuno di questi sia Internet. Lo schema che proponiamo mette davanti al vecchio server un reverse proxy su un sistema supportato.

Schema illustrativo di isolamento: il traffico da Internet arriva a un reverse proxy su un sistema supportato e aggiornato, con TLS moderno, filtro delle richieste WAF, accesso amministrativo limitato per indirizzo IP e log centralizzati. Il proxy inoltra le richieste al server CentOS 6 con PHP, chiuso in una rete isolata insieme al database: il server accetta solo traffico dal proxy, non ha uscite verso Internet, usa solo le estensioni necessarie e ha i backup fuori dal server. Una freccia tratteggiata indica che, quando l’applicazione adeguata supera i test, il proxy passa il traffico a un nuovo server EL 9 o 10 con PHP 8.x
Il proxy riduce l’esposizione oggi e rende il passaggio al nuovo server un cambio di destinazione.
  • Reverse proxy aggiornato: termina le connessioni HTTPS con protocolli e certificati moderni, filtra le richieste sospette e limita per indirizzo IP le aree amministrative. Il vecchio server riceve solo richieste già controllate.
  • Rete isolata: il firewall del server accetta connessioni solo dal proxy e dalle macchine di amministrazione, e blocca le uscite verso Internet tranne quelle indispensabili, da elencare una per una.
  • PHP ridotto al minimo: estensioni non usate disattivate, expose_php spento, cartelle di upload senza esecuzione di script.
  • Integrazioni esterne spostate: dove possibile, le chiamate verso API di terzi passano da un sistema moderno, così non dipendono dall’OpenSSL di CentOS 6.
  • Backup e log fuori dal server: in caso di compromissione, i dati per ripartire e per capire cosa è successo non devono stare sulla macchina compromessa.

Perché qui la migrazione non può aspettare

Su CentOS 7 il backport di PHP può proteggere la produzione per un periodo ragionevole. Su CentOS 6 il margine è più stretto, per tre motivi. Il sistema è fuori supporto da più tempo, e le falle aperte nel kernel e nelle librerie sono di più. Le dipendenze esterne, come i servizi di pagamento e le API dei fornitori, si allontanano ogni anno di più da quello che OpenSSL 1.0.1e e le vecchie estensioni riescono a gestire. E in un audit un sistema fuori supporto da anni è difficile da giustificare anche con un piano.

C’è poi la distanza del codice. Un’applicazione nata per PHP 5.3 usa spesso funzioni rimosse da tempo: l’estensione mysql e le funzioni ereg sono state eliminate in PHP 7.0, create_function() e each() in PHP 8.0. Il salto verso PHP 8 è un progetto vero, da stimare con un’analisi del codice, e prima comincia meglio è. Per la parte sul database abbiamo scritto una guida al passaggio da mysql a PDO.

Esistono strumenti per aggiornare sul posto CentOS 6 a CentOS 7, e da lì proseguire verso le versioni successive. Su un sistema così datato, però, una catena di tre o quattro aggiornamenti consecutivi, ciascuno con un cambio di versione di PHP, richiede più lavoro e più rischi di un server nuovo installato da zero. Per questo di norma consigliamo la seconda strada.

Un piano in quattro tappe

  1. Fotografia: inventario completo, copia del server e ambiente di prova identico alla produzione.
  2. Messa in sicurezza: repository dal vault, backport delle patch su PHP, reverse proxy e isolamento di rete.
  3. Nuovo server: Rocky Linux, AlmaLinux o RHEL in versione 9 o 10, con l’applicazione adeguata a PHP 8 e provata su una copia dei dati reali.
  4. Passaggio: il proxy invia il traffico al nuovo server, il vecchio resta spento ma disponibile per qualche settimana, poi viene dismesso con la cancellazione sicura dei dati.

Le prime due tappe si fanno in tempi brevi e riducono subito il rischio; la terza è quella che richiede più lavoro, e le prime due servono proprio a darle il tempo necessario. Se vuoi impostare il piano sul tuo server, trovi come lavoriamo nella sezione sulla migrazione applicativa.

In conclusione

Un server CentOS 6 con PHP è fuori supporto a ogni livello: il sistema dal 30 novembre 2020, il PHP 5.3 di base dal 2014, le versioni dal 5.4 al 5.6 dal 2015 al 2018, e anche i repository alternativi sono ormai in archivio. Il backport delle patch protegge lo strato di PHP, ma kernel, OpenSSL e librerie restano scoperti, per questo va affiancato da un isolamento serio con un reverse proxy aggiornato davanti e una rete chiusa intorno. Sono misure che servono a guadagnare tempo in sicurezza. La meta è un server nuovo con Rocky Linux, AlmaLinux o RHEL e l’applicazione portata su PHP 8, da pianificare subito partendo da un inventario accurato.

IL PROSSIMO PASSO

Mettiamo
in sicurezza.

Indicaci versione di PHP, sistema operativo e cosa ti preoccupa. Ti risponderemo con una valutazione dell’esposizione e una proposta di intervento.

Richiedi supporto

Ti porta al modulo di richiesta, in quattro passi.

PHP LEGACY · MANAGED SERVER S.R.L.info@phplegacy.it +39 02 5656 9681

Lunedì – venerdì · 09:30 – 19:30

Urgenza in corso? Reperibilità H24
+39 340 985 4556 ↗