ngx_lua_waf
ngx_lua_waf è un firewall per applicazioni web basato su ngx_lua sviluppato quando sono entrato in Fun Travel.
Il codice è semplice e l'intenzione originale dello sviluppo è quella di utilizzare semplicità, alte prestazioni e leggerezza.
Ora è open source e rispetta la licenza MIT. Contiene le nostre regole di filtraggio. Se avete suggerimenti o volete fare fa, sentitevi liberi di migliorarli con me.
Utilizzi:
Prevenire attacchi web come iniezione SQL, inclusione locale, overflow parziale, fuzzing testing, xss, SSRF, ecc Prevenire la fuga di file come SVN/backup Prevenire attacchi da strumenti di stress test come ApacheBench Blocca strumenti comuni di scansione hacking, scanner Blocca richieste di rete insolite Blocca il permesso di esecuzione PHP della cartella allegata immagini Impedire il caricamento di webshell
Installazione consigliata:
Si consiglia di usare lujit2.1 per il supporto a Lua
ngx_lua se è una versione 0.9.2 o successiva, si consiglia di cambiare la funzione di filtro normale in ngx.re.find, e l'efficienza di matching sarà aumentata di circa tre volte.
Istruzioni per l'uso:
Il percorso di installazione nginx è assunto: /usr/local/nginx/conf/
Scarica il ngx_lua_waf nella directory conf, scomprimilo e chiamalo waf
Aggiungilo nella sezione http di nginx.conf
Configura la directory delle regole WAF in config.lua (di solito nella directory waf/conf/)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Se il percorso assoluto cambia, deve essere modificato di conseguenza
Poi riavvia nginx
Dettagli del profilo:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --directory di archiviazione delle regole Attacklog = "off" --Per abilitare la registrazione delle informazioni sugli attacchi, devi configurare logdir logdir = "/usr/local/nginx/logs/hack/" --directory di archiviazione log, che deve essere creata dallo stesso utente e richiede il permesso di scrittura dell'utente nginx UrlDeny="on" --se bloccare l'accesso agli URL Redirect="on" --se reindirizzare dopo l'intercettazione CookieMatch = "on" --Se bloccare gli attacchi ai biscoli postMatch = "on" --se bloccare un attacco post-attacco whiteModule = "on" --se attivare la whitelist degli URL black_fileExt={"php","jsp"} --Compila il tipo di suffisso file che non è consentito caricare ipWhitelist={"127.0.0.1"} --whitelist IP, più IP sono separati da virgole ipBlocklist={"1.0.0.1"} --Lista nera degli IP, più IP sono separati da virgole CCDeny="on" --Se abilitare l'intercettazione degli attacchi cc (richiede che il segmento HTTP di nginx.conf venga aumentato lua_shared_dict limite di 10m; ) CCrate = "100/60" --Imposta la frequenza di attacco CC in pochi secondi. --Per impostazione predefinita, lo stesso indirizzo IP può richiedere lo stesso indirizzo solo 100 volte al minuto html=[[Per favore, vattene~~]] --Contenuti di avviso, personalizzabili tra parentesi Nota: Non usare virgolette doppie per sensibilità alla maiuscola e alla fine
Controlla se le regole sono in vigore
Dopo il dispiegamento, puoi provare il seguente comando:
Nota: di default, la macchina non filtra nella whitelist, e puoi regolare la configurazione di config.lua da solo
Le rappresentazioni sono le seguenti:
Aggiornamenti delle regole:
Considerando il problema della cache dei regular, le regole dinamiche influenzano le prestazioni, quindi non uso dizionari a memoria condivisa e redis per la gestione dinamica.
Gli aggiornamenti delle regole possono essere applicati su altri server, e le regole possono essere aggiornate scaricandole regolarmente tramite il task crontab, e il ricaricamento nginx avrà effetto. Per garantire le alte prestazioni del NGX LUA WAF.
Registra solo il registro del filtro, non attivare il filtraggio, aggiungi solo un commento davanti a check nel codice, se devi filtrare, viceversa
Alcune note:
Le regole di filtraggio possono essere regolate in base alle tue esigenze sotto wafconf, e ogni regola deve essere avvolta o divisa con |
Le regole ARG ottengono il parametro al filtro Gli URL sono regole che richiedono solo URL filtrati in GET Post è una regola di filtraggio solo nelle richieste di post La whitelist è una whitelist, e gli URL in essa corrispondono in modo che non venga filtrata user-agent è una regola di filtraggio per user-agent
Il filtro get e post è abilitato di default, se devi abilitare il cookie filter, modifica la parte waf.lua cancella - commento
Il formato del nome del file di log è il seguente: Nome dell'host web _sec.log
|