Configurare aggiornamenti di sicurezza automatici su CentOS 7

Introduzione
Gli aggiornamenti di sicurezza sono fondamentali per mantenere un sistema Linux affidabile e ridurre la superficie di attacco. In ambiente CentOS 7 è buona pratica applicare patch di sicurezza entro 30 giorni dalla loro pubblicazione, quando possibile. Questo articolo mostra come automatizzare il processo usando yum-cron, con attenzione a notifiche via email, esclusioni di pacchetti e controlli operativi.
Definizione rapida: yum-cron è un demone che esegue automaticamente comandi yum programmati e può scaricare e applicare aggiornamenti secondo la configurazione.
Cosa tratteremo
- Installazione di yum-cron su CentOS 7
- Configurazione per aggiornamenti di sicurezza automatici
- Esclusione di pacchetti specifici dalle update automatiche
- Controllo dei log e verifica
- Controlli di accettazione, rollback e casi limite
Important: serve un server CentOS 7 e privilegi root o sudo.
1. Installare yum-cron su CentOS 7
Yum-cron è disponibile nei repository standard di CentOS 7. Per installarlo e attivarlo eseguire i comandi seguenti come root:
yum -y install yum-cron
Dopo l’installazione avviare il servizio e abilitarlo all’avvio:
systemctl start yum-cron
systemctl enable yum-cron
Verifica lo stato del servizio:
systemctl status yum-cron
Se lo stato è “active (running)”, yum-cron è installato e attivo.
2. Configurare yum-cron per aggiornamenti di sicurezza
Per configurare yum-cron editare il file principale di configurazione:
cd /etc/yum/
vim yum-cron.conf
Nota: potete usare qualsiasi editor (nano, vi, etc.).
Nel file cercare la riga che inizia con update_cmd e impostarla su security per limitare gli aggiornamenti alle patch di sicurezza:
update_cmd = security
Assicuratevi poi che i messaggi siano abilitati e che gli aggiornamenti vengano scaricati e applicati:
update_messages = yes
download_updates = yes
apply_updates = yes
Questo farà sì che, quando sono disponibili aggiornamenti di sicurezza, yum-cron scarichi i pacchetti e li applichi automaticamente.
Notifiche via email
yum-cron può inviare notifiche via STDOUT o email. Per usare l’email impostare emit_via su email e configurare i campi email_from, email_to e email_host:
emit_via = email
email_from = root@hakase-labs
email_to = [email protected]
email_host = hakase-labs
Dopo le modifiche riavviare il servizio:
systemctl restart yum-cron
Da questo momento, yum-cron eseguirà quotidianamente il controllo e l’applicazione degli aggiornamenti di sicurezza.
Suggerimento operativo: usare un indirizzo email monitorato (ticket system o mailing list di ops) per garantire che gli avvisi non vengano ignorati.
3. Escludere pacchetti dalle update automatiche
In alcune situazioni potrebbe essere necessario escludere pacchetti (per es. kernel personalizzati, DB specifici, driver proprietari). Per farlo editare di nuovo yum-cron.conf e aggiungere nella sezione [base] la direttiva exclude con i nomi dei pacchetti:
cd /etc/yum/
vim yum-cron.conf
Sotto la sezione [base] aggiungete:
exclude = mysql* kernel*
Questo impedirà l’aggiornamento automatico dei pacchetti che corrispondono ai pattern indicati. Dopo aver salvato il file riavviare yum-cron:
systemctl restart yum-cron
Nota: l’esclusione impedisce l’aggiornamento automatico ma non blocca aggiornamenti manuali eseguiti con yum.
4. Verificare i log di yum-cron
I log dei job sono disponibili nella directory /var/log. Per vedere le voci correlate a yum-cron:
cd /var/log/
cat cron | grep yum-daily
Per vedere i singoli pacchetti aggiornati consultare yum.log:
cat yum.log | grep Updated
Per un monitoraggio in tempo reale potete usare tail:
tail -f /var/log/yum.log
Controlli di accettazione e test
Esempi di test per assicurare che la configurazione funzioni:
- Il servizio yum-cron è attivo: systemctl status yum-cron deve mostrare “active (running)”.
- Dopo un giorno verificare che nei log siano presenti voci di download/apply per aggiornamenti di sicurezza.
- Ricevere email di notifica quando emit_via è impostato su email.
- I pacchetti esclusi non compaiono nelle voci “Updated” di yum.log.
Esempio di comando per simulare un controllo manuale degli aggiornamenti di sicurezza:
yum updateinfo list security
Questo mostra le advisory di sicurezza disponibili; l’effettiva applicazione avverrà tramite yum-cron.
Procedura di rollback e piano di emergenza
Se un aggiornamento causa problemi, usare la cronologia di yum per annullare le operazioni più recenti:
yum history
# identificare l'ID della transazione problematica
yum history undo
Passaggi rapidi in caso di malfunzionamento dopo un aggiornamento automatico:
- Isolare il servizio impattato (stop, mettere in maintenance).
- Controllare yum.log e cron log per identificare la transazione.
- Eseguire yum history undo per ripristinare i pacchetti coinvolti.
- Riavviare i servizi e validare le funzionalità critiche.
Note: non sempre è possibile un rollback pulito (es. modifiche a schema DB). Per applicazioni critiche usare test pre-deploy o ambienti di staging.
Quando questa soluzione potrebbe non funzionare
- Server senza accesso a Internet o con repository locali non aggiornati: yum-cron non potrà scaricare aggiornamenti.
- Metadata di sicurezza non forniti dal repository: impostare update_cmd = security dipende dalle informazioni fornite dal repo.
- Sistemi che richiedono reboot per completare la patch (kernel, librerie di basso livello): yum-cron applica i pacchetti ma non effettua reboot automatici per default.
- Ambienti che necessitano di processi di change control: l’applicazione automatica potrebbe violare policy di conformità.
Alternative e approcci complementari
- Usare strumenti di orchestrazione (Ansible, Salt, Puppet) per orchestrare roll-out controllati e verificati.
- Soluzioni enterprise: Red Hat Satellite, Spacewalk o Katello per gestione centralizzata dei repository e dei patch.
- Per distribuzioni basate su Debian/Ubuntu, lo strumento equivalente è unattended-upgrades.
Scegliere l’approccio in base a: livello di automazione desiderato, requisiti di conformità e capacità di rollback.
Modelli mentali e buone pratiche
- Ridurre la finestra di esposizione: applicare patch rapidamente ma con controllo.
- Separare download da deployment quando serve: scaricare automaticamente ma applicare con approvazione per sistemi critici.
- Notifiche e audit: mantenere traccia di cosa è stato aggiornato e chi/come è stato informato.
Lista di controllo per ruoli
Amministratore di sistema:
- Verificare che yum-cron sia installato e abilitato.
- Configurare email di notifica e testare l’invio.
- Definire pacchetti da escludere e documentare le ragioni.
DevOps/Team applicativo:
- Validare l’impatto delle patch in staging.
- Pianificare i reboot necessari e sincronizzarli con gli aggiornamenti.
Compliance/Security:
- Assicurarsi che le policy di patching siano rispettate.
- Conservare i log e le notifiche per audit.
Sicurezza e hardening operativi
- Usare un server SMTP autenticato/TLS per l’invio di email di notifica.
- Limitare i repository abilitati a quelli fidati e firmati.
- Monitorare le email di yum-cron con un sistema di ticketing per evitare allarmi persi.
Glossario breve
- yum-cron: demone che esegue automaticamente comandi yum pianificati.
- update_cmd: direttiva che indica il tipo di aggiornamento (default, minimal, security).
- exclude: direttiva per escludere pacchetti dalle update automatiche.
Riepilogo
- Installare yum-cron, impostare update_cmd = security, abilitare download_updates e apply_updates.
- Configurare notifiche via email e testare la ricezione.
- Escludere pacchetti critici e documentare le esclusioni.
- Monitorare i log e avere un piano di rollback pronto.
Importante: verificare la strategia di patching in funzione dei requisiti di business, della conformità e dei tempi di manutenzione.
Risorse utili
- Documentazione ufficiale di CentOS e forum della community.
Riferimenti
Materiali simili
Installare BIKA LIMS Inkosi su Ubuntu in 15 min

Massimizzare la batteria dell'iPhone con l'ultimo iOS

Correggere errore 0x800F0909 in Windows 11

Gestire più launcher Unity con launcher-list-indicator

Correggere errore 0x8007025D in Windows 10
