Installazione e sicurezza interna



I moduli esterni

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.

Protezione interna

Impersonificazione di Apache e directory dell'eseguibile

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.

File di configurazione e di log

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.

Cartella www, ovvero come installare (correttamente) un programma Web PHP

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

Ultimi articoli Sicurezza

Nmap: tecniche per evadere un firewall

Vediamo come sfuggire ai controlli di un firewall utilizzando Nmap.

Sfruttare vulnerabilità XSS con BeEF

Usiamo BeEF per automatizzare lo sfruttamento di vulnerabilità Cross...

Trojan Flashback: rimuoverlo da Mac OS X

Individuiamo e rimuoviamo il trojan Flashback da Mac OS X

Individuare vulnerabilità in Joomla con JoomScan

Usiamo JoomScan per verificare la sicurezza di Joomla e la presenza...

XSS: attacchi avanzati

Approfondiamo le vulnerabilità Cross Site Scripting analizzando...

Altri articoli

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida Sicurezza wireless

Quali sono i pericoli di sicurezza di una rete senza filo e quali...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto