|
|
Opslået på 21/12/2016 16.51.51
|
|
|
|

ngx_lua_waf
ngx_lua_waf er en ngx_lua-baseret webapplikations-firewall, der blev udviklet, da jeg først startede med Fun Travel.
Koden er enkel, og den oprindelige hensigt med udviklingen er at bruge enkelhed, høj ydeevne og letvægt.
Det er nu open source og overholder MIT-licensen. Den indeholder vores filtreringsregler. Hvis du har forslag eller vil fege, er du velkommen til at forbedre det sammen med mig.
Anvendelser:
Forebyg webangreb såsom SQL-injektion, lokal inklusion, delvis overflow, fuzzing-test, xss, SSRF osv Forhindre fillækager som SVN/backup Forebyg angreb fra stresstest-værktøjer som ApacheBench Bloker almindelige scanningsværktøjer, scannere Blokér usædvanlige netværksforespørgsler Blokér PHP-eksekveringstilladelsen for billedvedhæftningsmappen Forebyg webshell-uploads
Anbefalet installation:
Det anbefales at bruge lujit2.1 til lua-support
ngx_lua hvis det er en version 0.9.2 eller nyere, anbefales det at ændre den almindelige filterfunktion til ngx.re.find, og matchningseffektiviteten vil blive øget cirka tre gange.
Brugsanvisninger:
nginx-installationsstien antages at være: /usr/local/nginx/conf/
Download ngx_lua_waf til conf-mappen, pak den ud og kald den waf
Tilføj det i http-sektionen på nginx.conf
Konfigurer WAF-regelmappen i config.lua (normalt i waf/conf/-mappen)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Hvis den absolutte sti ændres, skal den ændres tilsvarende
Så genstart nginx
Profiloplysninger:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --regellagringsmappe attacklog = "fra" --For at aktivere angrebsinformationslogning skal du konfigurere logdir logdir = "/usr/local/nginx/logs/hack/" --log storage-mappe, som skal oprettes af brugeren selv og kræver skrivetilladelse fra nginx-brugeren UrlDeny="on" --om man skal blokere URL-adgang Redirect="on" --om man skal omdirigere efter opsnapning CookieMatch = "på" --Om man skal blokere cookie-angreb postMatch = "på" --om man skal blokere et angreb på en stolpe whiteModule = "på" --om man skal slå URL-whitelisting til black_fileExt={"php","jsp"} --Udfyld fil-suffikstypen, som ikke må uploades ipWhitelist={"127.0.0.1"} --IP-whitelist, flere IP-adresser adskilles af kommaer ipBlocklist={"1.0.0.1"} --IP-sortliste, flere IP-adresser adskilles af kommaer CCDeny="på" --Om man skal aktivere opsnapning af cc-angreb (kræver at HTTP-segmentet i nginx.conf øges lua_shared_dict grænse 10m; ) CCrate = "100/60" --Sæt CC-angrebsfrekvensen på sekunder. --Som standard kan den samme IP-adresse kun anmode om den samme adresse 100 gange i minuttet html=[[Gå venligst væk~~]] --Advarselsindhold, tilpasseligt i parentes Bemærk: Brug ikke dobbelte anførselstegn for at være små bogstaver
Tjek om reglerne er gældende
Efter udrulning kan du prøve følgende kommando:
Bemærk: Som standard filtrerer maskinen ikke i whitelisten, og du kan selv justere config.lua-konfigurationen
Renderingerne er som følger:
Regelopdateringer:
I betragtning af caching-problemet med regulars, påvirker dynamiske regler ydeevnen, så jeg bruger ikke ting som delte hukommelsesordbøger og redis til dynamisk styring.
Regelopdateringer kan placeres på andre servere, og reglerne kan opdateres ved regelmæssigt at downloade dem via crontab-opgaven, og nginx-genindlæsningen træder i kraft. For at sikre NGX LUA WAF's høje ydeevne.
Optag kun filterloggen, slå ikke filtrering til, tilføj bare en -- kommentar foran tjek i koden, hvis du skal filtrere, omvendt
Nogle noter:
Filtreringsreglerne kan justeres efter dine behov under wafconf, og hver regel skal pakkes ind eller deles med |
ARGS-regler får parameter til filter URL'er er regler, der kun anmoder om URL'er filtreret i GET Indlæg er en filtreringsregel kun i opslagsanmodninger Whitelisten er en whitelist, og URL'erne i den matcher, så den ikke filtreres User-Agent er en filtreringsregel for User-Agent
Get og post-filtrering er aktiveret som standard, hvis du skal aktivere cookie-filtrering, rediger waf.lua cancel-delen - kommentar
Logfilens navneformat er som følger: Web Host Name _sec.log
|
Tidligere:Powershell kan ikke indlæse filer, når man scripter direkte, fordi scriptet er forbudtNæste:CMD /C og cmd /k forklares i detaljer
|