Punti chiave
Numerosi attacchi hacking di alto profilo hanno dimostrato che la sicurezza web rimane una questione critica per tutte le aziende che operano online. I web server sono quindi un “nodo cruciale” in virtù dei dati sensibili che ospitano. La sicurezza del web server e del database è quindi importante esattamente come la sicurezza del sito web, delle applicazioni e di tutto il network.
Se si ha un’applicazione web sicura e un web server insicuro, o viceversa, allora l’intera sicurezza aziendale è messa a rischio.
Sebbene la sicurezza del web server possa essere un’operazione un pò scoraggiante, per la quale sono richieste conoscenze specialistiche, non è un compito impossibile.
E’ comunque sempre meglio dedicare qualche notte insonne e un pò di ricerche per mettere in sicurezza il web server e il database, piuttosto che trascorrere lunghe giornate in ufficio per cercare di “riparare” a futuri furti di dati.
A prescindere da quale web server e sistema operativo si sta utilizzando, un “out” del box di configurazione viene generalmente considerato insicuro, per questo è fondamentale adottare alcune misure di protezione, ritenute indispensabili per aumentare la sicurezza del web server.
Di seguito, quindi, una serie di consigli da seguire quando si procede a mettere in sicurezza il web server e il database.
Sicurezza del web server e del database: rimuovere i servizi non necessari
Alcune installazioni e configurazioni di default dei sistemi operativi non sono sicure.
In una procedura tipica di installazione di default, infatti, ci sono molti servizi, come i servizi di registro remoto, il servizio server di stampa o RAS, che, invece, non dovrebbero essere installati durante la configurazione del Web Server.
Quanti più servizi sono esecuzione tanto maggiori saranno le porte “lasciate aperte” agli utenti malintenzionati. E’ quindi consigliato spegnere e disabilitare tutti i servizi non necessari in modo che, al prossimo avvio del server, queste non saranno eseguite automaticamente.
Inoltre, disabilitare i servizi non necessari contribuisce anche a migliorare le performance del server, liberando alcune risorse hardware.
Attenzione all’accesso remoto per la sicurezza del Web Server e del database
Sebbene si tratti di una pratica oggi considerata poco funzionale, quando possibile è sempre bene che gli amministratori del server si connettano a questo localmente.
Nel caso in cui fosse necessario un accesso da remoto, è bene fare in modo che la connessione da remoto sia sicura usando i protocolli di “tunneling” e di cittografia.
L’accesso da remoto può inoltre essere ristretto a uno specifico numero di IP e solo a determinati accounts.
E’ anche di estrema importanza evitare di utilizzare computer condivisi o reti pubbliche per accedere ai server aziendali da remoto, come ad esempio le connessioni degli internet caffè o le reti wireless pubbliche.
Sviluppare, eseguire test e produrre in ambienti separati
Dal momento che è molto più semplice per uno sviluppatore implementare una nuova versione di una applicazione web su un server di produzione, è altrettanto comune che la fase di sviluppo e di test delle applicazioni web avvenga direttamente sui servers di produzione.
Si tratta di una pratica molto diffusa sul Web per trovare nuove versioni di uno specifico sito o alcuni contenuti che non sono disponibili al pubblico in directories come /test/new/ o sotto-directories simili.
Visto che queste applicazioni web sono nella prima fase di sviluppo, sono soggette a una serie di vulnerabilità, mancano di validazione e non sono in grado di gestire le eccezioni in maniera appropriata.
Queste applicazioni web possono essere facilmente scoperte e sfruttate dai malintenzionati semplicemente utilizzando i tools gratuiti disponibili su Internet.
Per facilitare la fase di sviluppo e di test delle applicazioni web, gli sviluppatori implementano specifiche applicazioni interne che danno loro un accesso privilegiato all’applicazione web, al database e alle altre risorse del web server, accesso non disponibile per un normale utente anonimo.
Sfortunatamente, se la fase di sviluppo e di test viene fatta direttamente sul server di produzione, queste applicazioni possono essere facilmente scoperte da un malintenzionato e utilizzate per avere accesso e per compromettere il server di produzione.
Ne consegue che idealmente la fase di sviluppo e di test delle applicazioni web dovrebbe sempre essere fatta su server isolati dalla rete e mai connessi al database e ai dati “reali”.
Metti file e script delle applicazioni su porzioni separate
I file e gli script delle applicazioni web o del sito dovrebbero essere sempre su una porzione separata o su un’unità diversa rispetto a quella del sistema operativo, dei logs e di ogni altro file di sistema.
Grazie all’esperienza, oggi sappiamo che un hacker che è riuscito ad accedere alla web root directory, è in grado di sfruttare le vulnerabilità e incrementare i propri privilegi per avere accesso ai dati presenti su tutto il disco, inclusi il sistema operativo e gli altri files di sistema.
Se questo si verifica, l’hacker ha la possibilità di avere accesso a ogni comando del sistema operativo, riuscendo quindi a controllare completamente il web server.
Sicurezza del Web Server e del database: attenzione ai permessi e ai privilegi
Le autorizzazioni per i file e i servizi network giocano un ruolo fondamentale per la sicurezza del Web Server e del database.
Se un web server viene compromesso tramite un software di servizio di rete, gli hacker possono utilizzare l’account sul quale il servizio di rete è in esecuzione per compiere determinate azioni, come ad esempio eseguire determinati file.
Per questo motivo è molto importante assegnare solo i privilegi minimi richiesti per l’esecuzione di uno specifico servizio di rete, come il software del web server.
Allo stesso modo è fondamentale assegnare i privilegi minimi agli utenti anonimi, impostando solo quelli necessari per accedere al sito, ai file delle applicazioni web e al baci-end dei dati e del database.
Installare in tempo le patch di protezione
Avere un software completo non significa necessariamente che il web server sia completamente al sicuro.
E’, infatti, prioritario aggiornare il sistema operativo e tutti i software in esecuzione sul server con le ultime patch di sicurezza disponibili.
Molti episodi di hacking, infatti, sfruttano proprio le vulnerabilità dei server e dei software non aggiornati con i più recenti patch.
Controllare e monitorare costantemente il server per garantire la sicurezza del Web Server e del database
Tutti i logs presenti in un server dovrebbero idealmente essere conservati in un’area separata.
I logs dei servizi network, degli accessi al sito, del database (ad esempio Microsoft SQL Server, MySQL, Oracle) e i logs del sistema operativo dovrebbero essere costantemente monitorati e controllati, verificando la presenza di voci di registro “strane”.
I file log restituiscono tutte le informazioni relativamente a un tentativo di attacco, anche nel caso di un attacco riuscito, ma spesso queste informazioni vengono ignorate.
Così, se si nota un’attività insolita nei registri di logs, è bene verificare cosa sta accedendo per accertare la presenza o meno di un problema.
Per garantire la sicurezza del Web Server e del database mai utilizzare gli account predefiniti
Tutti gli account utente predefiniti creati durante l’installazione del sistema operativo dovrebbero essere disabilitati.
C’è, inoltre, una lunga lista di software che una volta installati creano degli account utenti sul sistema operativo. Questi accounts devono essere controllati, così come devono essere modificati i relativi permessi.
L’account amministratore deve essere rinominato e non utilizzato, lo stesso si dica per il root user su Linux e Unix.
Tutti gli accessi da amministratore sul web server devono avere un proprio account, con i corretti privilegi necessari.
E’, inoltre, una buona pratica di sicurezza non condividere con altri gli account utenti.
Sicurezza del Web Server e del database: rimuovere moduli e estensioni delle applicazioni non utilizzate
L’installazione di default di Apache comporta l’abilitazione di un certo numero di moduli predefiniti, che, in linea di massima, non sono necessari al web server.
E’ quindi consigliato spegnere questi moduli al fine di prevenire attacchi contro di essi.
Lo stesso si dica per i web server Microsoft: Internet Information Services.
Di default, IIS è configurato per servire un ampio numero di applicazioni tipo come ASP, ASP.NET e altre.
La lista delle estensioni delle applicazioni dovrebbe contenere solo quelle applicazioni web e quelle estensioni per il sito che saranno realmente utilizzate. Tutte le estensioni dovranno inoltre essere limitate per utilizzare HTTP specifici dove possibile.
Tenersi costantemente aggiornati
Oggi giorno è possibile trovare in Rete gratuitamente moltissime informazioni e suggerimenti su software e sistemi operativi. Tenersi informati e conoscere le nuove tipologie di attacco è molto importante, per questo è consigliato leggere molta “letteratura” di settore e stare sempre al passo con le ultime novità.
Usare Scanner per la sicurezza del Web Server e del database
Scanner sono dei tools molto utili che permettono di automatizzare e di semplificare il processo di messa in sicurezza del web server e delle applicazioni web.
Acunetix Web Vulnerability Scanner è inoltre dotato di “port scanner” che quando abilitato sottopone a scansione le applicazioni web e l’hosting del web server.
Simile a uno scanner di sicurezza di rete, Acunetix WVS avvia una serie di controlli avanzati di sicurezza indirizzati alle porte aperte e ai servizi di rete in esecuzione sul web server.
Acunetix Web Vulnerability Scanner protegge il sito e il web server controllando SQL Injection, Cross site scripting, problemi di configurazione del server e altri tipi di vulnerabilità.
Verifica inoltre la sicurezza delle password sulle pagine di autenticazione e la protezione dei dati di acquisto, controlla i form, i contenuti dinamici Web 2.0 e ogni altro tipo di applicazione web.
Quando la scansione è completa, il software restituisce un report dettagliato che individua con precisione eventuali vulnerabilità.