Apache è un software modulare ed in quanto tale permette di aggiungere funzionalità caricando moduli compilati separatamente. Va da sé che non devono esser installati sul server moduli esterni non usati. Verifichiamo quanto installato, come root, tramite il gestore di pacchetti Synaptic o da shell tramite il comando:
dpkg -l | grep apache
Che potrebbe restituirci una risposta simile a questa:
apache2-mpm-prefork 2.2.3-3 apache2-utils 2.2.3-3 apache2.2-common 2.2.3-3 libapache2-mod-bt 0.0.19+p4.2296-1 libapache2-mod-php5 5.2.0-6
Nel caso qualcosa non servisse (qui ad esempio: libapache2-mod-bt) è bene disinstallarlo tramite apt-get e/o dpkg.
L'utente di default con cui gira Apache è www-data, appartenente al gruppo omonimo.
Infatti, digitando il seguente comando
ps aux | grep apache2
Otterremo come risposta, lungo la prima colonna, i nomi degli utenti sotto i cui profili è eseguito Apache:
root /usr/sbin/apache2 -k start www-data /usr/sbin/apache2 -k start www-data /usr/sbin/apache2 -k start [...]
Le direttive del suo file di configurazione che definiscono utente e relativo gruppo sono User e Group:
User www-data Group www-data
Apache dev'esser inizialmente lanciato come utente root, poiché deve porsi in ascolto su porte ben note (80, 443). Una volta lanciato, tuttavia, "figlierà" di modo che il processo attivo abbia privilegi inferiori.
Per evitare che un aggressore possa, in date circostanze, sostituire o modificare l'eseguibile del Web server, in attesa che root lo riavvii (con i relativi permessi!), è necessario che la directory /usr/sbin/apache2 sia accessibile in scrittura solo per root stesso.
I file di configurazione di Apache 2 sono molti, il principale dei quali è /etc/apache2/apache2.conf (i rimanenti verranno da esso richiamati). Ogni singolo file deve poter esser modificato solo dall'utente root; Debian definisce i permessi come di seguito:
-rw-r--r-- root root apache2.conf drwxr-xr-x root root conf.d -rw-r--r-- root root envvars -rw-r--r-- root root httpd.conf [config. utente] drwxr-xr-x root root mods-available drwxr-xr-x root root mods-enabled -rw-r--r-- root root ports.conf [porta su cui Apache deve ascoltare] drwxr-xr-x root root sites-available drwxr-xr-x root root sites-enabled
I moduli e i loro file di configurazione nelle directory /usr/lib/apache2/modules/ e /etc/apache2/mods-available devono generalmente conservare i permessi: -rw-r--r-- [644] root root. Idem per il PID file: /var/run/apache2.pid.
I file di log - in /var/logs/apache2/ troviamo quelli globali - devono essere ad accesso esclusivo per root (come sopra). Inoltre il file access.log viene usato per tracciare le connessioni ad Apache, mentre il file error.log viene usato per registrare gli errori riscontrati da Apache durante le sue operazioni. Per questi file si dovrebbero attuare accorgimenti necessari affinché i file non crescano a dismisura.
Installare un'applicazione Web altro non vuol dire che copiare la relativa directory nella directory www del server, di solito collocata al percorso /var/www, e definire per essa gli adeguati permessi a livello di filesystem.
Considereremo di qui innanzi, per brevità, che Apache sia configurato per un unico virtual host, come da default e quindi contenga un'unica applicazione Web o più applicazioni, diciamo, "strettamente legate". Per più virtual host la logica è comunque la medesima. Se non noto, si consiglia caldamente di reperire informazioni sul concetto di virtual host prima di proseguire nella lettura.
Torniamo a noi: ogni directory copiata deve esser di proprietà dell'utente www-data ed accessibile solo da questi. In particolare:
Ogni directory interna alla www rappresenta un sito/programma Web: l'albero relativo dev'esser leggibile ed eseguibile solo da www-data. Ciò si ottiene con i seguenti comandi:
chown -R www-data.www-data /var/www/programma_web chmod -R 500 /var/www/programma_web/
Ogni sottodirectory interna nella quale si debba anche accedere in scrittura deve avere adeguati permessi:
chmod -R 700 /var/www/programma_web/directory_interna
Nmap: tecniche per evadere un firewallVediamo come sfuggire ai controlli di un firewall utilizzando Nmap. |
Sfruttare vulnerabilità XSS con BeEFUsiamo BeEF per automatizzare lo sfruttamento di vulnerabilità Cross... |
Trojan Flashback: rimuoverlo da Mac OS XIndividuiamo e rimuoviamo il trojan Flashback da Mac OS X |
Individuare vulnerabilità in Joomla con JoomScanUsiamo JoomScan per verificare la sicurezza di Joomla e la presenza... |
XSS: attacchi avanzatiApprofondiamo le vulnerabilità Cross Site Scripting analizzando... |
Guida SQL Injection con SqlmapScopriamo se le nostre applicazioni web sono vulnerabili alle SQL... |
Guida sicurezza applicazioni WebLe tecniche di attacco più comuni, i metodi per verificare la... |
Guida Sicurezza wirelessQuali sono i pericoli di sicurezza di una rete senza filo e quali... |
Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.
Iscriviti alla newsletter
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |