WAF Nedir? Web Uygulama Güvenlik Duvarı Nasıl Çalışır?
WAF (Web Application Firewall, web uygulama güvenlik duvarı), bir web uygulamasına gelen HTTP isteklerini kurallara göre inceleyen ve saldırı kalıbı taşıyanları engelleyen güvenlik katmanıdır. Genellikle uygulamanın önünde ters vekil olarak çalışır. Ağ güvenlik duvarından farkı, adres ve porta değil isteğin içeriğine bakmasıdır.
WAF nedir sorusunun kısa cevabı: web sitenin önünde durup gelen her isteği okuyan, SQL injection ya da XSS gibi saldırı kalıbı taşıyanları geri çeviren filtredir. Ağ güvenlik duvarı kapıdan kimin girdiğine bakar, WAF ise elindeki pakete. Kod düzeltilene kadar zaman kazandırır ama koddaki açığı kapatmaz. Bu yazıda nasıl çalıştığını, nasıl ayarlandığını ve sınırlarını göreceksin.
WAF nedir ve nasıl çalışır?
OWASP'ın tanımıyla WAF, HTTP uygulamaları için bir uygulama güvenlik duvarıdır. HTTP konuşmasına bir kural seti uygular. Kurallar genellikle XSS ve SQL injection gibi yaygın saldırıları kapsar. Vekil sunucular istemciyi korurken WAF sunucuyu korur.
Bir istek WAF'tan geçerken şu adımlar işler:
- Kullanıcı siteye bağlanır. Bağlantı aslında WAF'ta sonlanır.
- WAF isteğin adresini, parametrelerini, başlıklarını, çerezlerini ve gövdesini okur.
- Her parçayı kurallarla karşılaştırır.
- Karar verir: geçir, engelle ya da yalnız kaydet. Bazı ürünler ayrıca bot sınaması gösterir.
- Geçen istek arkadaki uygulama sunucusuna iletilir.
WAF üç biçimde karşına çıkar. Bulut WAF, içerik dağıtım ağının bir parçası olarak çalışır. Sunucu modülü, nginx ya da Apache gibi web sunucusunun içine eklenir. Donanım ya da sanal cihaz ise kurum ağında uygulamaların önüne konur.
Kural yaklaşımı da ikiye ayrılır. Negatif model bilinen kötü kalıpları arar ve geri kalan her şeyi geçirir. Pozitif model ise yalnız tanımlı, beklenen istekleri kabul eder. Negatif modelin kurulumu kolaydır, pozitif model daha sıkıdır ama uygulamaya özel emek ister.
WAF ile ağ güvenlik duvarı arasındaki fark nedir?
İkisi de "güvenlik duvarı" adını taşır ama farklı katmanlarda farklı soruları yanıtlar:
| Özellik | Ağ güvenlik duvarı | WAF |
|---|---|---|
| Çalıştığı katman | Ağ ve taşıma katmanı (IP, port) | Uygulama katmanı (HTTP) |
| Baktığı şey | Kaynak ve hedef adres, port, bağlantı durumu | URL, parametre, başlık, çerez, istek gövdesi |
| Örnek kural | "Dışarıdan 3389 portuna gelen bağlantıyı reddet" | "Parametrede SQL sözdizimi varsa isteği engelle" |
| Durdurduğu tipik tehdit | İzinsiz port erişimi, port taraması | SQL injection, XSS, dizin taraması, kötü botlar |
| HTTPS içeriğini görür mü | Hayır | Şifre WAF'ta çözülüyorsa evet |
Bu yüzden biri diğerinin yerini tutmaz. Ağ güvenlik duvarının kurallarını ve türlerini firewall nedir yazısında okuyabilirsin.
DDoS tarafında da iş bölümü vardır. WAF, uygulama katmanındaki istek selini oran sınırı ve bot tespitiyle hafifletebilir. Bağlantı hattını dolduran hacimsel saldırılar ise ağ düzeyinde, çoğu zaman servis sağlayıcıda karşılanır. Ayrıntılar DDoS saldırısı ve korunma yazısında.
OWASP Core Rule Set ve ModSecurity nasıl çalışır?
Açık kaynak dünyasında en yaygın ikili ModSecurity ve OWASP CRS'tir. ModSecurity, 2002'de başlayan açık kaynak WAF motorudur. Proje Şubat 2024'te Trustwave'den OWASP'a devredildi. CRS ise bu motorun yaygın olarak kullandığı genel amaçlı kural setidir.
CRS, varsayılan olarak "anomali puanlama" ile çalışır. Kural eşleşince istek hemen engellenmez. Eşleşen her kural isteğin puanını artırır. Tüm kurallar çalıştıktan sonra toplam puan eşikle karşılaştırılır. CRS belgesine göre kritik bir eşleşme varsayılan olarak 5 puan ekler. Varsayılan eşik istekler için 5, yanıtlar için 4'tür.
İkinci ayar "paranoya seviyesi"dir. Ne kadar agresif olacağını belirler:
| Seviye | Ne yapar | Yanlış pozitif |
|---|---|---|
| PL 1 | Neredeyse hiç yanlış alarm üretmeyen temel kurallar | Çok az |
| PL 2 | Daha fazla saldırıyı yakalayan ek kurallar | Artar |
| PL 3 | Özel saldırılar için ek kurallar | Belirgin biçimde artar |
| PL 4 | Neredeyse her saldırıyı yakalayan çok sıkı kurallar | Çok fazla, haftalarca ayar ister |
Yeni bir kurulum genellikle PL 1 ile başlar. Seviye yükseltmek, yanlış pozitifleri ayıklayacak zamanın olduğunda yapılır.
WAF hangi saldırılara karşı işe yarar?
WAF'ın en güçlü olduğu yer, bilinen kalıpları olan saldırılardır. Her satırda kalıcı çözümün yine uygulamada olduğuna dikkat et:
| Saldırı | WAF'ın katkısı | Kalıcı çözüm |
|---|---|---|
| SQL injection | Bilinen sorgu kalıplarını engeller | Parametreli sorgu |
| XSS | Betik içeren girdileri engeller | Bağlama göre çıktı kodlama |
| Yol geçişi | ../ gibi kalıpları yakalar | Dosya yolunu doğrulama |
| Otomatik tarama | Tarayıcı imzalarını ve 404 selini fark eder | Gereksiz uçları kapatma |
| Kaba kuvvet | İstek hızını sınırlar | Hesap bazlı sınır ve MFA |
| Yeni yayımlanan açık | Geçici kural, yani sanal yama | Yazılımı güncelleme |
SQL injection'ın kod tarafındaki kökünü SQL injection nedir yazısında anlattık. Oran sınırı ise ayrı bir konu, rate limiting nedir yazısında ele aldık.
WAF neyi durduramaz?
WAF'ın göremediği en büyük alan iş mantığıdır. Bir kullanıcının başkasının siparişini numarayı değiştirerek açması, WAF'a göre tamamen sıradan bir istektir. Yetkilendirme hatalarının API'lerdeki karşılığını OWASP API Top 10 yazısında bulabilirsin.
Diğer sınırlar:
- Atlatma: Saldırganlar girdiyi farklı kodlayarak ya da bölerek kuralları atlatmaya çalışır. Güncellenmeyen kural seti yanlış bir güven duygusu verir.
- Doğrudan sunucu erişimi: Uygulama sunucusunun gerçek adresi bulunursa WAF tümüyle atlanır. Sunucunun yalnız WAF'tan gelen trafiği kabul etmesini sağla.
- Görmediği trafik: Şifresi WAF'ta çözülmeyen bağlantılar ve WAF'ın önünden geçmeyen iç servisler korumasızdır.
WAF seçerken ve kurarken nelere bakmalısın?
Ürün adından önce ihtiyacını netleştir. Tek bir site için yönetilen bulut WAF, birden çok uygulamayı kendi sunucularında barındıran bir ekip için sunucu modülü daha uygun olabilir. Hangisini seçersen seç, şu soruları sor:
- Kural seti nasıl güncelleniyor? Yeni bir açık yayımlandığında sanal yama ne kadar sürede geliyor?
- Yalnız kayıt modu var mı? Kuralları engellemeden önce izleyebilmen gerekir.
- İstisnalar ne kadar dar yazılabiliyor? Tek bir uç nokta ve tek bir parametre için istisna tanımlayabilmelisin.
- Kayıtlar dışarı aktarılabiliyor mu? WAF kayıtları merkezi izleme sistemine akmalı.
- Kaynak sunucu kilitlenebiliyor mu? Uygulama sunucusu yalnız WAF'ın adreslerinden gelen trafiği kabul etmeli.
- Uyarıya kim bakacak? Kimsenin okumadığı alarm, hiç olmayan alarmdan farksızdır.
Kurulumdan sonra ilk iş, sitenin normal trafiğini birkaç gün kayıt modunda izlemektir.
Yanlış pozitifler nasıl yönetilir?
Yanlış pozitif, meşru bir isteğin saldırı sanılıp engellenmesidir. Kötü yönetilirse ekip WAF'ı kapatır ve koruma tümden kaybolur. Güvenli geçiş şu sırayla yapılır:
- Yalnız kayıt moduyla başla. ModSecurity'de bu
SecRuleEngine DetectionOnlyayarıdır. Kurallar çalışır ama hiçbir istek engellenmez. - Kayıtları incele. Hangi kuralın hangi uç noktada, hangi parametrede tetiklendiğini çıkar.
- Dar istisna yaz. Kuralı tümden kapatma. Yalnız o uç nokta ve o parametre için istisna tanımla. CRS belgesi, kural dosyalarını doğrudan düzenlemeyi açıkça önermez.
- Eşiği kalıcı olarak yükseltme. CRS'e göre eşiği varsayılanın üstüne çıkarmak saldırıların önemli bir kısmının geçmesine yol açar. Ayar döneminde geçici olarak yükseltip sonra geri indir.
- Engelleme moduna geç ve izlemeyi sürdür. Her yeni özellik yayınında kayıtlara yeniden bak.
WAF kayıtları form alanlarına yazılan değerleri de içerebilir. Bu kayıtlar kişisel veri taşır, bu yüzden erişimi kısıtla ve gereğinden uzun saklama. Bir WAF günlüğünde aynı isteği yüzlerce kez tekrarlayan adresi bulup oran sınırına aldığın senaryoyu saha görevlerinde deneyebilirsin.
Kaynaklar
Sık sorulan sorular
WAF kurarsam SQL injection ve XSS riski biter mi?
Bitmez. WAF bilinen saldırı kalıplarını yakalar ve riski azaltır, ama koddaki açığı kapatmaz. Saldırganlar girdiyi farklı kodlayarak kuralları atlatmaya çalışır ve bazen başarır. Kalıcı çözüm kodda kalır: SQL injection için parametreli sorgu, XSS için bağlama göre çıktı kodlama. WAF bu düzeltmenin yerine değil, yanına konan bir katmandır.
WAF ile IPS arasındaki fark nedir?
IPS, ağ trafiğindeki birçok protokolü imzalarla izler ve şüpheli paketleri durdurur. WAF ise yalnız HTTP ve HTTPS trafiğine odaklanır. İsteğin adresini, başlıklarını, çerezlerini ve gövdesini uygulamanın diliyle okur. HTTPS trafiğini incelemek için şifreyi çözdüğü noktada durur. Bu yüzden web saldırılarında WAF daha ayrıntılı karar verir.
WAF yanlışlıkla gerçek kullanıcıyı engeller mi?
Engelleyebilir. Buna yanlış pozitif denir. Özel karakter içeren bir form, kod paylaşılan bir yorum alanı ya da uzun bir arama kurala takılabilir. Bunu önlemek için WAF'ı önce yalnız kayıt tutan modda çalıştır, kayıtları incele, takılan meşru istekler için dar istisnalar yaz. Engelleme moduna ancak bu ayardan sonra geç.
Küçük bir site için WAF gerekli mi?
Çoğu küçük site için barındırma ya da içerik dağıtım hizmetinin sunduğu yönetilen WAF yeterli bir başlangıçtır. Yine de öncelik sıran şöyle olmalı: güncel yazılım ve eklentiler, güçlü yönetici parolası ve çok faktörlü doğrulama, düzenli yedek. Bunlar yerindeyse WAF, yeni çıkan açıklara karşı zaman kazandıran değerli bir ek katman olur.
WAF HTTPS trafiğini görebilir mi?
Görebilmesi için TLS bağlantısının WAF üzerinde sonlanması gerekir. Bulut WAF'larda bu, sitenin sertifikasının sağlayıcıda kullanılmasıyla olur. Sunucuya kurulan WAF modülleri ise şifre çözüldükten sonra, web sunucusunun içinde çalışır. Şifreli trafiği çözmeden yalnız ileten bir cihaz, isteğin içeriğini okuyamaz ve web saldırılarını ayırt edemez.
- WAF
- web uygulama güvenlik duvarı
- ModSecurity
- OWASP CRS
- web güvenliği