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.

Bu hizmeti puanlayın