ngx_lua_waf
ngx_lua_waf, Fun Travel'a ilk katıldığımda geliştirilen ngx_lua tabanlı bir web uygulama güvenlik duvarı.
Kod basit ve geliştirmenin asıl amacı sadelik, yüksek performans ve hafif bir özellik kullanmaktır.
Artık açık kaynaklıdır ve MIT lisansına uygundur. Filtreleme kurallarımızı içeriyor. Herhangi bir öneriniz varsa veya fa'yı yapmak isterseniz, lütfen benimle birlikte geliştirmekten çekinmeyin.
Kullanımlar:
SQL enjeksiyonu, yerel dahil etme, kısmi taşma, fuzzing testi, xss, SSRF gibi web saldırılarını önleyin SVN/yedekleme gibi dosya sızıntılarını önlemek ApacheBench gibi stres testi araçlarının saldırılarını önleyin Yaygın tarama hackleme araçları, tarayıcıları engelle Alışılmadık ağ taleplerini engelle Resim ek dizininin PHP yürütme iznini engelle Webshell yüklemelerini önleyin
Önerilen Kurulum:
Lua desteği için lujit2.1 kullanılması önerilir
ngx_lua 0.9.2 veya daha yeni bir versiyonsa, normal filtre fonksiyonunun ngx.re.find olarak değiştirilmesi önerilir ve eşleştirme verimliliği yaklaşık üç kat artırılır.
Kullanım talimatları:
nginx kurulum yolu şu şekilde varsayılır: /usr/local/nginx/conf/
ngx_lua_waf konferması dizinine indirin, fermuarını açın ve ona waf adını verin
nginx.conf'un http bölümüne ekle
config.lua'da (genellikle waf/conf/ dizininde) WAF kural dizinini yapılandırın.
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Mutlak yol değişirse, buna göre değiştirilmelidir
Sonra nginx'i yeniden başlat
Profil Detayları:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --rule depolama dizini attacklog = "kapalı" --Saldırı bilgi kaydını etkinleştirmek için logdir yapılandırmanız gerekir logdir = "/usr/local/nginx/logs/hack/" --log depolama dizini, kullanıcının kendisi tarafından oluşturulması gerekir ve nginx kullanıcısının yazma iznini gerektirir UrlDeny="on" --URL erişimini engelleyip engellemek Yönlendirme="açık" --müdahaleden sonra yönlendirilip yönlendirilmeyeceği CookieMatch = "açık" --Kurabiye saldırılarını engelleyip engellemek mi postMatch = "on" --saldırı sonrası bir engel olup olmadığı whiteModule = "açık" --URL beyaz listesini açıp açmamalı mıyız black_fileExt={"php","jsp"} --Yüklenmesine izin verilmeyen dosya eki türünü doldurun ipWhitelist={"127.0.0.1"} --IP beyaz liste, birden fazla IP virgülle ayrılır ipBlocklist={"1.0.0.1"} --IP kara liste, birden fazla IP virgülle ayrılır CCDeny="on" --CC saldırılarının engellenmesinin mümkün olup olmadığı (nginx.conf'un HTTP segmentinin 10m sınırı lua_shared_dict artırılması gerekir; ) CCrate = "100/60" --CC saldırı frekansını saniyeler içinde ayarlayın. --Varsayılan olarak, aynı IP adresi aynı adresi dakikada sadece 100 kez talep edebilir html=[[Lütfen git~~]] --Uyarı içeriği, parantez içinde özelleştirilebilir Not: Çift tırnak işareti kullanarak büyük harf hassasiyeti için kullanmayın
Kuralların yürürlüğünü kontrol edin
Konuşlandırmadan sonra aşağıdaki komutu deneyebilirsiniz:
Not: Varsayılan olarak, makine beyaz listede filtre yapmaz ve config.lua yapılandırmasını kendiniz ayarlayabilirsiniz
Çizimler aşağıdaki gibidir:
Kural Güncellemeleri:
Düzenli bireylerin önbellek sorununu göz önünde bulundurursak, dinamik kurallar performansı etkiler, bu yüzden dinamik yönetim için paylaşılan bellek sözlükleri ve redis gibi şeyleri kullanmıyorum.
Kural güncellemeleri diğer sunuculara yerleştirilebilir ve kurallar düzenli olarak crontab görevi üzerinden indirilerek güncellenebilir, böylece nginx yeniden yükleme devreye girer. NGX LUA WAF'ın yüksek performansını sağlamak için.
Sadece filtre kaydını kaydet, filtrelemeyi açma, sadece kodun önüne bir -- yorum ekleyin, filtreleme gerekirse tam tersi
Bazı notlar:
Filtreleme kuralları wafconf altında ihtiyaçlarınıza göre ayarlanabilir ve her kural |
args kuralları parametreyi filtreye alır URL'ler, yalnızca GET ile filtrelenen URL'leri talep eden kurallardır POST, sadece gönderi isteklerinde bir filtreleme kuralıdır Beyaz liste bir beyaz listedir ve içindeki URL'ler eşleşiyor, böylece filtrelenmez user-agent, user-agent için bir filtreleme kuralıdır
Get ve post filtreleme varsayılan olarak etkin, eğer cookie filtrelemeyi etkinleştirmeniz gerekiyorsa, waf.lua iptal kısmını düzenleyin - yorum
Log dosyası adı formatı şöyledir: Web Host Adı _sec.log
|