Web Güvenliği, WAF & Bot Yönetimi Mühendisliği
Başlangıç fiyatı: 250.000 ₺
(9 değerlendirme) 1242 görüntülenme
Gelen trafiği insan, beyan edilen bot ve gizli otomasyon olarak ayırıyor; her blok kararını bir eşiğe ve o eşiğin gerekçesine bağlıyorum. Kenar WAF kuralları koddan yönetiliyor, kenarı geçen istek origin tarafında ikinci bir filtreye çarpıyor, her blok kategorisiyle sayılıyor. Bot beyanı sağlayıcının yayımladığı adres listeleriyle doğrulanıyor.
HİZMET 4: Web Güvenliği, WAF & Bot Yönetimi Mühendisliği
Bir siteye gelen trafiğin ne kadarının gerçek insan olduğunu bilmeden güvenlik kararı vermek, karanlıkta ateş etmeye benzer. Bugün gelen isteklerin bir kısmı tarayıcı taklidi yapan otomasyon, bir kısmı kimliğini dürüstçe beyan eden arama ve yapay zekâ botu, bir kısmı da doğrudan açık arayan tarayıcıdır. Üçü de aynı log satırında birbirine benzer. Ben bu üçünü birbirinden ayıran, kararını ölçüye dayandıran ve her bloğun gerekçesini kayda geçiren bir savunma katmanı kuruyorum.
Buradaki iş "WAF açalım, bot koruması aktif olsun" değildir. Kenarda ne yakalandığını, kenarı geçenin origin tarafında neye çarptığını, hangi eşikte kimin ne kadar süre bloklandığını ve bütün bunların gerçekten işe yarayıp yaramadığını ölçülebilir hâle getirmektir. Aşağıdaki sayıların hiçbiri örnek senaryo değil; kendi sitemde üretimde çalışan koddan ölçüldü.
Katmanlı Savunma – Yüksek Seviye Akış
| Kenar (CDN/WAF) Özel kurallar, hız sınırı, bilinen kötü trafik |
Origin Filtresi Yol deseni ve encode varyantı eşleştirme |
Sınıflandırma İnsan / beyan edilen bot / gizli otomasyon |
Doğrulama Sağlayıcı IP listesi, ASN, başlık imzası |
Karar ve Kayıt Skor, kademeli blok, metrik |
Neden Bu Hizmet?
Çoğu kurulumda güvenlik açık/kapalı bir anahtar gibi ele alınır. Sonuç ikiye ayrılır: ya kural fazla gevşektir ve saldırgan içeri sızar, ya fazla sıkıdır ve gerçek ziyaretçi kapıda kalır. İkisi de aynı sebepten olur — kararın arkasında ölçü yoktur.
| Geleneksel Yaklaşım | Benim Yaklaşımım |
|---|---|
| Hazır kural seti açılır, üzerine düşünülmez | Her kural bir eşiğe ve o eşiğin gerekçesine bağlanır |
| Bot kötü sayılır, hepsi aynı kovaya atılır | Arama botu, yapay zekâ tarayıcısı ve gizli otomasyon ayrı yönetilir |
| User-agent beyanına inanılır | Beyan, sağlayıcının kendi yayımladığı IP listesiyle doğrulanır |
| Blok süresi tek ve sabittir | Süre tekrara göre kademelenir; ilk hata ile ısrar aynı cezayı almaz |
| Kenar tek savunma hattıdır | Kenarı geçen istek origin tarafında ikinci bir filtreye çarpar |
| Korumanın çalıştığı varsayılır | Her blok kategorisiyle sayılır; çalışıp çalışmadığı ölçülür |
Mimari Yaklaşımım
1) İmza Eşleştirme ve Kaçınma Tespiti
Saldırı tespitinin ilk katmanı desen eşleştirmedir, ama listeye birebir yazılmış deseni yakalamak yetmez. Saldırgan yolu URL-encode ederek listeden kaçmayı dener. Bu yüzden yol normalizasyonu iki tur decode uygular; ikinci turun çıktısı birincisinden farklıysa bu tek başına saldırı sinyali sayılır, çünkü meşru bir tarayıcı çift-encode edilmiş yol göndermez.
Eşleşen her imza "eşleşti / eşleşmedi" ikilisi değildir; severity 1-5 ve confidence 0-100 taşır. Blok kararını bu ikisinden çıkan skor verir. Böylece zayıf bir sinyal tek başına kimseyi kapıda bırakmaz.
2) Beyan Değil, Doğrulama
Bir isteğin user-agent alanı beyandır, kanıt değildir; herkes kendini arama motoru ilan edebilir. Bu yüzden sağlayıcıların kendi yayımladıkları IP listeleri çekilip beyanla karşılaştırılır. İsteğin IP adresi listede yoksa doğrulanmış bot etiketi düşer.
Burada önemli bir ayrım var: eşlemesi bulunmayan bir token için sonuç boş bırakılır. Doğrulayamadım ile sahte aynı kutuya konmaz. Bu ayrım yapılmazsa doğrulama altyapısı olmayan meşru botlar sessizce yanlış etiketlenir.
3) Kademeli Blok ve Kenar Kotası
Blok süresi tek bir sabit değildir. İlk blok 24 saat, aynı adres tekrar gelirse 7 gün, üçüncüsünde 30 gündür. Tek seferlik bir tarayıcı ile ısrarla dönen bir saldırgan aynı cezayı almaz.
Kenar listesine ise yalnızca 7 gün ve üzeri bloklar itilir. Sebebi pratiktir: kenar listeleri kotalıdır, tek seferlik tarayıcılarla doldurulursa asıl tekrar-suçlulara yer kalmaz.
4) Uca Göre Hız Sınırı
Tek bir global istek limiti hem kaba hem yanlıştır; bir okuma sayfası ile iletişim formu aynı kullanım profiline sahip değildir. Limit 9 ayrı kovaya bölünür ve her eşik o ucun meşru profiline göre seçilir. Reddedilen istek 429 ve Retry-After başlığıyla döner; istemciye ne zaman tekrar deneyebileceği söylenir.
Sağladığım Çözümler
| Çözüm Alanı | Ne Sağlıyorum? |
|---|---|
| WAF kural yönetimi | Kenar kurallarının koddan yönetilmesi, sürüm takibi, geri alınabilirlik |
| Bot sınıflandırma | Arama, yapay zekâ, sosyal, SEO ve izleme botlarının ayrılması; her biri için ayrı politika |
| Saldırı tespiti | İmza kütüphanesi, encode kaçınma tespiti, skor tabanlı blok kararı |
| Kimlik doğrulama koruması | Giriş ucunda hız sınırı, kullanıcı adı taraması tespiti, hesap kilidi kullanmadan koruma |
| Ölçüm ve pano | Blokların kategoriyle sayılması, kenar–origin uzlaştırması, trafik dağılımı |
| Gizlilik uyumu | Ziyaretçi kimliğinin özetlenmesi, saklama süresinin kodda sabitlenmesi |
Kendi Sitemde Çalışan Sayılar
Aşağıdakiler örnek senaryo değil, bu sitede üretimde çalışan koddan ölçülmüş değerlerdir. Bir hizmeti anlatmanın en dürüst yolu, onu kendi üzerinde çalıştırıp sayıyı göstermektir.
| Bileşen | Ölçü | Ne Anlama Geliyor? |
|---|---|---|
| Saldırı imza kütüphanesi | 129 imza / 30 kategori | 95 yol deseni, 18 tarayıcı user-agent'ı, 16 sorgu yükü; her biri severity ve confidence taşır |
| Encode kaçınma tespiti | 2 tur decode | İkinci tur birinciden farklıysa tek başına saldırı sinyali sayılır |
| Bot user-agent sınıflandırması | 143 token / 8 tür | 62 token yapay zekâ ailesinde; tarama, arama indeksi ve kullanıcı çekimi ayrı işaretlenir |
| Sağlayıcı doğrulaması | 7 sağlayıcı / 14 IP listesi | 32 token–sağlayıcı eşlemesi; datacenter kaynağı için ayrıca 55 hosting ASN'i |
| Otomatik blok eşikleri | 15 dakikada 3 deneme | Tehdit skoru 11; blok süresi 24 saat, 7 gün, 30 gün olarak kademelenir |
| İkinci katman (origin) | 47 yol deseni + 7 varyant | Kenarı geçen istek log gürültüsü üretmeden 404 alır; her blok metrikte sayılır |
| Hız sınırı politikaları | 9 ayrı kova | Okuma isteğinde dakikada 200'den iletişim formunda saatte 5'e kadar |
| Giriş istismarı tespiti | 2 ayrı desen | Aynı hesaba dağıtık deneme ile tek adresten kullanıcı adı taraması ayrı ele alınır |
Kullandığım Teknolojiler
Cloudflare WAF ve Rulesets API, ASP.NET Core middleware hattı, kayan pencere hız sınırlama, Prometheus metrikleri, Grafana panoları, HMAC-SHA256 tabanlı ziyaretçi özetleme, MSSQL üzerinde saldırı ve blok telemetrisi, Kubernetes ingress seviyesinde ek kısıtlar.
Bilerek Yapmadıklarım
Bir güvenlik kurgusunda nelerin yapılmadığı, nelerin yapıldığı kadar önemlidir. Aşağıdakiler eksik değil, bilinçli karardır:
| Karar | Gerekçe |
|---|---|
| Hesap kilidi kullanılmaz | Hesap kilidi saldırgana bedava hesap kapatma aracı verir; koruma adres tarafında yapılır |
| ISP ve transit ASN'leri listeye alınmaz | Yanlış pozitif riski gerçek ziyaretçiyi keser; yalnızca hosting ASN'leri tutulur |
| Doğrulanamayan bot sahte sayılmaz | Belirsizlik ayrı bir durumdur; boş bırakılır, yanlış etiket üretilmez |
| Kısa süreli bloklar kenara itilmez | Kenar listesi kotalıdır; tek seferlik tarayıcı kotayı tüketmemelidir |
Proje Çıktıları
| Teslimat | Açıklama |
|---|---|
| Tehdit yüzeyi çıkarımı | Mevcut trafiğin insan, beyan edilen bot ve gizli otomasyon olarak ayrıştırılması |
| Kenar kural seti | Koddan yönetilen, sürümlenebilir WAF ve hız sınırı kuralları |
| Origin savunma katmanı | Uygulama içi imza eşleştirme, sınıflandırma ve kademeli blok mekanizması |
| Ölçüm panosu | Blok kategorileri, kenar–origin uzlaştırması, yanlış pozitif takibi |
| Eşik dokümantasyonu | Her eşiğin sayısı ve neden o sayı olduğu; devralan ekibin körlemesine değiştirmemesi için |
Kime Uygun?
Trafiğinin ne kadarının gerçek olduğunu bilmeyen; bot koruması açık olduğu hâlde gerçek ziyaretçi şikâyeti alan; giriş ucunda sürekli deneme trafiği gören; yapay zekâ tarayıcılarının içeriğini nasıl kullandığını yönetmek isteyen; ya da bir güvenlik olayından sonra "bu neden yakalanmadı" sorusuna cevap arayan ekipler için uygundur.
Neden Ben?
Bu hizmeti önce kendi sitemde kurdum ve üretimde çalıştırıyorum. Yukarıdaki sayıların hepsi o koddan ölçüldü; imza sayısı da, eşik değerleri de, kova sayısı da. Anlattığım her mekanizmanın çalışan bir karşılığı var — bir slaytın değil, bir dosyanın içinden geliyor.
İkinci bir nokta: bu katmanı kurarken kendi hatalarımı da gördüm. Yanlış yazılmış bir kenar kuralı, Türkiye dışından gelen ziyaretçilerde sitenin bir bölümünü kırmıştı; bunu panoda fark edip düzelttim. Güvenlik kurmak kadar, kurduğun şeyin ne kırdığını ölçebilmek de işin parçasıdır.
Sonuç
İyi bir güvenlik katmanı sessiz çalışır, ama körü körüne çalışmaz. Her blok bir gerekçeye, her eşik bir sayıya, her sayı da değiştirilebilir bir karara bağlı olmalıdır. Amaç saldırganı durdururken gerçek ziyaretçiyi kapıda bırakmamak ve bunun gerçekten böyle olduğunu ölçebilmektir.