
ModSecurity è un motore open source e multipiattaforma per firewall di applicazioni web (WAF) per Apache, IIS e Nginx. Dispone di un robusto linguaggio di programmazione basato su eventi che fornisce protezione da una serie di attacchi contro le applicazioni web e consente il monitoraggio del traffico HTTP, la registrazione e l'analisi in tempo reale.
Libmodsecurity è uno dei componenti del progetto ModSecurity v3. Il codice della libreria funge da interfaccia per i ModSecurity Connectors, ricevendo il traffico web e applicando l'elaborazione tradizionale di ModSecurity. In generale, fornisce la capacità di caricare/interpretare regole scritte nel formato ModSecurity SecRules e di applicarle al contenuto HTTP fornito dalla tua applicazione tramite i Connectors.
Se stai cercando ModSecurity per Apache (noto anche come ModSecurity v2.x), è ancora in manutenzione e disponibile: qui.
Libmodsecurity è una riscrittura completa della piattaforma ModSecurity. Quando fu ideato, il progetto ModSecurity nacque semplicemente come modulo Apache. Nel tempo il progetto è stato esteso, a causa della forte richiesta, per supportare altre piattaforme tra cui (ma non solo) Nginx e IIS. Per soddisfare la crescente domanda di supporto per ulteriori piattaforme, è diventato necessario rimuovere le dipendenze da Apache alla base di questo progetto, rendendolo più indipendente dalla piattaforma.
Come risultato di questo obiettivo abbiamo riprogettato l'architettura di Libmodsecurity in modo che non dipenda più dal web server Apache (sia in fase di compilazione che durante l'esecuzione). Un effetto collaterale di ciò è che su tutte le piattaforme gli utenti possono aspettarsi prestazioni migliori. Inoltre, abbiamo colto l'occasione per gettare le basi di alcune nuove funzionalità che gli utenti richiedevano da tempo. Ad esempio, puntiamo a supportare nativamente gli auditlog in formato JSON, insieme a una serie di altre funzionalità nelle versioni future.
Il branch 'ModSecurity' non contiene più la tradizionale logica del modulo (per Nginx, Apache e IIS) che veniva tradizionalmente distribuita tutta insieme. Invece, questo branch contiene solo la porzione di libreria (libmodsecurity) di questo progetto. Questa libreria viene utilizzata da quelli che abbiamo chiamato 'Connectors': questi connector si interfacciano con il tuo webserver e forniscono alla libreria un formato comune che essa comprende. Ciascuno di questi connector è mantenuto come progetto GitHub separato. Ad esempio, il connector Nginx è fornito dal progetto ModSecurity-nginx (https://github.com/owasp-modsecurity/ModSecurity-nginx).
Mantenere separati questi connector consente a ciascun progetto di avere cicli di rilascio, issue e alberi di sviluppo differenti. Inoltre, significa che quando installi ModSecurity v3 ottieni esattamente ciò di cui hai bisogno, senza extra che non utilizzerai.
Prima di iniziare il processo di compilazione, assicurati che tutte le dipendenze richieste siano installate.
Consulta le sezioni Dipendenze e Sottomoduli Git per ulteriori informazioni.
Dopo la compilazione, assicurati che non ci siano problemi sulla tua build/piattaforma.
Consigliamo vivamente di eseguire gli unit test e i test di regressione. Queste utilità di test si trovano nella sottocartella tests/.
In quanto libreria dinamica, libmodsecurity deve essere installata in una posizione in cui il tuo sistema operativo possa trovare le librerie dinamiche.
Sui sistemi Unix-like, il progetto utilizza autotools per il processo di compilazione.
Se stai lavorando con un checkout git, assicurati di clonare il repository in modo ricorsivo o di inizializzare tutti i sottomoduli prima della build.
Vedi anche la sezione Sottomoduli Git.
git clone https://github.com/owasp-modsecurity/ModSecurity ModSecurity
cd ModSecurity
Questo repository utilizza i sottomoduli git. Dopo la clonazione, assicurati di inizializzare e recuperare tutti i sottomoduli:
git submodule update --init --recursive
Puoi verificare che tutti i sottomoduli siano inizializzati correttamente con:
git submodule status
I sottomoduli inizializzati correttamente mostrano un hash di commit.
Un - iniziale indica che il sottomodulo non è stato inizializzato.
È quindi possibile avviare il processo di build:
./build.sh
./configure
make
sudo make install
I dettagli sulle build specifiche per distribuzione sono disponibili nella nostra Wiki: Compilation Recipes
Le informazioni sulla build per Windows sono disponibili qui.
Regex (src/utils/regex.*).@rx, @rxGlobal e @verifyCC.