- Konu sahibi
- #1
HTTP flood saldırısı, bir web sunucusuna veya uygulamaya çok yüksek sayıda HTTP/HTTPS isteği göndererek işlemciyi, belleği, veritabanını, bağlantı havuzunu ya da uygulama katmanını tüketmeye çalışan bir Hizmet Engelleme saldırısıdır. İstekler çoğu zaman normal kullanıcı isteği gibi göründüğü için yalnızca IP adresi engellemek yeterli olmayabilir. Saldırı tek kaynaktan yapılabileceği gibi botnet üzerinden çok sayıda kaynaktan da yürütülebilir.
Saldırgan, örneğin ana sayfa, arama, giriş veya ürün listeleme uç noktalarına sürekli istek gönderir. Filtre veya önbellekte karşılanmadan web sunucusundan uygulamaya ulaşan isteklerde uygulama oturum kontrolü yapabilir, veritabanı sorgulayabilir veya dış bir servise bağlanabilir. Bu işlemler pahalıysa ağ bant genişliği tamamen dolmadan da site yavaşlayabilir veya yanıt veremez hâle gelebilir.
Bu saldırıyı basit bir bağlantı taşmasından ayıran nokta, HTTP katmanında gerçekleşmesidir. İstekler geçerli HTTP yöntemi, URL ve başlıklar içerebilir. Bu nedenle bağlantının kurulmuş olması veya isteğin biçimsel olarak doğru görünmesi, trafiğin meşru olduğu anlamına gelmez.
Bir mağazanın ürün arama adresi her istekte veritabanında pahalı bir sorgu çalıştırıyor olsun. Normalde aynı anda az sayıda ziyaretçi bu adresi kullanırken saldırı sırasında binlerce farklı istemci sürekli farklı arama istekleri gönderir. Ağ trafiği sunucunun kapasitesini aşmayabilir; ancak PHP çalışanları, uygulama işlemcisi veya veritabanı bağlantıları dolar. Sonuç olarak saldırıya konu olmayan sayfalar da zaman aşımına uğrayabilir.
Aşağıdaki ayrım, ilk müdahale kararını kolaylaştırır:
Tek bir belirtiye bakarak saldırı kararı vermeyin. İstek zamanını, hedef URL'yi, HTTP yöntemini, yanıt kodunu, yanıt süresini, istemci ağlarını ve uygulama/DB kaynak kullanımını birlikte karşılaştırın. Aynı anda gerçek kullanıcıların da artmış olabileceğini hesaba katın.
Yalnızca IP engellemek: Dağıtık saldırılarda kaynaklar çok sayıda olabilir; ayrıca paylaşımlı ağlardaki gerçek kullanıcılar yanlışlıkla etkilenebilir.
Sadece bant genişliğine bakmak: HTTP flood, ağ kapasitesi dolmadan uygulama işlemcisi veya veritabanını tüketebilir. Uygulama ve veritabanı metrikleri birlikte izlenmelidir.
Her yüksek trafiği saldırı sanmak: Kampanya, içerik paylaşımı veya arama motoru taraması benzer artış oluşturabilir. URL, davranış ve kaynak kullanımını karşılaştırmadan sert engel uygulamak hatalıdır.
Sadece User-Agent engellemek: Bu alan güvenilir kimlik doğrulama değildir. Karar verirken istek sıklığı, hedef işlem, oturum davranışı ve kaynak etkisi birlikte değerlendirilmelidir.
HTTP flood nasıl çalışır?
Saldırgan, örneğin ana sayfa, arama, giriş veya ürün listeleme uç noktalarına sürekli istek gönderir. Filtre veya önbellekte karşılanmadan web sunucusundan uygulamaya ulaşan isteklerde uygulama oturum kontrolü yapabilir, veritabanı sorgulayabilir veya dış bir servise bağlanabilir. Bu işlemler pahalıysa ağ bant genişliği tamamen dolmadan da site yavaşlayabilir veya yanıt veremez hâle gelebilir.
Bu saldırıyı basit bir bağlantı taşmasından ayıran nokta, HTTP katmanında gerçekleşmesidir. İstekler geçerli HTTP yöntemi, URL ve başlıklar içerebilir. Bu nedenle bağlantının kurulmuş olması veya isteğin biçimsel olarak doğru görünmesi, trafiğin meşru olduğu anlamına gelmez.
Somut varsayımsal örnek
Bir mağazanın ürün arama adresi her istekte veritabanında pahalı bir sorgu çalıştırıyor olsun. Normalde aynı anda az sayıda ziyaretçi bu adresi kullanırken saldırı sırasında binlerce farklı istemci sürekli farklı arama istekleri gönderir. Ağ trafiği sunucunun kapasitesini aşmayabilir; ancak PHP çalışanları, uygulama işlemcisi veya veritabanı bağlantıları dolar. Sonuç olarak saldırıya konu olmayan sayfalar da zaman aşımına uğrayabilir.
Aşağıdaki ayrım, ilk müdahale kararını kolaylaştırır:
| Gözlem | Muhtemel yorum | İlk karar |
|---|---|---|
| İstek sayısı artmış, yanıt süreleri normal | Meşru kampanya veya tarama olabilir | Kaynak, URL ve istemci davranışını doğrula |
| Az sayıda pahalı URL yoğun kullanılıyor | Uygulama katmanı yükü veya hedefli flood | Önbellek, istek sınırı ve pahalı işlemleri incele |
| Çok sayıda kaynaktan benzer istek geliyor | Dağıtık HTTP flood olasılığı | Hosting, CDN veya WAF sağlayıcısından trafik azaltma iste |
Tek bir belirtiye bakarak saldırı kararı vermeyin. İstek zamanını, hedef URL'yi, HTTP yöntemini, yanıt kodunu, yanıt süresini, istemci ağlarını ve uygulama/DB kaynak kullanımını birlikte karşılaştırın. Aynı anda gerçek kullanıcıların da artmış olabileceğini hesaba katın.
Uygulanabilir müdahale sırası
- Web sunucusu, uygulama ve veritabanı metriklerini aynı zaman aralığında inceleyin. Hangi URL veya işlem kaynak tüketimini başlatıyor, bunu belirleyin.
- Erişim kayıtlarında saldırı ile normal trafiği ayırın. Tekrarlanan yolları, olağan dışı istek hızını, aynı davranışı gösteren istemci kümelerini ve başarısız istek oranını karşılaştırın. Yalnızca User-Agent alanına güvenmeyin; kolayca değiştirilebilir.
- Yalnız paylaşılması güvenli, uygun okuma yanıtlarını önbelleğe alın. Oturum veya kişisel veri içeren yanıtları herkese açık cache'e koymayın. Pahalı uç noktalardaki gereksiz sorguları azaltın ve kimlik doğrulama gerektirmeyen işlemleri gözden geçirin. Bu değişiklikleri önce normal işlevin bozulmadığı kontrollü bir ortamda doğrulayın.
- Web sunucusu veya WAF üzerinde isteği kaynağa, URL'ye, yönteme ve istemci davranışına göre sınırlayın. Sabit bir küresel engel, gerçek kullanıcıları da engelleyebileceğinden kademeli ve ölçülebilir kurallar kullanın.
- Yük uygulama sunucusuna ulaşmadan önce kesilmiyorsa hosting, CDN veya DDoS koruma sağlayıcısına başvurun. Uygulama içindeki bir kural, sağlayıcıya kadar dolan ağı veya bağlantıları tek başına boşaltamaz.
- Müdahale sonrasında yanıt sürelerini, hata oranını, kaynak kullanımını ve gerçek bir test ziyaretini yeniden kontrol edin. Trafik azalmış olsa bile saldırı kaynağı ve pahalı uç nokta için kalıcı düzeltmeyi planlayın.
Sık yapılan hatalar
Yalnızca IP engellemek: Dağıtık saldırılarda kaynaklar çok sayıda olabilir; ayrıca paylaşımlı ağlardaki gerçek kullanıcılar yanlışlıkla etkilenebilir.
Sadece bant genişliğine bakmak: HTTP flood, ağ kapasitesi dolmadan uygulama işlemcisi veya veritabanını tüketebilir. Uygulama ve veritabanı metrikleri birlikte izlenmelidir.
Her yüksek trafiği saldırı sanmak: Kampanya, içerik paylaşımı veya arama motoru taraması benzer artış oluşturabilir. URL, davranış ve kaynak kullanımını karşılaştırmadan sert engel uygulamak hatalıdır.
Sadece User-Agent engellemek: Bu alan güvenilir kimlik doğrulama değildir. Karar verirken istek sıklığı, hedef işlem, oturum davranışı ve kaynak etkisi birlikte değerlendirilmelidir.