La sicurezza di un ambiente di enterprise computing richiede policy e procedure volte a minimizzare l’accesso non autorizzato ai sistemi e ai dati.
Per proteggere le risorse di elaborazione basate su Linux, è necessario partire da ciò che si vuole proteggere e comprendere i modi tramite i quali un attacker potrebbe entrare nel sistema.
Una gestione della sicurezza di successo si basa su un corretto stato mentale. In altre parole, bisogna pensare come se si fosse un “attacker”.
In questo articolo, parleremo della valutazione dei rischi cui possono andare incontro i sistemi server Linux.
Il primo passo per garantire la sicurezza dei vostri sistemi server Linux è valutare correttamente i rischi che corrono. Solo quando ha ben chiare tutte le possibili minacce, un’impresa può effettuare il deployment di una serie di contromisure efficaci per prevenire, rilevare e, se necessario, reagire adeguatamente a ogni violazione che potrebbe verificarsi.
Per cominciare, identificate gli asset Linux che necessitano di protezione. Tali asset possono includere hardware, software o servizi operativi, come la gestione dell’e-mail o l’hosting di un sito Web. Ogni asset ha un valore, sia monetario sia inerente la possibilità di ricavi futuri.
Perciò, individuate le potenziali minacce per ciascun asset che possono provenire dall’interno o dall’esterno dell’organizzazione. Molte minacce interne sono puramente accidentali, ma alcune potrebbero provenire da persone con reali intenti fraudolenti.
Una minaccia a un asset dipende dallo scopo dell’attacco e dal modo in cui l’attacker potrebbe ottenere l’accesso alla risorsa.
L’attacker potrebbe voler accedere ai vostri dati o semplicemente negare l’accesso a utenti legittimi. Ogni minaccia ha una certa probabilità che avvenga, spesso legata al valore dell’asset, che però è difficile da stabilire in quanto varia notevolmente tra le organizzazioni.
Tuttavia, utilizzare un framework di risk management per assegnare una probabilità a ciascuna minaccia individuata vi aiuterà a definire la priorità per le azioni necessarie a limitare il problema.
Mentre non è possibile elencare tutti i vettori di una minaccia potenziale, una sintesi delle più comuni vi indicherà da dove iniziare nella valutazione dei rischi.
Il vettore di minaccia più problematico è l’utente. A dispetto di tutti i meccanismi di tutela, gli utenti possono comportarsi in modo improprio, sia volontariamente sia per mancanza di informazioni. La sensibilizzazione degli utenti, il livello del loro know how e i privilegi di accesso sono componenti importanti per la limitazione dei rischi in ambito Linux.
Le password rappresentano spesso il più comune e più soft strumento di sicurezza per ogni tipo di ambiente. Per identificare una password di accesso non sicura potete utilizzare un controller della convalida delle password, come John the Ripper.
Nel caso delle password delle applicazioni e dei database deve anche essere verificata la “crackabilità” e tali password potrebbero dover essere modificate per soddisfare i requisiti.
Inoltre, identificate gli accessi consentiti inutilmente ai server Linux. Per esempio, se il file delle password (/etc/passwd) viene distribuito in modalità remota (via rcp/rcopy o NIS), gli utenti possono avere il login di accesso a server che non hanno mai utilizzato e questo crea vettori per una potenziale minaccia con nessun beneficio.
Un altro dei principali vettori di minaccia è la rete. Chiunque possa accedere alla rete locale (tramite collegamento cablato o wireless) può tentare di connettersi a qualsiasi altra attività in rete.
Tutti i sistemi Linux eseguono programmi che aprono le porte di una rete e aspettano query dalla rete. Ognuno di questi rappresenta un vettore di minaccia, sia tramite l’autenticazione fraudolenta sia a causa bug del software che potrebbe consentire l’accesso per errore. Utilizzate netstat per trovare le porte aperte su un sistema.
Effettuate la scansione delle altre macchine sulla rete con Nmap per individuare eventuali altre porte aperte. Ciascuna di queste rappresenta un vettore di minaccia e quindi dovrebbe essere chiusa o monitorizzata per evitare accessi illegittimi.
Non trascurate alcun punto di accesso legacy di tipo dial-in. Il firewall è il confine tra una rete affidabile e una rete non sicura (per esempio, Internet). Il vostro firewall dovrebbe essere configurato per far passare solo i dati conosciuti e attraverso determinate porte. Ogni porta del firewall attraverso cui passano dei dati rappresenta un vettore di minaccia.
Oltre al normale controllo, dovreste anche esaminare i dati di log per correlare l’accesso con la necessità,. Il comando lastlog visualizza le informazioni di login dell’utente.
Una varietà di messaggi di log possono essere trovati in /var/log/messages. Sono molte le applicazioni e i database che possono fornire i meccanismi di registrazione per monitorare l’accesso degli utenti. Esaminate questi registri per avere una visione di chi attualmente usa e (presumibilmente) ha bisogno di accedere a risorse specifiche.
Indipendentemente dalla sua complessità, nessun software è impeccabile, ma purtroppo i difetti non sono generalmente conosciuti fino a quando non si manifestano sotto forma di comportamento indesiderato.
Il bug tipico danneggia solo i dati o causa un incidente, ma alcuni bug possono causare conseguenze impreviste, come permettere l’accesso non autorizzato. Ciò, ovviamente, rappresentano un’importante opportunità e infatti gli attacker sono alla costante ricerca di questi tipi di bug.
Motivo per cui, quando sono individuati, i vendor devono lavorare sodo per correggerli e fornire al più presto le patch per i software. Va da sé che sia vostro dovere assicurarvi che il sistema operativo e il software applicativo in uso vengano controllati e aggiornati regolarmente.
Il processo di controllo per l’aggiornamento del software su server Linux dipende dall’applicazione o dalla versione Linux usata. Per esempio, Ubuntu Linux fornisce un gestore degli aggiornamenti (si trova tramite System > Administration > Software Source), che può essere configurato per controllare gli update quotidianamente. Quanto più spesso verificate (e installate) i nuovi aggiornamenti, tanto più piccola è la finestra di vulnerabilità. Diffidate anche di freeware o software provenienti da fonti o autori la cui attendibilità non sia verificabile.
Il software più importante da monitorare e tenere aggiornato è però quello che dialoga con l’esterno, come i server Web e le applicazioni di rete (per esempio, VPN o SSH). Il software del server Web deve essere regolarmente sondato sia per eventuali configurazioni errate sia per individuare eventuali bug.
Le applicazioni Web possono fornire una miscellanea di input utilizzabili in modo errato. La maggior parte dei linguaggi delle applicazioni Web, come Perl, Python, Ruby e PHP, è dotata di servizi o vede la disponibilità di add-on per “sterilizzare” i dati di input e disabilitare eventuale codice inserito dall’utente, come SQL o JavaScript.
Tutti i dati che i server Web o le altre applicazioni che dialogano con l’esterno accettano da un utente rappresentano una potenziale minaccia. Inoltre, esaminare i file di log prodotti da questi programmi aiuta a identificare un accesso legittimo o illegittimo.