ngx_lua_waf
ngx_lua_waf egy ngx_lua-alapú webalkalmazás-tűzfal, amit akkor fejlesztettek ki, amikor először csatlakoztam a Fun Travelhez.
A kód egyszerű, és a fejlesztés eredeti célja az egyszerűség, a nagy teljesítmény és a könnyű teljesítmény használata.
Jelenleg nyílt forráskódú, és megfelel az MIT licencének. Tartalmazza a szűrési szabályainkat. Ha van bármilyen javaslatod vagy szeretne fa-t csinálni, nyugodtan javíts velem.
Felhasználás:
Megakadályozzuk a webes támadásokat, mint az SQL beinjekció, helyi befogadás, részleges túlcsordulás, fuzzing tesztelés, xss, SSRF stb A fájlszivárgás, például az SVN/biztonsági mentés megelőzése Megelőzés a stressztesztelő eszközök, például az ApacheBench támadásai Blokkold a gyakori szkennelő hackelési eszközöket, szkennereket Szokatlan hálózati kérések blokkolása Blokkolja a képcsatolmány könyvtár PHP végrehajtási engedélyét Webshell feltöltések megakadályozása
Ajánlott telepítés:
Ajánlott a lujit2.1 használata lua támogatásra
ngx_lua ha 0.9.2 vagy újabb verzióról van szó, ajánlott a normál szűrő függvényt ngx.re.find formátumra cserélni, így a párosítás hatékonysága körülbelül háromszor nő.
Használati utasítások:
Az nginx telepítési útvonal feltételezése: /usr/local/nginx/conf/
Töltsd le a ngx_lua_waf a konferencia könyvtárba, nyitd ki, és nevezd el WAF-nak
Add hozzá a nginx.conf http szekciójához
Konfiguráld a WAF szabálykönyvtárat a config.lua (általában a waf/conf/ könyvtárban)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Ha az abszolút út megváltozik, ennek megfelelően kell módosítani
Aztán indítsd újra, nginxet
Profil részletek:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --szabálytároló könyvtár attacklog = "kikapcsolva" --A támadási információs naplózás engedélyezéséhez be kell állítani a logdirt logdir = "/usr/local/nginx/logs/hack/" --log tároló könyvtár, amelyet a felhasználónak kell létrehoznia, és amely az nginx felhasználó írási engedélyét igényli UrlDeny="on" --hogy blokkoljuk-e az URL-hozzáférést Átirányítás="on" --hogy átirányítsák-e az interception után CookieMatch = "bekapcsolva" --Hogy blokkoljuk-e a süti támadásokat postMatch = "on" --hogy blokkoljanak-e egy támadás utáni támadást whiteModule = "bekapcsolva" --hogy bekapcsoljuk-e az URL fehérlistát black_fileExt={"php","jsp"} --Töltse ki azt a fájl utótagtípust, amely nem feltölthető ipWhitelist={"127.0.0.1"} --IP fehérlistája, több IP-t vesszővel választanak el ipBlocklist={"1.0.0.1"} --IP feketelista, több IP-t vesszővel választanak el CCDeny="on" --Engedélyezni-e a cc támadások elfogását (megköveteli, hogy a nginx.conf HTTP szegmensét növelni lua_shared_dict 10 méteres korlátozást; ) CCrate = "100/60" --Állítsd be a CC támadás frekvenciáját másodpercek alatt. --Alapértelmezés szerint ugyanaz az IP-cím csak 100 alkalommal kérheti ugyanazt a címet percenként html=[[Kérlek, menj el~~]] --Figyelmeztető tartalom, testreszabható zárójelben Megjegyzés: Ne használj dupla idézőjelet a kis- és nagybetűérzékeny karakter érdekében
Ellenőrizd, hogy a szabályok érvényesek-e
Telepítés után kipróbálhatod a következő parancsot:
Megjegyzés: Alapértelmezés szerint a gép nem szűri a fehérlistát, és a config.lua konfigurációt magad is állíthatod be
A képek a következők:
Szabályfrissítések:
Figyelembe véve a rendszeres gyorsítótára-problémát, a dinamikus szabályok befolyásolják a teljesítményt, ezért nem használok olyan dolgokat, mint a közös memória szótárakat és a redis rendszereket dinamikus menedzsmenthez.
A szabályfrissítéseket más szerverekre is telepíthetjük, és a szabályokat rendszeresen letöltöd a crontab feladaton keresztül, így az nginx újratöltés is érvényesül. Az NGX LUA WAF magas teljesítményének biztosítása érdekében.
Csak a szűrőnaplót rögzítsd, ne kapcsold be a szűrést, csak írj hozzá egy hozzászólást a kód ellenőrzése előtt, ha szűrni kell, fordítva
Néhány megjegyzés:
A szűrési szabályokat a wafconf igényeid szerint lehet módosítani, és minden szabályt be kell csomagolni vagy szétválasztani a |
ARGS szabályok paramétert szűrőznek Az URL-ek olyan szabályok, amelyek csak a GET-ben szűrt URL-eket kérnek A bejegyzés csak a bejegyzéskérésekben szűrési szabály A fehérlista fehérlista, és az URL-ek megegyeznek, így nem szűrik user-agent egy szűrőszabály a user-agent számára
A Get és a poszt szűrés alapértelmezetten engedélyezve, ha engedélyezni kell a cookie szűrést, szerkessd a waf.lua cancel részt - komment
A naplófájl név formátuma a következő: Web Host Név _sec.log
|