DDoS saldırısı, web sitelerini veya sunucuları aşırı trafikle erişilemez hale getiren bir siber saldırı türüdür. Bu içerikte DDoS saldırısının temel özellikleri, saldırı türleri, botnet kullanımı ve etkili korunma yöntemleri detaylı ve anlaşılır bir şekilde ele alınıyor.
DDoS saldırısı, bir web sitesi, sunucu veya çevrimiçi servisin erişilemez hale gelmesine neden olmak için altyapının işleyemeyeceği kadar yüksek bir trafik yükü oluşturma girişimidir. Saldırganlar, sistemi hacklemek veya veri çalmak yerine, devasa miktarda istek göndererek mevcut ağ ya da işlemci kaynaklarını tüketir.
DDoS saldırısının en önemli özelliği, saldırının dağıtık olmasıdır. Trafik, binlerce hatta milyonlarca cihazdan aynı anda gelebilir; bu nedenle tek bir kaynağı engellemek çözüm olmaz. Bant genişliği, işlemci, bellek veya bağlantı limiti aşıldığında, normal kullanıcılar hatalar görmeye, gecikmeler yaşamaya ya da servise erişememeye başlar.
Bu yazıda, DDoS saldırısı nedir, çok sayıda isteğin sunucuyu nasıl aşırı yüklediği, DDoS türleri ve modern koruma sistemlerinin kötü amaçlı trafiği nasıl ayırt ettiği gibi konuları basit şekilde ele alıyoruz.
DDoS, İngilizce "Distributed Denial of Service" yani "Dağıtık Hizmet Engelleme" anlamına gelir. Amaç, bir web sitesi, sunucu veya ağ donanımına öyle bir yük bindirmektir ki, sistem normal kullanıcıları artık düzgün şekilde servis edemez hale gelsin.
Örneğin, aynı anda birkaç bin ziyaretçiyi kaldırabilen bir e-ticaret sitesi düşünün. Aniden yüz binlerce cihazdan istek gelirse, sunucu tüm kaynaklarını bu talepleri karşılamaya harcar. Kapasite aşıldığında sayfalar yavaş açılır, hata mesajları görünür ya da site tamamen yanıt vermez.
DDoS ile klasik DoS arasındaki ana fark, trafik kaynaklarının sayısıdır. Klasik DoS saldırısında yük bir cihazdan veya az sayıda sistemden gelirken, DDoS'ta istekler ağın çok farklı noktalarından aynı anda gelir. Bu nedenle saldırı "dağıtık" olarak adlandırılır.
DDoS saldırısı her zaman sunucunun hacklendiği anlamına gelmez. Asıl hedef, servis erişilebilirliğini bozmaktır. Veritabanı ya da kullanıcı dosyaları zarar görmeyebilir; ancak saldırı anında site, uygulama veya API kullanılamaz hale gelir.
Altyapının farklı bileşenleri aşırı yüklenebilir: Bazen saldırgan, tüm internet hattını doldurmayı, bazen ağ ekipmanını çok fazla bağlantı kurmaya zorlamayı, bazen de işlemci, bellek veya veritabanı kaynaklarını tüketen istekler göndermeyi seçer.
Kullanıcı perspektifinden bakıldığında sonuç benzer: Site yavaşlar, bağlantı kopar, sunucu hata döndürür veya tamamen yanıt vermez. Ancak altyapı seviyesinde erişimsizliğin nedenleri farklı olabilir ve koruma yöntemleri saldırı türlerine göre değişir.
Her sunucunun kaynakları sınırlıdır. Bir saniyede işleyebileceği istek sayısı, destekleyebileceği eşzamanlı bağlantı sayısı ve ağ bant genişliği bellidir. DDoS saldırısı bu sınırları aşmayı hedefler.
Bir kullanıcı siteyi açtığında, cihazı bir istek gönderir; bu istek ağa ulaşır ve servisin altyapısına gelir. Sunucu, isteği alır, gerekli kaynağı belirler, gerekirse uygulama ya da veritabanına erişir ve yanıt oluşturur.
Her istek zaman ve kaynak gerektirir. Bir işlemin işlenmesi milisaniyeler sürse de, sunucu aynı anda sadece belirli sayıda isteği karşılayabilir. Fazla istekler sıraya alınır ya da kaynakların boşalmasını bekler.
DDoS'ta trafik aniden tavan yapar: Binlerce yerine yüz binlerce ya da milyonlarca istek gelir. Kuyruklar uzar, bağlantılar dolup taşar, işlemci ve bellek yüklenir, ağ hattı tamamen dolar.
Bu durumda, normal kullanıcının isteği de diğerlerinden farklı değildir; kaynaklar müsait olana kadar bekler. Sunucu sınırda çalışıyorsa bağlantı zaman aşımına uğrar veya 502, 503, 504 gibi hata kodları alınır.
Bazen sunucu hâlâ çalışabilir durumda olsa bile, saldırgan trafik tüm bant genişliğini doldurduğunda, istekler uygulamaya ulaşamaz. Örneğin, 10 Gbit/sn'lik bir hatta 50 Gbit/sn trafik gelirse, fazla trafik uygulamaya erişmeden engellenir.
Bir servisi aşırı yüklemek için illa karmaşık ya da güvenlik açığı kullanan istekler göndermek gerekmez. Bazen çok sıradan sayıda istek yeterlidir.
Özellikle, istekler büyük veritabanı aramaları, karmaşık sayfa oluşturma, birden fazla iç servise erişim veya dinamik yanıt hesaplama gibi kaynak yoğun işlemleri tetikliyorsa yük daha fazla olur. Tek bir böyle istek, küçük bir statik dosya isteğine göre çok daha fazla kaynak harcar.
Başka bir yöntem de çok sayıda eşzamanlı bağlantı kurmaktır. Her bağlantı üzerinden az veri gelse bile, sunucu ya da ağ donanımı bağlantı durumu bilgisini tutmak ve kaynak ayırmak zorunda kalır.
Bu yüzden altyapıyı çeşitli şekillerde aşırı yüklemek mümkündür: Tüm ağ kanalını doldurmak, bağlantı limitini aşmak veya uygulamayı çok fazla işlemi aynı anda yapmaya zorlamak. Hangi kaynak darboğaz oluyorsa, saldırı tipi ve koruma yöntemi buna göre değişir.
DDoS saldırıları, saldırganın hangi altyapı kaynağını hedef aldığına göre ayrılır. Kimi saldırılar büyük veri akışıyla internet kanalını doldurur, kimileri ağ ekipmanını, kimileri ise uygulamayı zorlar.
Bu saldırıların ana amacı, mevcut bant genişliğini tamamen doldurmaktır. Sunucuya ya da ağ altyapısına öyle büyük miktarda veri gönderilir ki, normal trafiğe yer kalmaz.
Böyle bir durumda web sunucusu normal çalışıyor olabilir; fakat kullanıcılar bağlantı kanalında yoğunluk nedeniyle siteye erişemez. Yük genellikle saniyede bit cinsinden ölçülür; saldırı trafiği arttıkça, altyapının işleyebilmesi için daha fazla bant genişliği gerekir.
Böyle saldırılara karşı, trafiğin mümkün olduğunca erkenden, sunucuya ulaşmadan süzülmesi önemlidir. Data center'a giden kanal dolduysa, uygulama içinde isteklerin engellenmesi işe yaramaz.
Bu tür DDoS saldırıları, iletilen veri miktarından çok ağ yığını ve ağ ekipmanlarının sınırlı kaynaklarını hedef alır.
Bağlantı kurma ve sürdürmede, yönlendiriciler, güvenlik duvarları ve sunucular belirli durum bilgilerini kaydeder. Çok sayıda yeni bağlantı olduğunda, bu tablolar ve kuyruklar dolar.
Böylece, toplam trafik miktarı aşırı olmasa bile cihaz yeni bağlantıları karşılayamaz. Yani düşük hacimli ama yüksek bağlantı sayılı saldırılar da altyapıyı zorlayabilir.
Uygulama seviyesindeki saldırılarda, gelen istekler sıradan kullanıcı trafiği gibi görünebilir. Sunucuya çok sayıda HTTP veya HTTPS isteği (sayfa, arama, API vb.) gönderilir.
Sorun, her isteğin anlamlı miktarda kaynak gerektirmesidir. Sunucu uygulamayı çalıştırır, veritabanına erişir, hesaplama yapar ve dinamik yanıt üretir.
Çok fazla istek geldiğinde, işlemci, bellek, veritabanı bağlantı havuzu veya diğer bileşenler sınırda çalışır. Toplam ağ trafiği az görünebilir; bu tür saldırıyı yalnızca veri aktarım hızına bakarak tespit etmek zordur.
DDoS'un bu şekilde kategorize edilmesi koruma için önemlidir. Ağ kanalını iyi koruyan bir sistem, uygulamaya gelen doğru görünümlü istekleri engelleyemeyebilir. Bu nedenle modern savunma sistemleri, toplam trafik, ağ bağlantıları ve tekil HTTP istekleri dahil çok katmanda analiz yapar.
DDoS saldırısını basit bir engelleme ile durdurmanın zor olmasının ana sebeplerinden biri, saldırı trafiğinin çok sayıda kaynaktan gelmesidir. Saldırganlar bunun için çoğunlukla botnet dediğimiz, sahiplerinin haberi olmadan uzaktan kontrol edilen cihaz ağlarını kullanır.
Botnet'e bulaşmış bilgisayarlar, sunucular, yönlendiriciler, güvenlik kameraları, NAS'lar ve diğer IoT cihazları dahil olabilir. Tek başına her biri az trafik gönderir; ancak binlercesi birlikte çalışınca yükleri birleşir.
Örneğin, bir cihaz saniyede onlarca istek üretse, büyük bir botnet yüz binlerce veya milyonlarca istek gönderebilir. Saldırılan sunucuya, farklı IP adresleri ve ağlardan gelen bu istekleri normal kullanıcıdan ayırmak zordur.
Bu dağıtıklık, tek bir adresi engellemenin etkisiz olmasına sebep olur. Savunma sistemi bazı kaynakları engellese de diğerleri saldırmaya devam eder. Hatta aşırı sıkı filtreler, aynı ağ veya bölgedeki gerçek kullanıcıları da engelleyebilir.
Botnetler genellikle önceden oluşturulur. Açık cihazlar zararlı yazılımla enfekte edilir ve yönetim altyapısına bağlanır. Operatör, hepsine aynı anda komut verebilir ve hedef kaynağa trafik göndermelerini sağlayabilir.
Daha fazlası için Botnet nedir, tehlikeleri, çalışma prensibi ve korunma yolları başlıklı makalemizi inceleyebilirsiniz.
Yine de botnet, her DDoS saldırısı için şart değildir; yük başka yollarla da oluşturulabilir. Ancak çok sayıda dağıtık kaynağın kullanılması, DDoS ile klasik DoS arasındaki temel farkı ortaya koyar: saldırı trafiği ağın birçok bağımsız noktasından aynı anda gelir.
DDoS savunması, tek bir teknolojiden değil, birden fazla katmanın birleşiminden oluşur. Sistemin amacı, anormal yüklenmeyi erkenden tespit etmek, şüpheli trafiği ayırmak ve ana altyapının aşırı yüklenmesini önlemektir.
İlk aşama, yük artışının bir saldırıdan mı yoksa olağan kullanıcı yoğunluğundan mı kaynaklandığını anlamaktır. İzleme sistemleri; istek sayısı, yeni bağlantı adedi, trafiğin IP adreslerine ve bölgelere dağılımı gibi parametreleri kontrol eder.
Mutlak yük kadar davranıştaki değişim de önemlidir. Örneğin, site genelde dakikada birkaç bin istek alıyorsa ve bu sayı birden onlarca kat artarsa, bu DDoS'un işareti olabilir.
Tek bir gösterge yeterli değildir. Örneğin, popüler bir mecrada link paylaşılması da geçici yoğunluğa neden olabilir. Bu yüzden modern sistemler çok sayıda veriyi karşılaştırır ve trafiğin normal kullanıcı davranışına ne kadar benzediğini analiz eder.
Şüpheli trafik tespit edildiğinde, isteklerin bir kısmı ana sunucuya ulaşmadan engellenebilir. Bunun için ağ filtreleri, istek sıklığı sınırlandırma kuralları ve istemci davranış analizleri uygulanır.
En temel yöntemlerden biri rate limiting'tir. Belirli bir kaynak (veya grup), belirli bir sürede yalnızca belli sayıda istek gönderebilir. Limit aşılırsa sonraki istekler geçici olarak engellenir veya düşük öncelikli işlenir.
Web uygulama katmanı saldırılarında ise WAF (Web Application Firewall) kullanılabilir. WAF, siteye gelen HTTP/HTTPS isteklerini analiz ederek şüpheli trafiği uygulamaya ulaşmadan filtreler.
En büyük zorluk, gerçek kullanıcıları saldırganlarla birlikte engellememektir. Bu yüzden etkili savunma, sadece katı limitler veya IP listeleriyle oluşturulmaz.
Bir diğer önemli prensip, gelen trafiğin tek bir sunucuya yönlendirilmemesidir. Trafik, birden fazla sunucuya, veri merkezine veya ağ noktasına dağıtılabilir.
Bunun için CDN, yük dengeleyiciler ve dağıtık ağ altyapısı kullanılır. Sistemin kaynakları ve erişim noktası sayısı arttıkça, tek bir yoğun saldırı ile aşırı yüklenmesi zorlaşır.
Yük dağıtma teknolojileri hakkında daha fazla bilgi için Yük dengeleyici nedir? Web siteleri ve uygulamalarda trafik dağıtımı yazımızı inceleyebilirsiniz.
Büyük ağlarda Anycast de kullanılır. Burada, tek bir IP adresi birden fazla farklı noktadaki sunucu tarafından paylaşılır ve gelen trafik en uygun noktaya yönlendirilir. Böylece yük dengelenir ve saldırı trafiğinin tek bir yere yönelmesi engellenir.
Anycast DNS koruması hakkında daha fazlası için Anycast DNS: Nedir, avantajları ve DDoS koruması yazımıza göz atabilirsiniz.
DDoS'a karşı mutlak bir koruma yoktur; çünkü her altyapının bant genişliği ve işlem gücü açısından fiziksel sınırları vardır. Yeterince büyük bir saldırı, en güçlü sistemleri bile aşırı yükleyebilir.
Bu yüzden amaç, saldırıyı tamamen önlemek değil, sistemin kaldırabileceği yükü en üst seviyeye çıkarmak ve zararlı trafiği normal kullanıcılardan önce filtrelemektir.
En dayanıklı çözümler; sürekli izleme, otomatik filtreleme, istek sınırlandırma, yük dağıtımı ve harici trafik temizleme servislerinin birleşiminden oluşur. Çok katmanlı bu yaklaşım, büyük saldırılar sırasında dahi gerçek kullanıcıların hizmet almaya devam etmesini sağlar.
DDoS saldırısı, altyapının kısıtlı kaynaklarını aşırı yükleyerek bir site veya servisin erişilebilirliğini bozar. Trafik akışı, ağı doldurabilir, bağlantı limiti aşıp uygulamayı yorabilir veya aynı anda çok fazla işlem yapılmasına neden olabilir.
Dağıtık saldırılar, trafik çok sayıda cihazdan geldiğinde özellikle zorludur. Bu durumda tekil IP adreslerini engellemek etkisiz kalır. Savunma, istek davranışını analiz etmeli ve yükü birden fazla noktaya yaymalıdır.
Pratikte, DDoS'tan korunma çok katmanlıdır: izleme ile anomali erken tespit edilir, filtreleme ve rate limiting zararlı isteklerin bir kısmını eler, CDN, Anycast ve yük dengeleyiciler de tek sunucunun yükünü azaltır. Zararlı trafik ne kadar erken ayrılırsa, servis erişilebilirliğini ciddi saldırılarda koruma olasılığı o kadar artar.