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

mod_security e mod_ssl

Moduli di protezione aggiuntiva per Apache: maggiore sicurezza e crittografia delle connessioni
Moduli di protezione aggiuntiva per Apache: maggiore sicurezza e crittografia delle connessioni
Link copiato negli appunti

Nel capitolo relativo ad Apache abbiamo accennato ad alcuni moduli per la sicurezza che adesso analizzeremo più nel dettaglio: si tratta di mod_security e mod_SSL, che offrono la possibilità di rendere ancora più sicuro il proprio web server.

Mod_security

In particolare, mod_security è una sorta di firewall aggiuntivo che può essere integrato all'interno di Apache, che attraverso una serie di regole preimpostate o configurate manualmente previene attacchi dall'esterno, quali, ad esempio, SQL Injection e simili. La sua installazione è molto semplice: è sufficiente infatti lanciare il seguente comando

$ sudo apt-get install libapache-mod-security

Per caricare il modulo in Apache, lanciamo

$ sudo a2enmod mod-security

e riavviamo il web server con

$ sudo /etc/init.d/apache2 restart

Adesso, apriamo il file di configurazione globale di Apache:

$ sudo nano /etc/apache2/apache2.conf

e aggiungiamo le seguenti righe

<IfModule mod_security.c>
    SecFilterEngine On
    SecFilterCheckURLEncoding On
    SecFilterCheckUnicodeEncoding Off
    SecFilterForceByteRange 0 255
    SecAuditEngine RelevantOnly
    SecAuditLog /var/log/apache2/audit_log
    SecFilterDebugLog /var/log/apache2/modsec_debug_log
    SecFilterDebugLevel 0
    SecFilterScanPOST On
    SecFilterDefaultAction "deny,log,status:500"
</IfModule>

Come già visto in precedenza, ogni riga contiene una direttiva, e nel dettaglio:

  • SecFilterEngine: attiva o disattiva il filtro di mod-security;
  • SecFilterCheckURLEncoding: codifica i caratteri speciali prima del loro passaggio all'URL;
  • SecFilterCheckUnicodeEncoding: abilita o disabilita la validazione della codifica Unicode;
  • SecFilterForceByteRange: permette il passaggio di richieste la cui dimensione in Byte è contenuta in un certo intervallo;
  • SecAuditEngine: abilita il logging, con il valore RelevantOnly logga solo gli avvenimenti più importanti;
  • SecAuditLog: specifica il file di log;
  • SecFilterDebugLog: specifica il file di debug;
  • SecFilterDebugLevel: specifica il livello di accuratezza del file di debug;
  • SecFilterScanPOST: abilita la scansione delle variabili passate tramite il metodo POST;
  • SecFilterDefaultAction: specifica il comportamento da tenere nel caso in cui una richiesta venga filtrata; in questo caso, blocca la richiesta, la inserisce nel file di log, e restituisce all'utente un errore 500.

Maggiori dettagli sull'utilizzo di mod_security sono disponibili all'interno della documentazione ufficiale del progetto.

Mod_ssl

Passiamo adesso a mod_ssl: si tratta di un modulo che permette di abilitare le connessioni cifrate tramite il protocollo https, così da garantire lo scambio di informazioni tra client e server in maniera sicura. Tale modulo è incluso nel pacchetto apache2.2-common, che molto probabilmente è stato installato insieme al web server. In ogni caso, per essere sicuri, lanciamo il comando

$ sudo apt-get install libapache-mod-ssl openssl

che installerà anche le librerie relative a OpenSSL. Attiviamo il modulo tramite

$ sudo a2enmod ssl

e riavviamo Apache per rendere effettivi i cambiamenti

$ sudo /etc/init.d/apache2 restart

Adesso è necessario generare il certificato e la relativa chiave: con la seguente sequenza, creeremo una directory apposita per contenere tali file e li creeremo tramite OpenSSL

$ sudo mkdir /etc/apache2/ssl
$ cd /etc/apache2/ssl
$ sudo openssl req -new -newkey rsa:2048 -keyout apachessl.pem -x509 -set_serial 1000 -days 365 -out apachessl.crt

Creiamo un file di configurazione per il sito con cui utilizzare SSL, in questo modo

$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

apriamo tale file

$ sudo nano /etc/apache2/sites-available/ssl

ed aggiungiamo le seguenti righe

NameVirtualHost *:443
<virtualhost *:443>
	SSLEngine On
	SSLCertificateFile   /etc/apache2/ssl/apachessl.crt
	SSLCertificateKeyFile /etc/apache2/ssl/apachessl.pem
</virtualhost>

Infine, apriamo il file /etc/apache2/ports.conf e, nel caso in cui non sia già presente, aggiungiamo la riga

Listen 443

Ti consigliamo anche