Sistema operativo
Verifichiamo distribuzione, versione, stato degli aggiornamenti e ciclo di supporto.
Analizziamo configurazione, servizi, accessi e componenti del server per ridurre la superficie esposta e migliorare il livello di sicurezza dell'infrastruttura Linux.
L'hardening consiste nel ridurre servizi, privilegi e configurazioni che aumentano inutilmente la superficie di attacco del sistema.
Un server Linux può funzionare correttamente e allo stesso tempo presentare porte non necessarie, account privilegiati, software obsoleto, permessi troppo estesi o configurazioni ereditate nel tempo.
L'intervento parte dall'analisi dell'ambiente reale: non applichiamo una lista generica di modifiche senza conoscere servizi, applicazioni e requisiti operativi del server.
La configurazione corretta dipende dal ruolo della macchina: web server, database, server applicativo, backup, file server o infrastruttura virtualizzata hanno esigenze differenti.
Verifichiamo distribuzione, versione, stato degli aggiornamenti e ciclo di supporto.
Identifichiamo porte, daemon e servizi raggiungibili dalla rete o da Internet.
Controlliamo account, gruppi, privilegi amministrativi e modalità di accesso.
Valutiamo pacchetti, repository e componenti non necessari al ruolo del server.
Verifichiamo ownership, permessi, directory sensibili e aree scrivibili.
Controlliamo quali eventi vengono registrati e se le informazioni sono sufficienti per le verifiche.
SSH è spesso uno dei servizi più importanti dell'infrastruttura e richiede una configurazione coerente con il contesto operativo.
Valutiamo chiavi SSH, password, autenticazione aggiuntiva e modalità appropriate al sistema.
Riduciamo l'utilizzo diretto di account amministrativi e verifichiamo le regole sudo.
Quando possibile, l'accesso amministrativo può essere limitato a reti, VPN o indirizzi autorizzati.
È possibile applicare meccanismi di limitazione e blocco contro tentativi ripetuti.
Le regole di firewall devono riflettere il funzionamento reale dell'applicazione, non limitarsi a una configurazione generica.
Definiamo porte, protocolli, reti e origini che devono poter raggiungere il sistema.
Quando l'infrastruttura lo consente, separiamo servizi e reti con funzioni differenti.
Database, cache e servizi applicativi non devono necessariamente essere esposti pubblicamente.
La sicurezza di un server è un processo continuo: nuove vulnerabilità e nuovi aggiornamenti richiedono interventi nel tempo.
Verifichiamo la strategia di aggiornamento del sistema operativo e dei pacchetti installati.
Gli aggiornamenti che possono avere impatto vengono pianificati in modo controllato.
Pacchetti e servizi non più mantenuti devono essere sostituiti o rimossi quando possibile.
Per le modifiche più importanti verifichiamo la possibilità di recuperare configurazioni e dati.
Processi e utenti dovrebbero disporre soltanto dei permessi necessari alla funzione che svolgono.
Riduciamo privilegi e accessi amministrativi dove non sono necessari.
Verifichiamo ownership, permessi e directory scrivibili dai servizi.
I processi applicativi vengono separati quando architettura e sistema lo consentono.
Log e monitoraggio servono a comprendere cosa sta accadendo prima e dopo un problema.
Verifichiamo la raccolta degli eventi rilevanti del sistema operativo e dei servizi.
Risorse, disponibilità e servizi possono essere controllati con strumenti automatici.
Gli eventi significativi possono generare segnalazioni operative.
La retention dei log viene valutata in funzione delle esigenze operative e di sicurezza.
Le modifiche vengono applicate tenendo conto dei servizi che devono continuare a funzionare.
Analizziamo configurazione, servizi, utenti e rete.
Applichiamo le modifiche prioritarie e riduciamo le esposizioni non necessarie.
Controlliamo servizi, accessi, log e funzionamento dopo gli interventi.
Dopo la messa in sicurezza iniziale restano fondamentali aggiornamenti, monitoraggio, backup e gestione degli accessi.
Per server che devono essere spostati verso una nuova infrastruttura può essere utile intervenire su migrazione e hardening all'interno dello stesso progetto.