ngx_lua_waf
ngx_lua_waf is een webapplicatie-firewall op basis van ngx_lua, ontwikkeld toen ik voor het eerst bij Fun Travel begon.
De code is eenvoudig, en het oorspronkelijke doel van de ontwikkeling is om eenvoud, hoge prestaties en lichtgewicht te gebruiken.
Het is nu open source en voldoet aan de MIT-licentie. Het bevat onze filterregels. Als je suggesties hebt of wilt fa'en, voel je vrij om het met mij te verbeteren.
Toepassingen:
Voorkom webaanvallen zoals SQL-injectie, lokale inclusie, gedeeltelijke overflow, fuzzing-testen, xss, SSRF, enzovoort Voorkom het lekken van bestanden zoals SVN/back-up Voorkom aanvallen door stresstesttools zoals ApacheBench Blokkeer veelgebruikte scan-hacktools, scanners Blokkeer ongebruikelijke netwerkverzoeken Blokkeer de PHP-uitvoeringstoestemming van de image attachment-map Voorkom webshell-uploads
Aanbevolen installatie:
Het wordt aanbevolen om lujit2.1 te gebruiken voor lua-ondersteuning
ngx_lua als het een versie 0.9.2 of later is, wordt aanbevolen de reguliere filterfunctie te wijzigen naar ngx.re.find, en de matchingsefficiëntie wordt ongeveer drie keer verhoogd.
Gebruiksaanwijzingen:
Het nginx-installatiepad wordt verondersteld te zijn: /usr/local/nginx/conf/
Download de ngx_lua_waf naar de conf-directory, pak het uit en noem het waf
Voeg het toe in de http-sectie van nginx.conf
Configureer de WAF-regelmap in config.lua (meestal in de waf/conf/directory)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Als het absolute pad verandert, moet het dienovereenkomstig worden aangepast
Begin dan nginx opnieuw
Profielgegevens:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --regelgeheugenmap attacklog = "uit" --Om het loggen van aanvalsinformatie mogelijk te maken, moet je een logdir configureren logdir = "/usr/local/nginx/logs/hack/" --log storage directory, die door de gebruiker zelf moet worden aangemaakt, en waarvoor de schrijfrechten van de nginx-gebruiker nodig zijn UrlDeny="aan" --of URL-toegang geblokkeerd moet worden Redirect="aan" --of er na onderschepping omgeleid moet worden CookieMatch = "aan" --Of cookie-aanvallen geblokkeerd moeten worden postMatch = "aan" --of een postaanval moet worden geblokkeerd whiteModule = "aan" --of URL-whitelisting wordt ingeschakeld black_fileExt={"php","jsp"} --Vul het bestandsachtervoegsel in dat niet mag worden geüpload ipWhitelist={"127.0.0.1"} --IP-whitelist, meerdere IP-adressen worden gescheiden door komma's ipBlocklist={"1.0.0.1"} --IP-blacklist, meerdere IP-adressen worden gescheiden door komma's CCDeny="aan" --Of het onderscheppen van cc-aanvallen wordt ingeschakeld (vereist dat het HTTP-segment van nginx.conf wordt verhoogd lua_shared_dict limiet 10m; ) CCrate = "100/60" --Stel de CC-aanvalfrequentie in in seconden. --Standaard kan hetzelfde IP-adres hetzelfde adres slechts 100 keer per minuut opvragen html=[[Ga alsjeblieft weg~~]] --Waarschuwingsinhoud, aanpasbaar tussen haakjes Opmerking: Gebruik geen dubbele aanhalingstekens om hoofdlettergevoelig te zijn
Controleer of de regels van kracht zijn
Na de uitrol kun je het volgende commando proberen:
Opmerking: Standaard filtert de machine niet in de whitelist, en kun je de config.lua-configuratie zelf aanpassen
De weergaven zijn als volgt:
Regelupdates:
Gezien het cachingprobleem van reguliere spellen, beïnvloeden dynamische regels de prestaties, dus gebruik ik geen dingen als gedeelde geheugenwoordenboeken en redis voor dynamisch beheer.
Regelupdates kunnen op andere servers worden geplaatst, en de regels kunnen worden bijgewerkt door ze regelmatig te downloaden via de crontab-taak, waarna de nginx-herlaad van kracht wordt. Om de hoge prestaties van NGX LUA WAF te waarborgen.
Noteer alleen het filterlogboek, zet filtering niet aan, voeg alleen een -- opmerking toe om in de code te controleren, als je moet filteren, en andersom
Enkele opmerkingen:
De filterregels kunnen worden aangepast aan je behoeften onder wafconf, en elke regel moet worden gewrapped of gesplitst met |
ARGS-regels krijgen parameter om te filteren URL's zijn regels die alleen URL's opvragen die gefilterd zijn in GET Bericht is een filterregel alleen bij postverzoeken De whitelist is een whitelist, en de URL's erin komen overeen zodat deze niet gefilterd wordt User-Agent is een filterregel voor user-agent
Get en post filtering zijn standaard ingeschakeld, als je cookie-filtering moet inschakelen, bewerk dan het waf.lua cancel-gedeelte - reactie
Het formaat van de logbestandsnaam is als volgt: Web Host Name _sec.log
|