Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Sicurezza: consigli utili

Alcuni consigli utili per migliorare la sicurezza di Apache, prevendo attacchi con alcune semplici direttive, facilmente applicabili.
Alcuni consigli utili per migliorare la sicurezza di Apache, prevendo attacchi con alcune semplici direttive, facilmente applicabili.
Link copiato negli appunti

La sicurezza di un sistema informativo non va mai trascurata, soprattutto se questo sistema eroga i propri servizi attraverso Internet. Se da una parte la rete per eccellenza ha rivoluzionato il panorama delle telecomunicazioni, rendendo la condivisione di informazioni semplice ed alla portata di tutti, dall'altra rappresenta un potenziale vettore di attacco di formidabile potenza.

Le intrusioni non autorizzate da parte di pirati informatici sono in costante crescita, ed i danni che esse possono comportare spaziano dalla fuga di informazioni riservate alla interruzione di servizio.

Prevenire i danni di un attacco informatico è un'operazione alquanto complessa, sia sul piano organizzativo (ad esempio, organizzando le procedure aziendali in modo tale da ridurre al minimo il rischio di data breach) che su quello meramente tecnico (ad esempio, assicurandosi che la configurazione delle macchine in rete sia stata eseguita in modo opportuno).

Chiaramente, il grado di vulnerabilità di un sistema informativo dipende dai singoli moduli che lo compongono: è sufficiente che uno solo di essi sia vulnerabile affinché un attaccante possa prendere il controllo della macchina. Le vulnerabilità stesse possono essere dovute a vari fattori: può trattarsi di errori di programmazione, e quindi intrinsecamente connesse al particolare software in uso, o essere dovute ad errori di configurazione. Ogni spiraglio può essere usato da un malintenzionato per "forzare" l'accesso al sistema.

Anche Apache dunque va opportunamente configurato ed aggiornato periodicamente in modo da ridurre al minimo i rischi. In questa lezione, che non va intesa come riferimento completo ed esaustivo sul tema dell'hardening di un'installazione Apache, riassumeremo brevemente alcuni pratici consigli che possono facilmente applicati al proprio caso d'uso.

Nascondere nome e versione di Apache

Esistono archivi pubblici di vulnerabilità già note, classificati per software e versione. Il primo passo che un attaccante compie è quindi quello di verificare quali software (e in quali versioni) siano in esecuzione sulla macchina target, così da verificare se essa sia vulnerabile a qualche exploit già noto.

Il modo più semplice per ottenere questa informazione da Apache è quello di richiedere un URL non esistente, così da ottenere una risposta HTTP 404. Per default, infatti, Apache include nella risposta 404 il numero di versione ed il sistema operativo.

Per disabilitare questo comportamento, in modo da rendere più difficile l'operazione di fingerprinting (ovvero la determinazione di software e versioni in uso), si può configurare Apache con le direttive seguenti:

ServerSignature Off
ServerTokens Prod

Disabilitare il directory listing

Per default, se si richiede una URL per la quale non è presente un file index, Apache restituisce una pagina con la lista dei file all'interno della directory. Si consiglia di disabilitare questo comportamento per evitare di offrire informazioni sulla struttura delle directory servite dal nostro web server.

A tal scopo, ricorrere alla directiva Indexes, riportandola all'interno della directory (o del virtual host) da proteggere. Ad esempio:

<Directory /var/www/html>
Options -Indexes
</Directory>

Restrizioni sull'accesso alle directory

Si consiglia di configurare Apache affinché non consenta l'accesso a directory al di fuori di quella contenente il sito (o i siti) web ospitati. Ad esempio, le direttive:

<Directory / >
Options None
Order deny,allow
Deny from all
</Directory>

impediscono ad Apache di servire qualunque richiesta che comporti l'accesso alla directory radice (/) o una sua subdirectory, a meno che non sia specificato differentemente da un'altra direttiva. Ciò impedisce di fatto che si possa, anche per errore, accedere a file al di fuori delle directory del sito.

Disabilitare i Server Side Includes

Server Side Includes (SSI) è una semplice tecnica di scripting lato server che si basa su direttive inserite direttamente nei file HTML, che vengono processate dal web server prima restituire l'output completo. Il supporto ad SSI consente di eseguire codice sul server semplicemente attraverso l'upload di un file HTML, ed è pertanto un potenziale vettore d'attacco. Pertanto, a meno che il sito o l'applicazione web non ne facciano esplicito uso, si consiglia di disattivare il supporto ad SSI con la direttiva:

Options -Includes

Limitare la dimensione delle richieste HTTP

Effettuare una richiesta HTTP con un body eccessivamente corposo è un metodo per effettuare degli attecchi DOS (Denial Of Service). Una richiesta eccessivamente lunga infatti richiede maggiori risorse di calcolo per essere elaborata, e qualora ne giungano molte contemporaneamente si può causare una momentanea interruzione di servizio.

Per prevenire tali attacchi è possibile specificare una dimensione massima in byte: ogni richiesta di dimensioni maggiori verrà immediatamente ignorata, chiudendo immediatamente la connessione con il client che ha effettuato la richiesta. Per impostare una dimensione massima, si usa la direttiva LimitRequestBody, come nell'esempio sottostante:

<Directory /var/www/html >
LimitRequestBody 512000
</Directory>

Attenzione: qualora l'applicazione web ospitata offra agli utenti la possibilità di effettuare degli upload di file, questa direttiva andrà impostata corretamente al fine di consentire gli upload fino alla dimensione massima supportata.

Disabilitare l'esecuzione CGI

Qualora l'applicazione web non faccia uso di interpreti e/o eseguibili esterni, è buona norma disabilitare il supporto a CGI, impedendo così l'esecuzione non voluta di comandi sul server. L'opzione da utilizzare in questo caso è ExecCGI. Ad esempio:

Options -ExecCGI

Disabilitare i moduli non utilizzati

Come si evince dai suggerimenti precedentemente illustrati, in generale è buona norma disabilitare tutte quelle funzionalità non strettamente necessarie per il funzionamento dei siti e delle applicazioni web ospitati. Ciò permette di ridurre al minimo la superficie di attacco offerta e consente di utilizzare in modo più efficiente le risorse di calcolo della macchina.

Come visto nelle lezioni precedenti, la configurazione modulare di Apache permette di disabilitare facilmente i moduli non utilizzati, agendo semplicemente sulle directory contenenti i relativi file di configurazione.

Ti consigliamo anche