REST API'lerimi TR7 WAF ile koruyabilir miyim?
Kısa cevap
Evet. REST API'ler web sayfalarıyla aynı HTTP vService üzerinde, aynı WAF ile korunur; ayrı bir API ürünü ya da ayarı gerekmez (kullanım senaryoları). İstek Content-Type header'ına göre ayrıştırılır: JSON ve XML gövdelerin her anahtarı ve metin değeri, query parametreleri, header'lar ve path ayrı ayrı imzalarla taranır; OWASP API Top 10'un bütün maddeleri karşılanır, onuncu madde imzalarla değil yapısal kurallarla. Pozitif model olarak her endpoint bir sayfa tipi olur: izin verilen metotlar, parametre, header ve JSON anahtar listeleri, derinlik ve uzunluk sınırları tanımlanır. Bu kural seti API'nin OpenAPI tanımından Import (OpenAPI) ile tek adımda üretilebilir ya da trafikten Analysis & Learning ile öğrenilebilir. Engellenen API istemcisine HTML yerine JSON engelleme yanıtı döndürülebilir. WAF yalnızca isteği denetler; JWT, OAuth ya da API anahtarının geçerliliğini doğrulamaz ve yanıtı taramaz. İstek hızı sınırı WAF'ta değil, L7 DDoS & Threat Protection'da ve Load Balancer Conditions ve action'larıyla kurulur.
Nasıl Çalışır?
WAF bir API isteğini gövdesinin türüne göre ayrıştırır ve her parçayı ayrı denetler:
| İstek bölümü | Nasıl denetlenir |
|---|---|
| Path | Path, sayfa tipleriyle eşleştirilir; metot, path uzunluğu ve derinliği denetlenir. |
| Query parametreleri | Her parametre adı ve değeri ayrı ayrı imza taramasından ve Query denetimlerinden geçer. |
| Header'lar | Header denetimleri ve imza taraması. |
| JSON gövde | Content-Type …/json ya da …+json türündeyse (ör. application/json; charset=utf-8, application/problem+json) gövde JSON olarak ayrıştırılır; her anahtar yolu ve metin değeri JSON denetimlerinden ve imza taramasından geçer. |
| XML gövde | Content-Type …/xml ya da …+xml türündeyse gövde XML olarak ayrıştırılır; eleman ve attribute yolları ve değerleri Xml denetimlerinden ve imza taramasından geçer. |
| Diğer gövdeler | Form dışındaki türler (ör. application/graphql, text/plain) ham gövde olarak Raw denetimlerinden geçer. |
Her ihlal isteğin saldırı puanına eklenir: imza isabetleri 2 ile 8 (yerleşik üç kuralda 9), yapısal ihlaller (beklenmeyen parametre, izinsiz metot, aşırı derinlik) 24 puandır ve puan engelleme eşiğine ulaştığında istek Blocking modunda engellenir (ihlal puanları).
TR7'de API Koruması
Önerilen başlangıç sırası:
- HTTP vService'te WAF açılır (Bir vService'te WAF korumasını nasıl etkinleştiririm?). HTTPS'te TLS bu vService'te sonlandırılmalıdır (WAF, HTTPS trafiğinin içeriğini görebilir mi; bunun için ne gerekir?).
- API ayrı bir alan adındaysa kendi host grubu eklenir (Host Group nasıl eklenir; Virtual Host Patterns alanına ne yazılır?).
- Kural seti OpenAPI tanımından içe aktarılır ya da trafikten öğrenilir; Analysis & Learning penceresinde Only Browsers işareti kaldırılır, çünkü API istemcileri tarayıcı olarak tanınmaz. Analiz sonucunda çıkan path'ler kontrol edilir; listede yalnız WAF kuralı oluşturulacak endpoint'ler kalmalıdır. Bilinmeyen ya da şüpheli path'lerin uygulamadan önce Exclude from Analysis ile analizden çıkarılması önerilir.
- Blocking Page JSON şablonuyla ayarlanır.
- Host grubu Monitor modunda gerçek trafikle denenir, false positive'ler öğretilir, ardından Blocking moduna geçilir (Learning modundan Monitor'a, Monitor'dan Blocking'e ne zaman geçmeliyim?).
Sık Karıştırılan Noktalar
- "API koruması için ayrı bir ürün gerekir." API trafiği web trafiğiyle aynı WAF ile, aynı vService üzerinde denetlenir; API'ye özgü ayarlar sayfa tiplerinin alan denetimleridir.
- "WAF API anahtarını ya da JWT'yi doğrular." WAF kimlik doğrulamaz; yalnızca header'ın varlığı (Required Headers) ve değerinin biçimi (Header Value Pattern) denetlenebilir. Bu denetim taklit edilebilir; kimlik doğrulaması değildir.
- "WAF istek sayısını sınırlar." Hız sınırı L7 DDoS & Threat Protection ve Load Balancer tarafındadır (WAF ile L7 DDoS & Threat Protection arasındaki fark nedir; ikisine birden ihtiyacım var mı?).
- "Content-Type yanlış olsa da JSON denetimleri çalışır." Gövde, Content-Type
…/jsonya da…+jsontüründe değilse JSON olarak ayrıştırılmaz; ham gövde olarak taranır.
Dokümantasyonda nasıl yapılır
