ngx_lua_waf
ngx_lua_waf er en ngx_lua-basert webapplikasjonsbrannmur utviklet da jeg først begynte i Fun Travel.
Koden er enkel, og den opprinnelige hensikten med utviklingen er å bruke enkelhet, høy ytelse og lettvekt.
Den er nå åpen kildekode og oppfyller MIT-lisensen. Den inneholder våre filtreringsregler. Hvis du har noen forslag eller vil fa, er det bare å forbedre det sammen med meg.
Bruksområder:
Forhindre webangrep som SQL-injeksjon, lokal inkludering, delvis overflow, fuzzing-testing, xss, SSRF osv Forhindre fillekkasje som for eksempel SVN/backup Forhindre angrep fra stresstestverktøy som ApacheBench Blokker vanlige hackingverktøy for skanning, skannere Blokker uvanlige nettverksforespørsler Blokker PHP-kjøringstillatelsen til bildevedleggskatalogen Forhindre webshell-opplasting
Anbefalt installasjon:
Det anbefales å bruke lujit2.1 for lua-støtte
ngx_lua hvis det er en versjon 0.9.2 eller nyere, anbefales det å endre den vanlige filterfunksjonen til ngx.re.find, og matchingseffektiviteten vil øke omtrent tre ganger.
Bruksanvisning:
nginx-installasjonsstien antas å være: /usr/local/nginx/conf/
Last ned ngx_lua_waf til conf-katalogen, pakk den ut og kall den waf
Legg det til i http-seksjonen på nginx.conf
Konfigurer WAF-regelkatalogen i config.lua (vanligvis i waf/conf/-katalogen)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Hvis den absolutte banen endres, må den justeres deretter
Så starter nginx på nytt
Profildetaljer:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --regellagringskatalog Attacklog = "av" --For å aktivere logging av angrepsinformasjon må du konfigurere logdir logdir = "/usr/local/nginx/logs/hack/" --logglagringskatalog, som må opprettes av brukeren selv, og krever skrivetillatelse fra nginx-brukeren UrlDeny="on" --om man skal blokkere URL-tilgang Omdiriger="på" --om man skal omdirigere etter avskjæring CookieMatch = "på" --Om man skal blokkere informasjonskapselangrep postMatch = "på" --om man skal blokkere et postangrep whiteModule = "på" --om man skal slå på URL-hvitelisting black_fileExt={"php","jsp"} --Fyll inn fil-suffikstypen som ikke er tillatt å laste opp ipWhitelist={"127.0.0.1"} --IP-hviteliste, flere IP-adresser er adskilt med kommaer ipBlocklist={"1.0.0.1"} --IP-svarteliste, flere IP-adresser er adskilt med kommaer CCDeny="på" --Om man skal aktivere avskjæring av cc-angrep (krever at HTTP-segmentet i nginx.conf økes lua_shared_dict maks 10m; ) CCrate = "100/60" --Sett CC-angrepsfrekvensen på sekunder. --Som standard kan samme IP-adresse bare be om samme adresse 100 ganger per minutt html=[[Vær så snill, gå vekk~~]] --Advarselsinnhold, tilpassbar i parentes Merk: Ikke bruk doble anførselstegn for å være småbokstavssensitiv
Sjekk om reglene er i kraft
Etter utplassering kan du prøve følgende kommando:
Merk: Som standard filtrerer ikke maskinen i hvitelisten, og du kan justere config.lua-konfigurasjonen selv
Gjengivelsene er som følger:
Regeloppdateringer:
Med tanke på caching-problemet med vanlige spillere, påvirker dynamiske regler ytelsen, så jeg bruker ikke ting som delte minneordbøker og redis for dynamisk administrasjon.
Regeloppdateringer kan legges på andre servere, og reglene kan oppdateres ved å laste dem ned regelmessig via crontab-oppgaven, og nginx-omlastingen trer i kraft. For å sikre høy ytelse for NGX LUA WAF.
Registrer kun filterloggen, ikke slå på filtrering, bare legg til en -- kommentar foran sjekk i koden hvis du trenger å filtrere, omvendt
Noen notater:
Filtreringsreglene kan justeres etter dine behov under wafconf, og hver regel må pakkes inn eller deles med |
ARGS-regler får parameter til filter URL-er er regler som kun ber om URL-er filtrert i GET Innlegg er en filtreringsregel kun i innleggsforespørsler Hvitelisten er en hviteliste, og URL-ene i den samsvarer slik at den ikke blir filtrert User-Agent er en filtreringsregel for User-Agent
Get og post-filtrering er aktivert som standard, hvis du trenger å aktivere informasjonskapselfiltrering, rediger waf.lua cancel-delen - kommentar
Loggfilens navneformat er som følger: Web Host Name _sec.log
|