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.
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 = of
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 fopen()) 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 script client side (editati, ad esempio, in javascript oppure in vbscript), 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.