ngx_lua_waf
ngx_lua_waf este un firewall de aplicații web bazat pe ngx_lua, dezvoltat când m-am alăturat pentru prima dată Fun Travel.
Codul este simplu, iar intenția inițială a dezvoltării este să folosească simplitate, performanță ridicată și ușurință.
Acum este open source și respectă licența MIT. Conține regulile noastre de filtrare. Dacă ai sugestii sau vrei să faci fa, te rog să o îmbunătățești cu mine.
Utilizări:
Prevenirea atacurilor web precum injecția SQL, includerea locală, overflow parțial, testarea fuzzing-ului, xss, SSRF etc Prevenirea scurgerii de fișiere, cum ar fi SVN/backup Previne atacurile de la instrumente de testare a stresului precum ApacheBench Blochează instrumentele comune de hacking pentru scanare, scanere Blochează cererile neobișnuite de rețea Blochează permisiunea de execuție PHP a directorului de atașament de imagini Preveniți încărcarea webshell
Instalare recomandată:
Se recomandă utilizarea lujit2.1 pentru suport lua
ngx_lua dacă este versiunea 0.9.2 sau ulterioară, se recomandă schimbarea funcției normale de filtrare în ngx.re.find, iar eficiența potrivirii va fi mărită de aproximativ trei ori.
Instrucțiuni de utilizare:
Se presupune că calea de instalare nginx este: /usr/local/nginx/conf/
Descarcă ngx_lua_waf în directorul conf, decomprimă-l și numește-l waf
Adaugă-l în secțiunea http a nginx.conf
Configurează directorul de reguli WAF în config.lua (de obicei în directorul waf/conf/)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Dacă calea absolută se schimbă, trebuie modificată corespunzător
Apoi repornește nginx
Detalii despre profil:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --director de stocare a regulilor Jurnalul atacurilor = "Off" --Pentru a activa înregistrarea informațiilor de atac, trebuie să configurezi logdir logdir = "/usr/local/nginx/logs/hack/" --director de stocare a logurilor, care trebuie creat chiar de utilizator și necesită permisiunea de scriere a utilizatorului nginx UrlDeny="on" --dacă să blocheze accesul la URL Redirect="on" --dacă să redirecționeze după interceptare CookieMatch = "pornit" --Dacă să blocheze atacurile cu cookie-uri postMatch = "on" --dacă să blocheze un atac post-atac whiteModule = "pornit" --dacă să activezi lista albă a URL-urilor black_fileExt={"php","jsp"} --Completează tipul sufixului fișierului care nu este permis să fie încărcat ipWhitelist={"127.0.0.1"} --lista albă IP, mai multe IP-uri sunt separate prin virgule ipBlocklist={"1.0.0.1"} --Lista neagră de IP, mai multe IP-uri sunt separate prin virgule CCDeny="on" --Dacă să se activeze interceptarea atacurilor CC (presupune creșterea segmentului HTTP al nginx.conf lua_shared_dict limita de 10m; ) CCrate = "100/60" --Setează frecvența atacului CC în câteva secunde. --Implicit, aceeași adresă IP poate solicita aceeași adresă doar de 100 de ori pe minut html=[[Te rog, pleacă~~]] --Conținut de avertizare, personalizabil între paranteze Notă: Nu folosiți ghilimele duble pentru a fi sensibil la majuscule
Verifică dacă regulile sunt în vigoare
După implementare, poți încerca următoarea comandă:
Notă: Implicit, mașina nu filtrează în lista albă și poți ajusta singur configurația config.lua
Randările sunt următoarele:
Actualizări de reguli:
Având în vedere problema cache-ului regulatelor, regulile dinamice afectează performanța, așa că nu folosesc dicționare cu memorie partajată și redis pentru managementul dinamic.
Actualizările regulilor pot fi plasate pe alte servere, iar regulile pot fi actualizate descărcându-le regulat prin sarcina crontab, iar reîncărcarea nginx va intra în vigoare. Pentru a asigura performanța ridicată a NGX LUA WAF.
Înregistrează doar jurnalul de filtrare, nu activa filtrarea, doar adaugă un comentariu înainte de a verifica în cod, dacă trebuie să filtrezi, invers
Câteva observații:
Regulile de filtrare pot fi ajustate în funcție de nevoile tale în wafconf, iar fiecare regulă trebuie să fie împachetată sau împărțită cu |
Regulile args obțin parametrii la filtrare URL-urile sunt reguli care solicită doar URL-uri filtrate în GET Postarea este o regulă de filtrare doar în cererile de postare Lista albă este o listă albă, iar URL-urile din ea se potrivesc, astfel încât nu este filtrată user-agent este o regulă de filtrare pentru user-agent
Filtrarea Get și a postărilor sunt activate implicit, dacă trebuie să activezi filtrarea cookie-urilor, editează partea waf.lua cancel - comentează
Formatul numelui fișierului de jurnal este următorul: Numele gazdei web _sec.log
|