WAF (Web Uygulama Güvenlik Duvarı) Nedir, Nasıl Çalışır?

Yayın tarihi:

13 dk okuma

Acar Diveroli
Yazar: Acar Diveroli
Mavi tarama pencereli, kural plakalı denetim tüneli; istek paketleri bantta ilerliyor, 403 paketi ret kasasına kayıyor

Bir destek formuna hata mesajını yapıştırıp Gönder'e basıyorsunuz ve karşınıza bembeyaz bir sayfa çıkıyor: "403 Forbidden", altında da "Microsoft-Azure-Application-Gateway/v2". Bir başka örnekte, bir aydır sorunsuz çalışan bir fiyat takip betiği ürün bilgisi yerine "Request blocked" sayfaları almaya başlıyor. İki durumda da kararı sitenin kendi kodu vermedi; sitenin önünde duran web uygulama güvenlik duvarı verdi.

Bu yazıda WAF'ın nerede durduğunu, bir istekte neyi okuduğunu ve kurallarının nasıl karar verdiğini anlatıyoruz. WAF'ı ağ güvenlik duvarı ve reverse proxy ile karşılaştırıyor, yaygın engel sayfalarını listeliyoruz. Son bölüm, fiyat takip ya da veri toplama aracı WAF'a takılanlara yönelik.

WAF nedir?

Web uygulama güvenlik duvarı, tarayıcıların ve uygulamaların web siteleriyle konuştuğu protokol olan HTTP için bir güvenlik katmanıdır. Açık kaynaklı güvenlik projesi OWASP'ın tanımıyla WAF, HTTP uygulamaları için bir uygulama güvenlik duvarıdır ve bir HTTP konuşmasına bir dizi kural uygular.

Tanımdaki kilit sözcük "uygulama". Ağ güvenlik duvarı adreslere ve portlara bakarak karar verir; bu yüzden sıradan bir giriş isteğini, veritabanı komutlarıyla doldurulmuş bir giriş formundan ayıramaz: ikisi de 443 numaralı porta gelir. WAF ise isteği açar, okur ve web saldırıları için yazılmış kurallarla karşılaştırır.

WAF ziyaretçiyi değil web sitesini korur: sunucunun yerine geçen ve her isteği ilk karşılayan bir reverse proxy (ters proxy) olarak çalışır.

WAF nerede durur?

WAF her zaman internet ile web sunucusu arasındadır. Genellikle dört yerden birine konur:

  • CDN'in uç sunucularında. Cloudflare, Akamai ve Imperva müşteri sitelerinin önünde sunucu ağları işletir. Alan adı sağlayıcının sunucularını gösterdiği için ziyaretçi önce sağlayıcının WAF'ına ulaşır.
  • Bulut yük dengeleyicisinde. AWS WAF; CloudFront, Application Load Balancer ve API Gateway gibi servislere bağlanır. Azure ise WAF'ını Application Gateway ve Front Door içinde çalıştırır.
  • Bir donanım cihazında. F5 BIG-IP gibi cihazlar şirketin kendi sunucularının önüne konur.
  • Web sunucusunun içinde. Apache, IIS ve Nginx için açık kaynaklı bir WAF motoru olan ve bugün OWASP çatısı altında geliştirilen ModSecurity, bu modelin klasik örneğidir. Pek çok hosting firması onu her müşterisi için açar.

WAF'ın isteği okuyabilmesi için onu şifresiz görmesi gerekir. Bu yüzden sitenin sertifikasını WAF taşır: tarayıcının HTTPS bağlantısını kendisi sonlandırır, kaynak sunucuya (origin) ayrı bir bağlantı açar. Tarayıcı yine de asma kilidi gösterir, çünkü tarayıcının gözünde site WAF'ın kendisidir.

WAF nasıl çalışır?

Bir istek WAF'tan altı adımda geçer:

  1. Bağlantı WAF'ta sonlanır. WAF, HTTPS şifresini çözer ve isteğin tamamını alır.
  2. İstek parçalarına ayrılır ve kodlaması çözülür. Böylece bir saldırı, kesme işareti yerine %27 yazılarak gizlenemez.
  3. Önce site sahibinin özel kuralları çalışır: ofisin IP aralığına izin ver, bir ülkeyi engelle, /admin yolunu dışarıya kapat.
  4. Saldırı kuralları ve hız sayaçları isteği puanlar. SQL enjeksiyonu, siteler arası betik çalıştırma (XSS) ve protokol ihlali kuralları eşleştikçe puan ekler; sayaçlar aynı IP'den ya da oturumdan kaç istek geldiğini tutar.
  5. Karar uygulanır: istek sunucuya iletilir, bir hata sayfasıyla engellenir, bir doğrulama ekranına yönlendirilir ya da yalnızca kayda geçer.
  6. Olay bir kimlik numarasıyla kaydedilir: Cloudflare'de Ray ID, Akamai'de referans numarası. Ziyaretçinin şikâyetini tetiklenen kurala bağlayan bu numaradır.

WAF neyi inceler?

Ağ güvenlik duvarı bu tablonun yalnızca son satırına göre işlem yapabilir; geri kalanı uygulama katmanında görünür.

İsteğin parçasıWAF neye bakar?Eşleşme örneği
Yol ve URLHassas ya da beklenmedik yollarYurt dışından /wp-admin, ../ ile dizin geçişi
Sorgu dizesi, form alanlarıVeri olması gereken yerde kodArama kutusunda veritabanı komutu
Başlıklar ve çerezlerEksik, tuhaf ya da kurcalanmış değerlerUser-Agent başlığı yok
İstek gövdesi (form, JSON, XML)Saldırı yükü, aşırı büyük dosyaKabuk komutu taşıyan bir JSON alanı
HızIP ya da oturum başına fazla istekDakikada yüzlerce giriş denemesi
Kaynak IP ve ülkeİtibar listeleri, coğrafi kurallarTehdit listesindeki bir adres

WAF hangi kuralları kullanır?

İmzalar, bilinen saldırı tekniklerini yakalayan kalıplardır: bir form alanındaki SQL parçaları ya da bir yorumdaki <script> etiketi gibi. Bilinen saldırılarda isabetlidirler, yeni olanları görmezler. En bilinen açık kural koleksiyonunun adı OWASP Core Rule Set (CRS): ModSecurity ve Coraza gibi uyumlu motorlar için yazılmış genel saldırı kuralları. Azure'un WAF'ı bu kural setine dayanır, Cloudflare da kendi uyarlamasını sunar.

Yönetilen kurallar (managed rules) WAF sağlayıcısı tarafından yazılır ve güncellenir: yaygın bir yazılımda ciddi bir açık duyurulduğunda yeni bir kural bütün müşterileri korumaya başlar. Özel kurallar ise site sahibinin kendi kurallarıdır; bir yolu engellemek ya da bir iş ortağının IP'sine izin vermek gibi.

Hız sınırı (rate limit), belli bir zaman aralığında IP, oturum ya da anahtar başına gelen istekleri sayar. Cloudflare'in hız sınırı sayfası 403 yerine 429 Too Many Requests döner.

Bot yönetimi çoğunlukla ücretli bir ek hizmettir ve istemcileri insanlar, arama motorlarınınki gibi doğrulanmış botlar ve geri kalanlar diye ayırır. Cloudflare bu sonucu 1 (otomatik) ile 99 (insan) arasında bir bot puanıyla ifade eder.

Sanal yama (virtual patching), OWASP'ın virtual patching rehberinde bilinen bir açığa yönelik istismar girişimlerini, açığı olan koda dokunmadan engelleyen bir katman olarak tanımlanır. Zaman kazandırır ama açığı kapatmaz.

Anomali puanlaması nasıl karar verir?

CRS ilk eşleşmede engellemez. Eşleşen her kural, önem derecesine göre puan ekler: kritik 5, hata 4, uyarı 3, bildirim 2. Toplam, CRS belgelerinin 5 olarak önerdiği gelen istek eşiğine ulaşınca istek reddedilir. Tek bir kritik eşleşme yeter; tek bir uyarı yetmez, ama bir uyarı ile bir bildirim birlikte eşiğe ulaşır.

CRS'te ayrıca dört paranoya seviyesi (paranoia level) vardır. 1'in üstündeki her seviye daha sıkı kurallar ekler; daha çok saldırı yakalar ama daha çok gerçek ziyaretçiyi de yanlışlıkla engeller.

WAF, ağ güvenlik duvarı ve reverse proxy arasındaki farklar

Üçü aynı cihazda çalışabilir. Trafiği süzmek ile aktarmak arasındaki temel farkı Proxy ve Firewall Farkı Nedir? yazısında anlattık; WAF'ın bu ikisinin arasındaki yeri şöyle:

Ağ güvenlik duvarıWAFReverse proxy
KatmanAğ ve taşımaUygulama (HTTP)Uygulama (HTTP)
Neyi okur?IP, port, bağlantı durumuURL, başlıklar, gövde, hızYönlendirmek için host ve yol
Ana işiBağlantıya izin verme ya da kesmeSaldırıyı ve kötüye kullanımı durdurmaYük dengeleme, önbellekleme, TLS sonlandırma
ÖrnekOfis modeminin güvenlik duvarıModSecurity ve CRSUygulama sunucularının önündeki Nginx

WAF, güvenlik kuralları eklenmiş bir reverse proxy'dir; bu kurallar olmadan bir reverse proxy, saldırıyı da sıradan bir istekle aynı şekilde sunucuya iletir. Ağ katmanındaki trafik selini karşılayan DDoS koruması ise ayrı bir katmandır.

WAF engel sayfası neye benzer?

Varsayılan sayfa, sizi hangi ürünün durdurduğunu çoğu zaman ele verir.

ÜrünSayfada ne yazar?Siteye iletilecek bilgi
Cloudflare"Sorry, you have been blocked" ya da Error 1020Ray ID
Akamai"Access Denied. You don't have permission to access …"Reference #
Imperva"Request unsuccessful. Incapsula incident ID"Incident ID
CloudFront arkasında AWS WAF"The request could not be satisfied. Request blocked."Saat ve URL
Azure Application Gateway"403 Forbidden", "Microsoft-Azure-Application-Gateway/v2"Saat ve URL
F5 BIG-IP"The requested URL was rejected"Support ID

Bunların çoğu 403 Forbidden döner: sunucu isteği anlamıştır ama yerine getirmeyi reddeder. Bir 403'ün WAF'tan mı, giriş kontrolünden mi yoksa dosya izinlerinden mi geldiğini ayırmak için 403 Forbidden hatası rehberine bakabilirsiniz.

Ziyaretçi olarak kuralı değiştiremezsiniz, ama en sık tetikleyicileri ortadan kaldırabilirsiniz:

  1. VPN'inizi ya da proxy uzantınızı kapatıp sayfayı yenileyin; paylaşılan VPN adreslerinin itibarı çoğu zaman zayıftır.
  2. Gizli pencerede deneyin: bu pencere eski çerezler olmadan açılır, uzantıların çoğu da orada çalışmaz.
  3. Engel bir form gönderdikten hemen sonra geldiyse yazdığınıza bakın: kod ya da SQL'e benzeyen bir metin, bir saldırı kuralıyla eşleşebilir.
  4. Hâlâ engelleniyorsanız sayfadaki kimlik numarasını, saati ve ne yaptığınızı siteye iletin. Hangi kuralın tetiklendiğini yalnız sitenin yöneticisi görebilir.

WAF neden gerçek ziyaretçileri engeller?

Yanlış pozitif (false positive), bir kuralın saldırı sandığı meşru bir istektir. Kaynakları çoğunlukla bellidir:

  • Koda benzeyen içerik: bir yazılımcı forumu, müşterilerin hata kaydı yapıştırdığı bir destek formu, HTML kaydeden bir içerik editörü.
  • Paylaşılan adresler: bir ofis ya da mobil ağ binlerce kişiyi birkaç IP'nin arkasına toplayabilir; tek kişi için ayarlanmış bir hız sınırı hepsini birden durdurur.
  • İtibar listeleri: VPN çıkışları ve bulut sunucuları ortak kullanılır, kullanıcılarının bir kısmı da kötü niyetlidir.
  • Sıkı ayarlar: yüksek paranoya seviyesi daha çok müşteriyi de yakalar.

Site sahipleri bunu korumayı kapatmadan çözebilir:

  1. Önce yalnız kayıt tutan modda başlayın. Microsoft'un Azure WAF genel bakış sayfası, yeni bir WAF'ı önleme moduna (Prevention) geçirmeden önce kısa bir süre algılama modunda (Detection) çalıştırmayı önerir. AWS WAF'ta aynı işi Count eylemi (yalnız sayar) görür.
  2. Kuralı bulun: WAF kayıtlarında Ray ID'yi, referans numarasını ya da engelin saatini arayın.
  3. Dar bir istisna yazın: bütün kural setini kapatmak yerine tek bir alanı tek bir kuraldan muaf tutun.
  4. Dışarıdan test edin. Coğrafi kurallar ve itibar listeleri yurt dışındaki ziyaretçiye farklı davranır. Hedef ülkedeki bir Residential Proxy, sitenizi o ülkedeki bir ev kullanıcısının gördüğü gibi görmenizi sağlar.

WAF veri toplama ve izleme araçlarını neden engeller?

Bir fiyat takip aracı, sitenin ayakta olup olmadığını denetleyen bir uptime izleyicisi ya da araştırma amaçlı bir crawler (sayfaları otomatik gezen program), siteden önce WAF ile karşılaşır. WAF kurallarının bir kısmı da doğrudan otomatik trafiği hedefler:

  • Protokol kuralları. Azure'un WAF'ı Host, User-Agent ya da Accept başlığı eksik isteklere karşı koruma sağlar ve crawler'lar ile güvenlik tarayıcıları (scanner) için ayrı kurallar içerir. Bu başlıkları göndermeyen yalın bir HTTP istemcisi, içerik kurallarına gelmeden durdurulabilir.
  • Bot kural grupları. AWS'nin Bot Control kural grubu, HTTP kütüphanelerinden, veri kazıma (scraping) çerçevelerinden, izleme servislerinden ve otomatik tarayıcılardan gelen istekleri etiketler, doğrulayamadıklarını engeller. Büyük arama motorlarının crawler'ları gibi doğrulanmış botlar geçer.
  • Ağ ve hız sinyalleri. Botların sık kullandığı veri merkezlerinden gelen trafik işaretlenir; her 200 milisaniyede bir sayfa çeken bir crawler, amacı ne olursa olsun saldırıya benzer.

Tespit tarafını katman katman Bot Tespiti Nasıl Yapılır? yazısında anlattık. Engel, sitenin size verdiği cevaptır; meşru yol bu cevabı dolanmak değil, ona göre davranmaktır:

  1. Varsa resmî API'yi, veri akışını ya da iş ortaklığı programını kullanın.
  2. robots.txt dosyasına ve kullanım şartlarına uyun.
  3. İstemcinizi dürüstçe tanıtın: iletişim adresi içeren gerçek bir User-Agent kullanın.
  4. Yavaşlayın; 429 ya da 403 gördüğünüzde bekleme süresini uzatın.
  5. İzin listesine (allow-list) eklenmeyi isteyin. Pek çok site yöneticisi, iletişim bilgisi ve sabit bir IP adresi verdiğinizde düzgün davranan bir izleme aracını geçirmeyi kabul eder. ISP Proxy değişmeyen ve yalnız size ayrılmış bir adres verir.

Bir engeli aşmak için IP adresinizi değiştirmeyin, tarayıcı parmak izini taklit eden araçlar da kullanmayın. Bu, sitenin kararını yok saymaktır ve bu kuralların yakalamak için ayarlandığı davranışın ta kendisidir.

WAF'ı kimler kullanır?

  • Online mağazalar ve ödeme sayfaları. Kart sektörünün güvenlik standardı PCI DSS'in 4.0 sürümündeki 6.4.2 gereksinimi, internete açık web uygulamalarının önünde web saldırılarını sürekli tespit edip önleyen otomatik bir teknik çözüm ister. PCI DSS değişiklik özeti bu gereksinimi 31 Mart 2025'e kadar "en iyi uygulama" saymıştı; o tarihten beri zorunludur.
  • Giriş sayfaları: hız sınırları, sızdırılmış parolaların çok sayıda hesapta denenmesini (credential stuffing) yavaşlatır.
  • API'ler: web formlarıyla aynı enjeksiyon risklerini taşır.
  • WordPress ya da başka yaygın yazılım kullanan siteler: tek bir eklentideki açık, binlerce siteyi aynı anda açıkta bırakır.

Sık yapılan hatalar

  • Kodu düzeltmek yerine WAF'a güvenmek. Sanal yama yalnızca WAF'ın gördüğü trafiği korur.
  • Kaynak sunucuyu doğrudan erişilebilir bırakmak. Sunucu kendi IP adresine gelen isteklere cevap veriyorsa saldırgan WAF'ı atlar.
  • Kayıt tutma dönemi olmadan ilk günden engellemeye başlamak.
  • Tek bir yanlış pozitif için bütün kural setini kapatmak.
  • Ziyaretçi olarak engel sayfasını tekrar tekrar yenilemek; her yenileme hız sayacını artırır.

Karar rehberi

DurumunuzNe yapmalı?
Kimlik numarası olan bir engel sayfası görüyorsunuzNumarayı, saati ve URL'yi siteye iletin
Paylaşımlı hostingde küçük bir siteniz varHostinginizin ModSecurity ve CRS çalıştırıp çalıştırmadığını sorun ya da bir CDN'in WAF'ını kullanın
Online kart ödemesi alıyorsunuzPCI DSS 6.4.2, WAF ya da eşdeğer bir çözüm ister
Canlı bir siteye WAF ekliyorsunuzÖnce algılama ya da sayma modunda çalıştırın
Gerçek müşteriler engelleniyorKural numarasını bulun, dar bir istisna yazın
İzleme aracınız ya da crawler'ınız 403 alıyorYavaşlayın, kendinizi tanıtın, izin listesi isteyin
Sitenizi yurt dışındaki ziyaretçinin gözünden görmek istiyorsunuzO ülkedeki bir residential IP üzerinden test edin

Sıkça sorulan sorular

WAF ile güvenlik duvarı aynı şey mi?

WAF, güvenlik duvarının bir türüdür. Ağ güvenlik duvarı bağlantılara adres ve port üzerinden izin verir ya da onları keser; WAF ise HTTP isteklerinin içeriğini okur. Çoğu site ikisine birden ihtiyaç duyar, çünkü biri ötekinin göremediğini görür.

Cloudflare bir WAF mı?

Cloudflare, web sitelerinin önünde duran bir reverse proxy sunucu ağıdır. Özel kuralları, hız sınırı kurallarını ve yönetilen kural setlerini içeren WAF'ı, bu ağ üzerindeki hizmetlerden biridir; önbellek ve DDoS koruması da aynı ağda çalışır.

WAF DDoS saldırısını durdurur mu?

Kısmen. HTTP isteklerinden oluşan selleri hız sınırları ve doğrulama ekranlarıyla karşılayabilir. Ağ bağlantısının kendisini dolduran seller için ayrı bir DDoS koruması gerekir.

Ücretsiz ya da açık kaynaklı bir WAF var mı?

Var. En bilinen açık kaynaklı ikili, ModSecurity ve OWASP Core Rule Set'tir; Coraza da aynı kuralları çalıştıran daha yeni bir motordur. Bazı CDN'ler ücretsiz paketlerinde temel bir yönetilen kural seti sunar.

VPN kullanınca WAF beni neden engelliyor?

VPN sunucularını çok sayıda kişi paylaşır; bu yüzden adresleri itibar listelerine girer, bazı siteler de bütün bir ülkeyi ya da bulut ağlarını engeller. VPN'i kapattığınızda sayfa açılıyorsa kural sizinle değil, adresle ilgiliydi.

WAF HTTPS trafiğini okuyabilir mi?

Evet, okumak zorundadır. Sitenin sertifikasını taşır, isteğin şifresini çözüp inceler, sonra sunucuya genellikle yeni bir şifreli bağlantı üzerinden iletir. Tarayıcınız ile WAF arasındaki trafik şifreli kalır.

Özet

Web uygulama güvenlik duvarı, her HTTP isteğini web sitesinden önce okuyan, güvenlik kuralları eklenmiş bir reverse proxy'dir. İstekleri imzalara, anomali puanlarına, özel kurallara, hız sınırlarına ve bot sinyallerine göre değerlendirir; engel sayfalarındaki kimlik numarasının izini yalnız sitenin yöneticisi sürebilir. Ziyaretçinin yapacağı, bariz tetikleyicileri kaldırıp siteye yazmaktır; site sahibininki ise önce kayıt tutmak, sonra engellemek ve istisnaları dar tutmaktır. İzin listesi için sabit bir adrese ya da kendi kurallarınızı yurt dışından test edecek yerel IP'lere ihtiyacınız varsa proxy hizmetlerimize göz atın.

ChatGPT'ye sorClaude'a sor