
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. La base di codice della libreria funge da interfaccia per i connettori ModSecurity, ricevendo il traffico web e applicando l'elaborazione tradizionale di ModSecurity. In generale, fornisce la capacità di caricare/interpretare le regole scritte nel formato SecRules di ModSecurity e di applicarle ai contenuti HTTP forniti dalla tua applicazione tramite i connettori.
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 è stato concepito per la prima volta, il progetto ModSecurity è nato come un semplice modulo Apache. Nel corso del tempo, per richiesta popolare, il progetto è stato esteso per supportare altre piattaforme, incluse (ma non solo) Nginx e IIS. Per soddisfare la crescente domanda di supporto per piattaforme aggiuntive, è diventato necessario rimuovere le dipendenze da Apache alla base di questo progetto, rendendolo più indipendente dalla piattaforma.
Come risultato di questo obiettivo, abbiamo riprogettato Libmodsecurity in modo che non dipenda più dal server web Apache (sia in fase di compilazione che durante l'esecuzione). Un effetto collaterale è che su tutte le piattaforme gli utenti possono aspettarsi prestazioni migliori. Inoltre, abbiamo colto l'occasione per gettare le basi per alcune nuove funzionalità che gli utenti desiderano da tempo. Ad esempio, intendiamo supportare nativamente i log di audit in formato JSON, insieme a molte altre funzionalità nelle versioni future.
La branch 'ModSecurity' non contiene più la logica modulare tradizionale (per Nginx, Apache e IIS) che era sempre stata pacchettizzata insieme. Questa branch contiene invece solo la parte di libreria (libmodsecurity) del progetto. Questa libreria viene utilizzata da quelli che abbiamo chiamato 'Connector'; questi connettori si interfacciano con il tuo server web e forniscono alla libreria un formato comune che essa comprende. Ciascuno di questi connettori è mantenuto come progetto GitHub separato. Ad esempio, il connettore Nginx è fornito dal progetto ModSecurity-nginx (https://github.com/owasp-modsecurity/ModSecurity-nginx).
Mantenere separati questi connettori consente a ciascun progetto di avere cicli di rilascio, issue e rami di sviluppo diversi. 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.
Vedi la sezione Dipendenze e Sottomoduli Git per ulteriori informazioni.
Dopo la compilazione, assicurati che non ci siano problemi nella tua build/piattaforma.
Ti consigliamo vivamente di eseguire i test unitari e i test di regressione. Queste utility di test si trovano nella sottocartella tests/.
Come libreria dinamica, libmodsecurity deve essere installata in una posizione in cui il tuo sistema operativo possa trovare le librerie dinamiche.
Sui sistemi di tipo Unix, 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 di compilare.
Vedi anche la sezione Sottomoduli Git.
git clone https://github.com/owasp-modsecurity/ModSecurity ModSecurity
cd ModSecurity
Questo repository utilizza 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.
Puoi quindi avviare il processo di compilazione:
./build.sh
./configure
make
sudo make install
Dettagli sulla compilazione specifici per distribuzione sono disponibili nella nostra Wiki: Ricette di compilazione
Le informazioni sulla compilazione in Windows sono disponibili qui.
L'elaborazione delle espressioni regolari in SecRules è implementata tramite l'utility Regex (src/utils/regex.*).
Di default, ModSecurity utilizza PCRE2 per la gestione delle regex.
Viene utilizzato da operatori come @rx, @rxGlobal e @verifyCC.
Comportamento in fase di compilazione:
--with-pcre viene fornito esplicitamente (WITH_PCRE).In altre parole, le build attuali si aspettano PCRE2 a meno che non sia configurato diversamente.
Tutte le altre dipendenze sono legate a operatori specificati nelle SecRules o a direttive di configurazione e potrebbero non essere richieste per la compilazione.
libinjection è richiesta per gli operatori @detectXSS e @detectSQL.curl è richiesta per la direttiva SecRemoteRules.Se queste librerie mancano, ModSecurity verrà compilato senza supporto per i rispettivi operatori o direttive.
Il repository include i seguenti sottomoduli:
others/libinjection – utilizzato dagli operatori @detectSQLi e @detectXSS.
others/mbedtls (sottoinsieme TF-PSA-Crypto) – utilizzato per funzioni crittografiche e utility (es. hashing, base64).