Come mettere in sicurezza un server Web con Modsecurity 2.5

Mer, 05/03/2008 - 18:05

Come mettere in sicurezza un server Web con Modsecurity 2.5

Inviato da paolo 0 commenti

La sicurezza è uno degli aspetti fondamentali che un buon sistemista non deve assolutamente trascurare, sopratutto per quanto riguarda tutti quei servizi esposti pubblicamente sulla rete, primo tra tutti il server Web.

Lo scopo di questa guida è dunque, cercare di trovare un compromesso tra affidabilità prestazioni e sicurezza, per far girare i nostri applicativi sulla rete (CMS, Blog, CRM, Script di ogni tipo..) cercando di impedire o almeno di arginare i classici attacchi del tipo XSS, SQL Injection, Code Injection, Trojan, Spambot ed Exploit di ogni tipo.

Per prima cosa installaremo il nuovo Modsecurity 2.5, pieno zeppo di novità, vi rimando direttamente al link per maggiori informazioni, cosi da filtrare granparte degli attacchi a livello Session (che per lo standard ISO/OSI corrisponde al livello 5) quindi direttamente da Apache2.

Installazione

:

Per iniziare installiamo le librerie necessarie a mod-security2:

apt-get install libxml2-dev liblua5.1-0 lua5.1 apache2-threaded-dev

Ora possiamo scaricare, decomprimere ed installare l'applicazione:

cd /tmp
wget http://www.modsecurity.org/download/modsecurity-apache_2.5.0.tar.gz
tar zxf modsecurity-apache_2.5.0.tar.gz
cd modsecurity-apache_2.5.0/apache2
./configure && make && make install

Se la compilaione è andata a buon fine, trovete la libreria in /usr/lib/apache2/modules/mod_security2.so

Configurazione

:

Ora passiamo alla fase di configurazione di Apache2, prima di tutto dobbiamo creare il file di configurazione del modulo, per far caricare mod-security2 all'avvio del server Web

Creare il file: /etc/apache2/mods-available/mod-security2.load

Con un qualsiasi editor aggiungete le seguenti righe al file:

LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so.0
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

Ora non resta che abilitare il modulo, usando i tool di Apache:

a2enmod mod-security2
a2enmod unique-id
Il modulo Unique_id è indispensabile per il funzionamento di mod-security2 quindi bisogna necessariamente abilitarlo, viene fornito con la normale distribuzione di apache

A questo punto dobbiamo istruire Apache su quali regole di mod-security caricare e dove trovare i file, quindi creiamo il file: /etc/apache2/conf.d/mod-security2.conf con questo contenuto:

Include /etc/modsecurity2/*.conf

In questo modo Apache caricherà i file di configurazione con le regole di Modsec2 solamente se è abilitato, per coerenza con il layout standard del FS conviene salvare le regole in /etc, ma nulla vieta di scegliere il path più opportuno per le vostre esigenze.

Quindi bisogna creare le directory necessarie:

mkdir /etc/modsecurity2
mkdir /etc/modsecurity2/logs
touch /etc/modsecurity2/logs/modsec_audit.log
touch /etc/modsecurity2/logs/modsec_debug.log

Ora copiamo le regole "core" gia fornite con il package:

cp /tmp/modsecurity-apache_2.5.0/rules/*.conf /etc/modsecurity

Arrivati a questo punto, abbiamo ancora bisogno di fare un'altra piccola modifica al file /etc/modsecurity2/modsecurity_crs_10_config.conf, modificando:

SecDebugLog logs/modsec_debug.log
SecAuditLog logs/modsec_audit.log

in


SecDebugLog /etc/modsecurity/logs/modsec_debug.log
SecAuditLog /etc/modsecurity/logs/modsec_audit.log

Finito! Ora possiamo riavviare Apache2 e controllare che tutto funziona correttamente:

invoke-rc.d apache2 restart

Per controllare se Modsecurity è stato caricato correttamente:

pcat /var/log/apache2/error.log | grep "ModSecurity"
[Wed Mar 05 15:26:12 2008] [notice] ModSecurity for Apache/2.5.0- (http://www.modsecurity.org/) configured.

Se avete questo Output allora l'installazione è andata a buon fine.

Conclusione

:

A questo punto, non vi resta che leggervi la documentazione ufficiale:

http://www.modsecurity.org/documentation/index.html

Ed iniziare a sviluppare dalle regole base che abbiamo copiato, delle regole che meglio si adattano alle vostre applicazioni.

Ritengo che Modsecurity sia un un modulo fondamentale che non debba mai mancare su dei server in produzione, sopratutto quando sui server ci sono molti Virtualhost con script di ogni tipo che per natura possono avere gravi problemi di sicurezza che possono compromettere l'intero sistema.

Extra:

In /tmp/modsecurity-apache_2.5.0/rules/optional_rules trovete altre regole.
Qui http://gotroot.com/ invece si possono trovare tante altre regole e molta documentazione.

Riferimenti:
http://www.vinno.net/linux/server/how-to-install-mod-security-2
http://gotroot.com/