Alanlar
Alan, bir kuralın isteğin hangi özelliğine bakacağını belirler: ziyaretçinin IP’si mi, istediği sayfa mı, bot skoru mu? Her koşul IF {alan} {operatör} {değer} sözdizimini izler. 30 alan beş kategoriye ayrılır; doğru alanı seçmek için şu soruyu sorun:
- “Kim istiyor?” → Ağ (IP, ülke, ASN) veya Bot & Tehdit (bot skoru, VPN/Tor)
- “Neyi istiyor?” → HTTP İstek (path, metod, header, çerez)
- “Origin ne yanıtladı?” → HTTP Yanıt (durum kodu — otomatik engelleme için)
Tablolardaki adlar, konsolun alan menüsünde gördüğünüz etiketlerle birebir aynıdır ve her alanın kendi referans sayfasına gider. Anahtar sütunu ise alanın teknik adıdır — konsolun Kural Önizleme bölümünde koşullar bu adlarla görünür.
İsteğin kaynağını hedefler: tek IP, IP aralığı, önceden tanımladığınız IP listesi, otonom sistem (ASN) veya ülke. Coğrafi kısıtlama, güvenilir IP muafiyeti ve veri merkezi trafiğini ayıklamanın temel araçlarıdır.
| Alan | Anahtar | Ne işe yarar |
|---|---|---|
| IP Adresi | ip.src | Tek bir IP’yi hedefler — yalnızca düz IPv4/IPv6 kabul eder, CIDR için ip.prefix kullanın |
| IP Aralığı (CIDR) | ip.prefix | CIDR bloklarını hedefler (10.0.0.0/8 gibi) — ofis ağı, bulut sağlayıcı aralıkları |
| IP Listesi | ip.list | IP Listeleri sayfasında tanımladığınız adlandırılmış listeye üyelik — listeyi güncelleyin, tüm kurallar otomatik etkilensin |
| ASN Numarası | ip.asnum | IP’nin ait olduğu otonom sistem — belirli bir hosting firmasının tüm aralığını tek koşulla hedefler |
| Ülke | ip.country | IP’nin ülkesi (ISO 3166-1 alpha-2: TR, DE…) — coğrafi kısıtlamanın temeli |
Operatörler: == != in not_in — ip.list yalnızca in / not_in kabul eder; ip.asnum ek olarak sayısal karşılaştırmayı (gt ge lt le) destekler.
# Tek ülkeyi engelleIF ip.country == RUTHEN block
# Adlandırılmış listedeki IP'lere izin verIF ip.list in "ofis-ipleri"THEN allow
# İç ağ bloğuna izin verIF ip.prefix == 10.0.0.0/8THEN allowKonsolda bu seçimlerle:
- Tek ülkeyi engelle — Alan Ülke · Operatör eşittir · Değer
RU→ Aksiyon Engelle - Listedeki IP’lere izin ver — Alan IP Listesi · Operatör listede · Değer
ofis-ipleri→ Aksiyon İzin Ver - İç ağ bloğuna izin ver — Alan IP Aralığı (CIDR) · Operatör eşittir · Değer
10.0.0.0/8→ Aksiyon İzin Ver
HTTP İstek
Bölüm başlığı “HTTP İstek”İsteğin içeriğini hedefler: hangi alan adına, hangi path’e, hangi metodla, hangi başlıklarla gelindiği. Path bazlı koruma (örn. /admin), API kontrolleri ve User-Agent filtrelemenin araçlarıdır.
| Alan | Anahtar | Ne işe yarar |
|---|---|---|
| Host (Domain) | http.host | İstenen alan adı — aynı WAF zone’daki alt alan adlarını ayırt etmek için |
| HTTP Metodu | http.request.method | GET, POST, PUT… — örn. yalnızca yazma isteklerini sıkılaştırın |
| Path (sorgusuz) | http.request.base_uri | Sorgusuz tam path (/admin/login) — path bazlı kuralların birincil alanı |
| URI Son Segmenti | http.request.uri.path | Path’in son segmenti (/admin/login → /login) — dosya adı hedefleme; tam path için base_uri kullanın |
| Sorgu Parametreleri | http.request.uri.query | ? sonrası kısım — parametre bazlı filtreleme |
| URI (sorgu dahil) | http.request.uri | Path + sorgu birlikte |
| Tam URI (host+path) | http.request.full_uri | Host dahil tam adres |
| HTTP Sürümü | http.request.version | 1.0, 1.1, 2, 3 — eski protokolle gelen şüpheli istemciler |
| Header | http.header | Herhangi bir başlığı ad=değer olarak kontrol eder — API anahtarı, özel header doğrulama |
| Çerez | http.cookie | Belirli bir çerezin varlığı/değeri — oturumlu kullanıcıları ayırt etme |
| User Agent | http.user_agent | Tarayıcı/bot kimliği — bilinen kötü araçları adıyla engelleme |
| Referer | http.referer | İsteğin geldiği sayfa — hotlink engelleme |
| X-Forwarded-For IP | http.x_forwarded_for | Proxy zincirindeki istemci IP başlığı |
| TLS Sürümü | tls.version | Bağlantının TLS sürümü — eski/güvensiz istemcileri kısıtlama |
Operatörler: == != in not_in contains not_contains has_prefix has_not_prefix has_suffix has_not_suffix — istisnalar: http.request.method ve http.request.version yalnızca eşitlik + liste (== != in not_in); tls.version ek olarak sayısal karşılaştırma (gt ge lt le) destekler. Metin karşılaştırmaları büyük/küçük harfe duyarlıdır.
# Admin paneline CAPTCHAIF http.request.base_uri has_prefix /adminTHEN captcha
# Bilinen kötü aracı engelleIF http.user_agent contains BadBotTHEN block
# Login POST'una hız sınırıIF http.request.method == POSTAND http.request.base_uri == /loginTHEN ratelimit 10/60s
# API anahtarı olmayan istekleri reddetIF http.header not_contains X-Api-KeyAND http.request.base_uri has_prefix /apiTHEN blockKonsolda bu seçimlerle:
- Admin paneline CAPTCHA — Alan Path (sorgusuz) · Operatör ile başlar · Değer
/admin→ Aksiyon CAPTCHA - Bilinen kötü aracı engelle — Alan User Agent · Operatör içerir · Değer
BadBot→ Aksiyon Engelle - Login POST’una hız sınırı — Alan HTTP Metodu · Operatör eşittir · Değer
POSTVE Alan Path (sorgusuz) · Operatör eşittir · Değer/login→ Aksiyon Rate Limit (10 istek / 60 sn) - API anahtarı olmayanı reddet — Alan Header · Operatör içermez · Değer
X-Api-KeyVE Alan Path (sorgusuz) · Operatör ile başlar · Değer/api→ Aksiyon Engelle
Bot & Tehdit
Bölüm başlığı “Bot & Tehdit”HEIMWALL’ın her istek için ürettiği istihbarat sinyallerini kullanır: istek bir bottan mı geliyor, hangi bot, ne kadar şüpheli, VPN/Tor arkasında mı? Bu alanlar sayesinde User-Agent gibi kolayca taklit edilebilen değerlere güvenmek zorunda kalmazsınız.
| Alan | Anahtar | Ne işe yarar |
|---|---|---|
| Bilinen Bot | waf.client.bot | İstemci doğrulanmış bir bot mu (on/off) — Googlebot gibi kimliği teyitli botlar |
| Bot Adı | waf.client.bot_name | Doğrulanmış botun adı (googlebot… — küçük harf) — tek bir botu hedefleme |
| Bot Kategorisi | waf.client.bot_category | Botun işlevi (arama, SEO, AI…) — kategori bazında izin/engel |
| Bot Skoru (0–100) | waf.bot_score | 0–100 davranışsal skor (0 = insan, 100 = bot) — doğrulanamayan otomasyonu yakalar |
| IP Altyapı Tipi | waf.client.ip_type | IP’nin kaynağı: ev kullanıcısı mı, veri merkezi mi? hosting tipi otomasyonun güçlü işaretidir |
| VPN | waf.client.vpn | Bilinen VPN çıkışı (on/off) |
| Proxy | waf.client.proxy | Bilinen açık proxy (on/off) |
| Tor | waf.client.tor | Tor çıkış düğümü (on/off) |
| Özel Relay (Apple) | waf.client.relay | Apple iCloud Private Relay (on/off) — meşru gizlilik servisi, engellemeden önce düşünün |
Bot kategorileri (17): search seo ai_crawler ai_assistant ai_search advertising social monitoring preview feed aggregator archiver security accessibility academic webhook other
IP tipleri (6): residential mobile business hosting education government
Operatörler: kategori/tip alanları (bot_category, ip_type) == != in not_in; bot_name ek olarak contains; on/off sinyalleri (bot, vpn, proxy, tor, relay) yalnızca == !=; waf.bot_score yalnızca sayısal karşılaştırma (gt ge lt le).
# Şüpheli davranışa CAPTCHAIF waf.bot_score ge 60THEN captcha
# Arama/SEO/izleme dışındaki doğrulanmış botları engelleIF waf.client.bot == onAND waf.client.bot_category not_in search, seo, monitoringTHEN block
# Yurt dışı VPN trafiğine doğrulamaIF waf.client.vpn == onAND ip.country not_in TRTHEN captcha
# Veri merkezinden gelen API isteğine JS doğrulamasıIF waf.client.ip_type == hostingAND http.request.base_uri has_prefix /apiTHEN jsKonsolda bu seçimlerle:
- Şüpheli davranışa CAPTCHA — Alan Bot Skoru (0–100) · Operatör büyük eşittir · Değer
60→ Aksiyon CAPTCHA - Doğrulanmış botları engelle — Alan Bilinen Bot · Operatör eşittir · Değer Evet VE Alan Bot Kategorisi · Operatör listede değil · Değer
search, seo, monitoring→ Aksiyon Engelle - Yurt dışı VPN trafiğine doğrulama — Alan VPN · Operatör eşittir · Değer Evet VE Alan Ülke · Operatör listede değil · Değer
TR→ Aksiyon CAPTCHA - Veri merkezi API isteğine JS — Alan IP Altyapı Tipi · Operatör eşittir · Değer
hostingVE Alan Path (sorgusuz) · Operatör ile başlar · Değer/api→ Aksiyon JS Doğrulama
HTTP Yanıt
Bölüm başlığı “HTTP Yanıt”Origin sunucunuzun verdiği yanıtı hedefler. Kullanım amacı tektir: hata üreten istemcileri otomatik yasaklamak — örn. art arda 401 alan bir IP büyük olasılıkla parola deniyordur.
| Alan | Anahtar | Ne işe yarar |
|---|---|---|
| Origin Yanıt Kodu | http.response.status | Origin’in döndürdüğü HTTP kodu — 401/403/404 sayaçlarıyla brute-force tespiti |
| Origin Yanıt Headeri | http.response.header | Origin yanıtındaki bir başlık — uygulamanızın işaretlediği istekleri yakalama |
# Yetkisiz deneme yapan IP'leri failban'e sayIF http.response.status == 401THEN failban
# Tüm 4xx hatalarını sayIF http.response.status ge 400AND http.response.status lt 500THEN failbanKonsolda bu seçimlerle:
- Yetkisiz denemeleri say — Alan Origin Yanıt Kodu · Operatör eşittir · Değer
401→ Aksiyon Otomatik Engelleme (konsol bu alanda aksiyonu otomatik kilitler) - Tüm 4xx hatalarını say — Alan Origin Yanıt Kodu · Operatör büyük eşittir · Değer
400VE Operatör küçüktür · Değer500→ Aksiyon Otomatik Engelleme
Sonraki adımlar
Bölüm başlığı “Sonraki adımlar”- Alan tipine göre hangi operatörlerin geçerli olduğu: Operatörler
- Eşleşen isteğe ne yapılacağı: Aksiyonlar
- Hazır kural kalıpları: Kural Örnekleri