Web Uygulaması Güvenlik Duvarı ve saldırılara karşı koruma
Kısa Özet
WAF/WAAP, uygulama düzeyinde HTTP (S )/WebSocket trafiğini filtreler ve kontrol eder: güvenlik açıklarının kullanılmasını engeller (OWASP Top 10), kimlik doğrulamayı, taramayı, otomatik bot trafiğini ve L7 DDoS'u atlamaya çalışır. Modern yığın, bir anti-bot motoru, API koruması, hız sınırlaması, sanal yamalar ve CI/CD ile sıkı entegrasyon ile tamamlanır, böylece kurallar kod kadar güvenli bir şekilde yayılır.
Mimaride roller ve yer
Edge/CDN WAF (bulut): düşük gecikme süresi, global itibar/Yönetilen Kurallar, L7 DDoS.
Kendi kendine barındırılan WAF (on-prem/K8s): Dahili ağlarla derin entegrasyon, ince ayar.
WAF + API-Gateway işlevleri (şema doğrulama, authZ), anti-bot, L7 DoS, mTLS.
Dahil etme şemaları: Uygulamadan önce ters proxy; K8s'da giriş denetleyicisi; Servis Mesh filtreleri; yan araba.
Koruma modeli
Negatif güvenlik (signatures/CRS): Bilinen tekniklerin hızlı kapsamı (SQLi/XSS/SSRF/RCE).
Pozitif güvenlik (allow-list): yalnızca "geçerli" isteklere izin verir (yöntemler/yollar/şemalar/içerik türleri).
Sanal Yama: Exploit'in kod düzeltmesine çevrimiçi olarak engellenmesi.
Bağlam: statik içerik, API, yöneticiler, indirmeler, web kitapları için farklı politikalar.
Tipik tehditler ve önlemler
OWASP Top 10: SQLi, XSS, IDOR/BOLA, SSRF, şablon enjeksiyonları, çölleşme, yanlış yapılandırmalar.
L7 DDoS: yavaş istekler/başlıklar, sıcak uç noktalar için patlama - koruma: hız limitleri, meydan okuma, otomatik engelleme.
Botlar/kazıyıcılar: davranış, frekans, "insanlık dışı" kalıplar, cihaz parmak izi, dinamik belirteçler.
Kimlik Bilgisi Doldurma/ATO: IP/ASN tarafından loginlerin anomalisi, hız kuralları, ek faktörlerin kesilmesi/numaralandırılması.
İndirme: tip/size/multiscan antivirüs, medya bölgelerinde "sadece görüntü".
API/GraphQL: şema doğrulama, 'maxDepth'/' maxCost', cezasız joker karakterlerin yasaklanması, yöntemlerin ve başlıkların kontrolü.
Politikalar ve Kural Tasarımcıları
Herhangi bir uygulama için temel iskelet:1. Taşıma: TLS 1. 2+/1. Hassas arka uçlarda 3, HSTS, mTLS.
2. Yöntemler: allow-list ('GET, POST, PUT, DELETE, PATCH, OPTIONS') kaynak başına benzersizdir.
3. Yollar: sıkı maskeler/regexps; admin/billing - ayrı bir önek/etki alanına.
4. Başlıklar: beyaz listeler, gereksiz yere tehlikeli ('X-Original-URL', standart dışı) yasağı.
5. Gövdeler: Rota boyunca sadece JSON/Çok parçalı; 'Content-Length', "login/search" için ikili dosya bloğunu sınırlar.
6. Hız limitleri: IP/ASN/anahtar/kuruluş başına; "Pahalı" istekler için ayrı sınırlar.
7. Anti-bot: davranışsal puanlama, "rahatsız edici olmayan" zorluklar, yapıştırma kimlikleri (çerez belirteçleri, FP JA3/TLS).
8. CRS/Yönetilen Kurallar: etkin, FP altında ayarlama.
9. Wirth yamaları: Bilinen parametrelerin/saldırı modellerinin hızlı bloke edilmesi.
10. Günlükler/metrikler: tekdüze biçim, 'trace _ id'ile korelasyon, FP/TP raporları.
Ayarlama uygulaması: yanlış pozitiflerin nasıl azaltılacağı
Trafik örneklemesiyle Yalnızca Algıla/Say modunda (gölge) yeni kurallar çalıştırın.
Bağlama göre istisnalar oluşturun ('path =/search', 'param = q' allow special characters).
Bölgeyi bölün: "ortak sayfalar" vs "hassas işlemler" (saldırganlık eşiği farklıdır).
Konveyör: kural - evreleme - kanarya (%1-5) - prod; FP metrikleriyle geri dönüş.
Regresyon testleri için "yanlış" yük dizinini koruyun.
DevSecOps'a entegrasyon
CI: Git'te statik kurallar; testler: saldırı dizininden gerçek istekleri + sentetikleri tekrar oynatır.
CD: kanarya hesaplamaları, özellik bayrakları; "Politik" izleme (kural değişikliği = değişim).
RASP ve SAST/DAST: WAF takviyeleri ancak kod düzeltme yerine geçmez.
Gözlemlenebilirlik ve SLO
Metrikler:- WAF üzerinden p95/99 gecikme; Engellenen/kaçırılan oranı; Yönetilen Kuralları ve özel paylaşımı; "Saldırı oranı".
- Anti-bot: zorlukların/değişimin payı, FP/TP.
- L7 DDoS: patlama hızı, otomatik azaltma olayları.
- "0'dan fazla değil. Yetkili işlemlerde/günde %5 FP"
- Erişim tarihi: 14 Haziran 2011. ^ "p95 overhead WAF ≤ 10 мс".
- "Sanal yama TTR ≤ 30 dakika".
- Uyarılar: Kurallar yayınlandıktan sonra 4xx/5xx başak; FP büyümesi; Captcha geçişinde düşüş; JWKS/mTLS doğrulamasının bozulması.
Örnek Konfigürasyonlar
ModSecurity + OWASP CRS (Nginx)
nginx
Enabling ModSecurity modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main. conf;
'/etc/nginx/modsec/main. conf ':
apache
SecRuleEngine On
Include /usr/local/owasp-modsecurity-crs/crs-setup. conf
Include /usr/local/owasp-modsecurity-crs/rules/.conf
Example of an exception for a search parameter
SecRule REQUEST_URI "@beginsWith /search" "id:900100,phase:1,pass,nolog,ctl:ruleRemoveByTag=attack-xss"
SecRule REQUEST_URI "@beginsWith /search" "id:900101,phase:2,pass,ctl:ruleRemoveTargetById=942100; ARGS:q"
AWS WAF (JSON, oran sınırı + ülke listesi bloğu)
json
{
"Name": "prod-web-acl",
"Scope": "CLOUDFRONT",
"DefaultAction": { "Allow": {} },
"Rules": [
{
"Name": "BurstLogin",
"Priority": 1,
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": { "ByteMatchStatement": {
"SearchString": "/login",
"FieldToMatch": { "UriPath": {} },
"TextTransformations": [{ "Priority": 0, "Type": "NONE" }],
"PositionalConstraint": "CONTAINS"
}}
}
},
"Action": { "Block": {} },
"VisibilityConfig": { "MetricName": "BurstLogin", "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true }
}
]
}
Cloudflare (İfade Kuralları)
(http. request. uri. path contains "/admin" and ip. geoip. country ne "UA")
or (http. request. uri. path eq "/login" and cf. threat_score > 10)
or (http. request. uri. path contains "/api" and not http. request. headers["authorization"][0] contains "Bearer ")
NGINX: Basit Yöntem/Vücut Kuralı
nginx location /api/withdraw {
limit_except POST { deny all; }
if ($request_method = POST) {
set $cl $http_content_length;
if ($ cl = "") {return 411;} # length is required if ($ cl> 1048576) {return 413;} # ≤ 1MB add_header X-Idempotency-Required "true";
}
}
GraphQL: denetçiler
'MaxDepth = 6', 'maxCost = 1000', satışta '__ şeması' yasağı, işlemlerin izin listesi, başlıkların doğrulanması ('Content-Type: application/json').
Anti-bot ve insan dostu kontroller
Görünmez zorluk (captcha olmadan JS zorlukları), "pahalı" yollarda çalışma kanıtı, davranışsal analitik (hareketler/zamanlamalar).
TLS/JA3 parmak izi, IP/ASN itibarı, proxy/VPN listeleri (makul sınırlar dahilinde).
Formlardaki tuzaklar (bal küpü alanları), dinamik form/oturum belirteçleri.
Gizlilik koruması: izlemeyi en aza indirme, şeffaf politikalar, devre dışı bırakma seçenekleri.
Odak API
Schema-first: Doğrulama için OpenAPI/JSON Schema; Ekstra alanların yasaklanması.
Auth: zorunlu Taşıyıcı JWT veya mTLS; 'Yetki' без reddedin.
Oran/Kota: anahtar başına/org başına; aşılırsa - "yumuşak blok "/yavaşlama.
Webhooks: HMAC imzası, 'zaman damgası + nonce', kısa alım penceresi.
GraphQL: bkz. yukarıdaki sınırlayıcılar; İşlemin adını/etiketini kaydedin.
İndirmeler ve Medya
Boyut sınırı, beyaz listeler MIME/uzantıları, dosyaları yeniden adlandırma;
AV taraması (çoklu motorlar), ImageMagick politikası (tehlikeli kod çözücüler olmadan);
Ayrı bir etki alanında başparmak hizmeti, yalnızca hizmet görüntüleri.
Yöneticilerin ve kritik alanların güvenliği
Ayrı domain/path, mTLS/ban from common ASN/countries, hard rate limits, JIT accesses, IP allow-list.
Ek sinyaller (cihaz duruşu, risk puanı) - ikinci bir kontrol gerektirir.
İşlemler, Olaylar ve Sanal Yamalar
Runbook: blok kurallarının hızlı yayınlanması, TTL kısıtlaması, komut bildirimi.
Geri alma kriterleri: büyüme 4xx/5xx> eşik, FP> eşik, p95 latency↑.
Ölüm sonrası: regresyon kural setine test ekleyin, SIEM'e SIGMA uyarısı verin.
Uyum ve gizlilik
Log minimum: yol/yöntem/kod/blok nedeni/tanımlayıcıları; PII/vücut sırlarını saklamayın.
Politika günlüğü tutma süreleri; erişim - rollere göre; Diskte şifreleme.
iGaming/fintech için özellikler
Ödemeler/ödemeler/cüzdanlar: org kotaları, PSP'ye mTLS, yolların sıkı izin listeleri, PSP web kitapları için HMAC.
ATO/bonus kötüye kullanımı: giriş/kayıt/promosyon kodları, davranışsal sınırlar ve anti-bot için hız kuralları.
İçerik sağlayıcılar/stüdyolar: bireysel etki alanları/politikalar, IP/ASN allow-list, WAF etkisi üzerine Time-to-Wallet izleme/dönüşümler.
Bölgesel gereksinimler: Coğrafi politikalar (ülkeler/bölgeler), GDPR için işlem şeffaflığı.
Uygulama Yol Haritası
1. Bölgelerin envanteri (genel, API, yönetici paneli, indirmeler).
2. Temel profil: TLS, allow-list yöntemleri/yolları, Yönetilen Kurallar/CRS.
3. Hız limitleri + hassas yollarda anti-bot.
4. Sanal yamalar ve acil kurallar süreci (SLA ≤ 30 dk).
5. Kurallar için CI/CD, evreleme/kanarya/gölge modu.
6. Telemetri, SLO, kuralların regresyon testleri.
7. İstisnaların periyodik olarak gözden geçirilmesi ve baypasların "temizlenmesi".
Yaygın hatalar
"Tüm CRS'leri maksimuma açtı" - FP çığ ve takım tükenmişliği.
Kanarya ve gölge modu olmayan kurallar.
Segmentasyon yok: Her şey için bir politika.
API/GraphQL özelliklerini göz ardı etme (şema/limitler).
Korelasyon içermeyen ('trace _ id') ve kalite metrikleri olmayan günlükler.
SSS
WAF güvenli kodun yerini mi alıyor?
Hayır. Bu bir azaltma katmanı ve'sanal yama'dır, ancak koddaki teknik borç ortadan kaldırılmalıdır.
Sert blokları açma zamanının geldiğini nasıl anlayabilirim?
Gölge modu raporu düşük FP'yi gösterdiğinde ve kuralların regresyon testleri olduğunda.
API için ayrı bir WAF'a ihtiyacım var mı?
API ağ geçidi ile daha iyi WAAP/entegrasyon: şema, sınırlar, kimlik doğrulama, webhook imzaları.
Toplam
Verimli WAF/WAAP, DevSecOps süreçleri, telemetri ve net SLO'lar tarafından desteklenen temel CRS/Yönetilen Kurallar, pozitif model, anti-bot, sınırlar ve sanal yamaların bir kombinasyonudur. Bu yaklaşım, güvenlik açıklarına hızlı bir yanıt, otomatik saldırılara karşı direnç ve UX ve performans üzerinde öngörülebilir bir etki sağlar.