Hardening del file php.ini

Una delle operazioni più importanti per la messa in sicurezza dei Webserver consiste nella corretta configurazione del file php.ini.

Infatti, alcune funzioni presenti nel file in questione che per default risultano abilitate, potrebbero essere la causa di eventuali falle di sicurezza non indifferenti.

PHP

Editiamo quindi il file php.ini presente nella directory /etc/php5/apache2/:

nightfly@nightbox:~$ sudo nano /etc/php5/apache2/php.ini

Una volta aperto il file in scrittura modifichiamo le seguenti direttive:

1) settiamo ad off i parametri safe_mod e safe_mod_gid entrambi deprecati dalla versione 5.3.0 di PHP:

safe_mod = Off 
safe_mod_gid = Off

2) restringiamo l’open_basedir alla sola directory /var/www:

open_basedir = /var/www

In questo modo limiteremo la possibilità di aprire file mediante PHP (ad esempio utilizzando la funzione f)) esclusivamente alla directory specificata.

3) Disabilitiamo alcune funzioni di PHP che potrebbero compromettere il nostro sistema:

disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, php_uname, getmyuid, getmypid, leak, listen, diskfreespace

4) disabilitiamo la visualizzazione degli errori, in modo da non dare punti di riferimento ad eventuali attaccanti che potrebbero utilizzare delle tecniche specifiche (ad esempio il blind SQL injection) per minare alla sicurezza del nostro server:

display_errors = Off

5) disabilitiamo la direttiva register_globals, ormai deprecata, in quanto non consente di fare alcuna distinzione tra le variabili passate mediante POST e quelle passate mediante GET:

register_globals = Off

6) disabilitiamo la direttiva allow_url_fopen che consente l’apertura di file mediante URL:

allow_url_fopen = Off

7) settiamo ad off la direttiva allow_url_include che consente l’inclusione di file mediante URL:

allow_url_include = Off

8) se le vostre applicazioni server side non prevedono l’upload di alcun tipo di file occorre disabilitare la direttiva file_uploads:

file_uploads = Off

9) affinchè i cookie non siano accessibili da scrip client side (editati, ad esempio, in javascrip oppure in vbscrip), riducendo notevolmente i rischi di attacchi XSS, occorre abilitare l’opzione session.cookie_httponly:

session.cookie_httponly = 1

10) per salvare le sessioni in una dir non convenzionale, evitando così che eventuali utenti con accesso shell possano intercettarle, dobbiamo operare sul parametro session.save_path:

session.save_path = "/tmp/phpsessions"

11) Infine, per irrobustire le difese del core PHP consiglio di installare la patch suhosin mediante il comando:

nightfly@nightbox:~$ sudo apt-get install php5-suhosin

Adesso il nostro server può essere considerato “quasi” sicuro, almeno per quanto riguarda la configurazione di PHP.

A presto.

Hardening del file php.iniultima modifica: 2011-06-27T17:10:25+02:00da nazarenolatella
Reposta per primo quest’articolo