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

Configurazione: direttive per virtual host

Gestire le direttive di configurazione di Apache relative alla gestione dei virtual host
Gestire le direttive di configurazione di Apache relative alla gestione dei virtual host
Link copiato negli appunti

Prenderemo ora come riferimento una possibile e minimale configurazione di virtual host (avendo modificato quello di default, la cui definizione è contenuta in /etc/apache2/sites-enabled/000-default) al fine di elencare alcune tra le direttive più importanti nei termini della sicurezza.

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@mio_server.com
        DocumentRoot /var/www/

        <Directory />
                Options None               
                AllowOverride None
        </Directory>

        <Directory /var/www/>
                Options -Indexes -FollowSymLinks -ExecCGI -Includes
                AllowOverride None                
                Order allow,deny
                allow from all                         
                RedirectMatch ^/$ /apache2-default/                 
        </Directory>      

        ServerSignature Off
</VirtualHost>

La direttiva Options definisce alcuni comportamenti che la directory alla quale si applica dovrà avere. Può esser usata, inoltre, in apache2.conf ed .htaccess.

Per ciò che concerne la directory /var/www, cioè la DocumentRoot del nostro unico virtual host di esempio, le impostazioni dati impongono:

  • Indexes: inibisce sempre la generazione della lista dei file contenuti qui ed in ogni sotto-directory. Consigliatissimo,  evita di esporre all'Internet la lista dei file facenti parte di un programma Web e/o la lista delle risorse (se il file index fosse assente);
  • FollowSymLinks: evita che risorse WWW vengano reperite, tramite link, esternamente dalla directory www (non disabilitare se si usa mod_rewrite);
  • ExecCGI: evita di eseguire script CGI (che, preciso, nulla hanno a che fare con PHP). Si è anche disabilitato mod_cgi (a2dismod cgi);
  • Include: evita inclusioni server-side, possibile veicolo di exploit.

La configurazione proposta (Options -Indexes -FollowSymLinks -ExecCGI -Includes) è altrimenti sostituibile con Options None che contiene anche altri tipi di protezioni:

Tramite l'utilizzo di un file particolare, nominato di default .htaccess (e ridefinibile tramite direttiva AccessFileName), è possibile definire configurazioni per ogni singola (sotto)directory. È un sistema molto utile e spesso utilizzato ma anche, come si può comprendere, possibilmente pericoloso. Nel caso si ritenga che le direttive incluse nel file apache2.conf non debbano esser modificate da alcuno e per nessuno script si può disabilitare l'utilizzo di .htaccess tramite la direttiva AllowOverride con parametro None, come riportato nell'esempio. Esistono tuttavia opzioni meno restrittive (e più consigliate) che la completa disabilitazione e si rimanda alla documentazione di Apache se interessati.

Le righe:

Order allow,deny
allow from all

definiscono che il contenuto di Directory sia "servibile" da Apache all'Internet (o Intranet) senza restrizione alcuna (mod_authz_host).

La riga contenente RedirectMatch evita il directory-listing a livello / (file nella directory www o lista dei programmi Web), rindirizzando l'utente alla directory specificata.

Se supponiamo quindi che nel nostro virtual host facente capo a www.mio_server.com vi siano due sotto-directory contenenti rispettivamente prog_1 e prog_2:

  • se da browser digitiamo www.mio_server.com, verrà visualizzato quanto in /www/apache2-default/index.html;
  • se digitiamo www.mio_server.com/prog_1, verrà visualizzato, se esiste, il default index di /www/prog_1/ (cioè con ogni probabilità: /www/prog_1/index.php), altrimenti nulla;

analogamente per prog_2.

Ho qui inoltre eliminato rispetto alla configurazione predefinita ogni direttiva di tipo Alias (la quale, come FollowSymLinks, abilita le risorse WWW ad esser memorizzate sul filesystem in directory diverse dalla DocumentRoot). Ciò potrebbe portare, in particolari casi, a visualizzare un contenuto non voluto.

Per la regola secondo cui "meno informazioni si danno di sé ad un possibile aggressore meno rischi di exploit su bug noti si incontreranno", la direttiva ServerSignature Off elimina, dalle pagine generate da Apache (pagine contenenti messaggi di errore o simili), ogni riferimento alla versione del software utilizzata e ad ogni suo modulo.

Purtroppo Apache è "megalomane" e non elimina mai ogni traccia di sé. Principalmente, informazioni su di esso rimangono negli header di ogni messaggio di risposta HTTP, come da esempio seguente.

HTTP/1.1 200 OK
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 proxy_html/2.5 mod_ssl/2.2.3 OpenSSL/0.9.8c
[...]

Ciò che è possibile fare, a meno di non intervenire nel codice del programma o usare metodi avanzati (mod_security), è giungere al compromesso seguente che comunque è più che sufficiente per i nostri fini:

HTTP/1.1 200 OK
Server: Apache
[...]

Ciò si ottiene tramite l'imposizione di ServerTokens Prod in apache2.conf.

Configurazione: altro

Si può disabilitare o configurare adeguatamente, al fine di prevenire l'accesso pubblico ad informazioni "delicate", mod_info e mod_status, i quali consentono al richiedente remoto di visualizzare da browser ogni aspetto della configurazione di Apache e del suo stato attuale. Se non necessario, disabilitare anche mod_userdir, il quale modulo abilita gli utenti ad avere una propria web-site area con alias /~username, cosa che potrebbe portare ad identificare username validi di account sul server.

Ti consigliamo anche