Configurazione avanzata Apache

postato in: Articoli, Server | 0

apache

Qua su Tux Maniacs teniamo molto alla sicurezza. Quando si parla di server web è però tutto un altro paio di maniche. Ecco allora una guida passo passo per la configurazione avanzata del nostro server Apache.


PRIMI PASSI
Per amor di chiarezza: se non lo abbiamo ancora fatto, installiamo e configuriamo il server di Apache, seguendo questa guida passo passo.

Lo step successivo è abilitare il protocollo HTTPS e SSL sul nostro server e lo facciamo in questo modo.

A questo punto installiamo il più famoso modulo per la sicurezza che Apache fornisce: Mod Security (link).

E ora proteggiamo il server dagli attacchi brute force e ddos installando e configurando opportunamente Fail2Ban in questo modo.

 

 

ESEGUIRE APACHE CON UN USER E UN GROUP DIFFERENTE
Di default Apache è eseguito con i privilegi di l'utente di chi ha lanciato il programma, normalmente un amministratore di sistema, e quindi un utente con permessi elevati. Questo è un possibile problema in quanto, nell'architettura Linux, tutti i programmi eseguiti da un certo utente ereditano tutti i privilegi dell'utente stesso. E dato che Apache è un software che si interfaccia con il mondo esterno... a naso non sembra un ottima idea.
Per modificare l'utente innanzitutto creiamo un nuovo gruppo:

sudo groupadd apache

e poi creiamo e assegnamo le cartelle di compentenza al nuovo utente:

sudo useradd -d /var/www/ -g apache -s /bin/nologin apache

Cosa andiamo a fare con questo comando? Assegnamo la directory principale dell'utente apache con il parametro -d e aggiungiamo l'utente apache al gruppo apache con il parametro -g. Con il comando -s invece indichiamo che la shell dell'utente sarà /bin/nologin. Questo è un semplice modo per inibire l'utilizzo del terminale.
A questo punto non ci resta che modificare il proprietario di tutte le cartelle del nostro server web con il comando:

sudo chown apache -Rv /var/www

dove -R sta per recursive, ossia cambia il proprietario a tutto l'albero delle directory che hanno come radice /var/www. Mentre -v sta per verbose, e stampa le cartelle a cui ha cambiato il proprietario.
Prestiamo quindi attenzione a inserire tutte le altre directory eventualmente servite dal server.

A questo punto dobbiamo indicare al sistema operativo di eseguire Apache con il nuovo utente apache andando a editare il file /etc/apache2/envvars con il comando:

sudo nano /etc/apache2/envvars

una volta aperto cerchiamo le stringhe APACHE_RUN_USER e APACHE_RUN_USER e le editiamo in questo modo:

export APACHE_RUN_USER=apache export APACHE_RUN_GROUP=apache

ora riavviamo il server con il comando:

sudo /etc/init.d/apache2 restart

 

 

BLOCCHIAMO LA PASSWORD AL NUOVO UTENTE
Blocchiamo la password dell'utente in modo che non possa essere cambiata. Questo non vuol dire che l'utente sia bloccato, anzi. Significa semplicemente che la password viene impostata a un valore che non può essere inserito.

sudo passwd -l apache

e verifichiamo che l'utente apache sia bloccato con:

sudo grep apache /etc/shadow

e se vediamo un punto esclamativo come nell'esempio, vuol dire che la password è bloccata.

apache:!:
shadow

 

 

RIMUOVIAMO LA SHELL AL NUOVO UTENTE APACHE

Dato che l'utente apache deve solo eseguire il programma apache, non ha necessità di accedere all'intera potenzialità che la shell offre. Diamo il comando:

sudo usermod -s /bin/false apache

per verificare che la shell sia effettivamente disabilitata diamo:

sudo grep apache /etc/passwd

e se vediamo /bin/false alla fine della stringa vuol dire che è andato tutto bene.

shell_false

 

 

LIMITIAMO LA VULNERABILITÀ XSS
XSS è una vulnerabilità nota del protocollo http e consiste nell'inclusione di codice html all'intero di una pagina web per effettuare operazioni malevoli. Per proteggerci inseriamo nel file /etc/apache2/apache.conf la stringa:

 

   <IfModule mod_headers.c>
       Header set X-XSS-Protection: "1; mode=block"
   </IfModule>

 

e verifichiamo la presenza del modulo dando:

sudo apache2ctl -M | grep headers

se non fosse presente lo abilitiamo con:

sudo a2enmod headers

 

 

DISABILITIAMO GLI ETAG
Senza questo con alcuni tool di analisi, qualunque aggressore può conoscere preziose informazioni riguardanti i file contenuti nel nostro server.
Apriamo il file di configurazione con:

sudo nano /etc/apache2/apache2.conf

e inseriamo all'interno delle vostre directory servite da apache:

    <Directory />
               …
        FileETag None
        …
    </Directory>

ricordatevi di farlo anche in tutte le altre cartelle. In generale è importante farlo in:

    <Directory /usr/share>

    <Directory /var/www/>

 

 

CONCLUSIONI
Alla fine di questo post dovremmo avere un server abbastanza protetto rispetto alle principali minacce. Ovviamente questa guida non può coprire tutte le minacce. Se avete altri suggerimenti, commentate qua sotto.
Al prossimo post!

FONTI

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

Lascia un commento