ngx_lua_waf
ngx_lua_waf ist eine ngx_lua-basierte Web-Anwendungs-Firewall, die ich entwickelte, als ich bei Fun Travel angefangen habe.
Der Code ist einfach, und die ursprüngliche Absicht der Entwicklung ist es, Einfachheit, hohe Leistung und Leichtigkeit zu nutzen.
Es ist jetzt Open Source und entspricht der MIT-Lizenz. Es enthält unsere Filterregeln. Wenn du Vorschläge hast oder dich erzählen möchtest, kannst du sie gerne mit mir verbessern.
Verwendungen:
Verhindern Sie Webangriffe wie SQL-Injektion, lokale Inklusion, teilweise Überlauf, Fuzzing-Tests, XSS, SSRF usw Verhindern Sie Dateileckage wie SVN/Backup Verhindern Sie Angriffe durch Stresstest-Tools wie ApacheBench Blockiere gängige Scanning-Hacking-Tools und Scanner Ungewöhnliche Netzwerkanfragen blockieren Blockieren Sie die PHP-Ausführungsberechtigung des Bildanhangsverzeichnisses Verhindern Sie Webshell-Uploads
Empfohlene Installation:
Es wird empfohlen, lujit2.1 für Lua-Unterstützung zu verwenden.
ngx_lua wenn es sich um eine Version 0.9.2 oder später handelt, wird empfohlen, die reguläre Filterfunktion auf ngx.re.find umzustellen, und die Anpassungseffizienz wird etwa um das Dreifache erhöht.
Anleitungen zur Verwendung:
Der nginx-Installationspfad wird angenommen: /usr/local/nginx/conf/
Lade das ngx_lua_waf in das conf-Verzeichnis herunter, entpacke es und nenne es waf
Füge es im http-Bereich von nginx.conf hinzu
Konfigurieren Sie das WAF-Regelverzeichnis in config.lua (meist im waf/conf/-Verzeichnis)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Wenn sich der absolute Pfad ändert, muss er entsprechend angepasst werden
Dann starte nginx neu
Profildetails:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --Regelspeicherverzeichnis attacklog = "aus" --Um die Erfassung von Angriffsinformationen zu ermöglichen, müssen Sie das Logdir konfigurieren logdir = "/usr/local/nginx/logs/hack/" --log storage directory, das vom Benutzer selbst erstellt werden muss und die Schreibberechtigung des nginx-Benutzers benötigt UrlDeny="on" --ob der URL-Zugriff blockiert werden soll Weiterleitung="an" --ob nach der Interception umgeleitet werden soll CookieMatch = "an" --Ob Cookie-Angriffe blockiert werden sollen postMatch = "an" --ob ein Angriff auf den Pfosten abgewehrt werden soll whiteModule = "an" --ob URL-Whitelisting aktiviert werden soll black_fileExt={"php","jsp"} --Fülle den Dateisuffixtyp aus, der nicht hochgeladen werden darf ipWhitelist={"127.0.0.1"} --IP-Whitelist, mehrere IPs sind durch Kommas getrennt ipBlocklist={"1.0.0.1"} --IP-Blacklist, mehrere IPs sind durch Kommas getrennt CCDeny="an" --Ob die Abfangung von CC-Angriffen aktiviert werden soll (erfordert die Erhöhung des HTTP-Segments von nginx.conf lua_shared_dict Limit 10m; ) CCrate = "100/60" --Stellen Sie die CC-Angriffsfrequenz in Sekunden ein. --Standardmäßig kann dieselbe IP-Adresse dieselbe Adresse nur 100 Mal pro Minute anfordern html=[[Bitte geh weg~~]] --Warninhalt, anpassbar in Klammern Hinweis: Verwenden Sie keine doppelten Anführungszeichen, um groß- und schreibabhängig zu sein
Überprüfe, ob die Regeln gelten
Nach dem Einsatz kannst du folgenden Befehl ausprobieren:
Hinweis: Standardmäßig filtert die Maschine nicht in der Whitelist, und du kannst die config.lua-Konfiguration selbst anpassen
Die Darstellungen sind wie folgt:
Regel-Updates:
Angesichts des Caching-Problems von regulären Speichern beeinflussen dynamische Regeln die Leistung, daher nutze ich keine Wörterbücher wie geteilten Speicherwörterbücher und Redis für dynamisches Management.
Regel-Updates können auf anderen Servern platziert werden, und die Regeln können durch regelmäßiges Herunterladen über die Crontab-Aufgabe aktualisiert werden, und das nginx-Reload tritt dann in Kraft. Um die hohe Leistung von NGX LUA WAF zu gewährleisten.
Speichern Sie nur das Filterprotokoll, schalten Sie das Filtern nicht ein, fügen Sie einfach einen -- Kommentar vor den Code ein, falls Sie filtern müssen, umgekehrt
Einige Anmerkungen:
Die Filterregeln können unter Wafconf entsprechend deinen Bedürfnissen angepasst werden, und jede Regel muss mit | gewickelt oder geteilt werden.
ARGS-Regeln erhalten Parameter zum Filter URLs sind Regeln, die nur URLs anfordern, die in GET gefiltert werden Beitrag ist eine Filterregel, die nur bei Beitragsanfragen verwendet wird Die Whitelist ist eine Whitelist, und die darin enthaltenen URLs stimmen überein, sodass sie nicht gefiltert wird User-Agent ist eine Filterregel für User-Agent
Get und Post-Filterung sind standardmäßig aktiviert, wenn du Cookie-Filterung aktivieren musst, bearbeite den waf.lua-Cancel-Teil – Kommentar
Das Format des Logdateinamens ist wie folgt: Web-Host-Name _sec.log
|