DDOS Nedir? Nasıl Önlenir
- İbrahim Mert COŞKUN
- Sep 24, 2018
- 9 min read
Selamlar. Uzun bir süredir blog ile ilgilenemedim. Bunun sebebi; domain adresimin ödeme zamanında bir tür aksaklık ve sıkıntı olmasından kaynaklandı. Yaklaşık 1 aylık saç baş yolduran, uzun ve yorucu bir çözüm zamanından sonra nihayet site tekrardan yayına girdi. Sorunu kısa bir özet geçmek istersem;
Normalde 11.08 tarihinde domain adresimin yenilenme tarihiydi. Ben de 08.08 tarihinde yani üç gün önceden ödememi yaptım. Ancak bir şekilde domain sağlayacımdan kaynaklanmayan (!) bir hata ile "imertcoskun.com" domain adresimin ödeme yapılmadığı ve aktif olmadığını belirttiler. Ancak whois sorgusunda ve domain sağlayıcımın yönetim panelinden gördüğüm üzere adresin aktif olduğu gözüküyordu. Böyle saçma bir durum ile karşı karşıyaydım. Domain adresimin ücretini erken ödememe, whois ve yönetim panelinden domain adresimin aktif olduğunu görmeme rağmen siteye ulaşım sağlanamıyordu. Tam bir iki uçlu değnek. Uzun uğraşlar sonucunda sorunun ICANN tarafından olduğunu öğrendik ve yoğun bir iletişim trafiğinden sonra sonunda sorun çözülebildi ama domain sağlayıcımın dikkatsizliği ve ödeme sonrası sistemin kontrol "edilmemesi" ile ortaya çıkan sorun beni bir hayli yordu.
Bu olaydan sonra artık bir blog yazısı yazmanın zamanının geldiğini düşünerek bir konu hakkında yazmak istedim ve DDOS konusu başlığa eklenmiş oldu. Nedir bu DDOS. DOS'dan farkı nedir? Türleri nedir ve nasıl engellenir? Bu yazımda bunlara değineceğim.
Temel Kavramlar: DDOS, DOS, SYN - ACK

DOS (Denial of Service); normal şartlarda istemcilere hizmet edip cevap vermesi gereken sunucuların, bir şekilde hizmet edemez duruma getiren saldırı tipidir.
DDOS (Distributed Denial of Service); sunucuyu hizmet veremez duruma getirmek için aşırı istek işlemenin birden çok istemci ile yapılmasına verilen isimdir.
Bir çok <<web sitesinin - blog'un - kitabın>> anlattığı gibi genel bir örnek ile açıklayalım. Yoldasınız ve ekmek almaya gidiyorsunuz. Fırını gördünüz yavaş yavaş ilerliyorsunuz. Az bir mesafe kala şakkadanak on tane otobüs geliyor ve her otobüsten insanlar inerek fırına giriyorlar. Amaçları ekmek almak. Ama otobüsten inen bu insanlar bir iki tane değil de yüz adet yüz elli adet ekmek aldığını düşünün. Ve sadece bir kişi değil her insan en az yüz adet ekmek alıyor. Bu haliyle sizde sıraya girerek sıranın size gelmesini ve ekmeğinizi alıp eve gitmek istiyorsunuz. Ancak oluşan yoğunluk ve sayı fazlalığı yüzünden ekmek almanız oldukça zorlaşıyor, geç kalıyor ya da fırını terk ediyorsunuz. Ya da bir başka ihtimal ile fırının kaynakları tükeniyor ve siz ekmeğinizi alamadan fırın kapanıyor.
Saldırının temel mantığı bu şekildedir. Siz bir siteye erişmek istersiniz (Bir bankanın web sitesi olsun) Siz sadece ufak bir havale işlemi yapıp çıkacaksınız. Ancak bankanın web sitesine o kadar çok yığılma o kadar çok insan(!) erişmek istiyor ki yoğunluktan bir türlü siteye erişemiyorsunuz. Haliyle banka sistemleri bu yükü daha fazla kaldıramayacak ve çökecektir. Kısacası zombi bilgisayarlar ile bir sisteme sürekli paketler yollayarak sistemi meşgul etme ve cevap verememe işlemidir. Sistem bir süre sonra isteklere cevap veremez hale gelecek ve çökecektir.
Genel olarak mantığı anladığımızı düşünüyorum. Hedeflendiği sistemin işleyişini engellemeye yönelik saldırı tipidir. Asıl amacı web uygulamalarından ziyade direk server'a odaklanır. Bu sayede sunucunuz çalışamaz hale gelir. Şimdi kavramları biraz açalım.
Denial Of Service (DOS) bir hizmet aksatma saldırısıdır. Temel olarak hedeflenen sitemin çalışmasını durduracak ya da tamamen engellemeye yöneliktir. Bu saldırı ile bir korsan sitenizin barındırılığı sunucudaki diğer tüm sitelerin de devre dışı olması anlamına gelir.

DOS saldırıları mantık olarak büyük oranda veri paketlerinin sunucuya gönderilmesiyle çalışır. Hedef sisteme gönderilen paketler, sunucudan yanıt bekler. Çok fazla iletilen bu paketlere sunucular tarafından cevap verilemez hale gelir ve bu durum da sunucunun çalışmamasına sebep olur. Taleplerin yerine getirilmesini engellemek amacıyla hedeflenen kaynağın gereksiz talepler ile doldurulmasıyla gerçekleşir.
Ek olarak DOS saldırıları sadece paket yönlendirmekten ziyade gönderilen paketler işlemci, hafıza ve bant genişliği gibi sistem kaynaklarını tüketir.
Distributed Denial Of Service (DDOS) ise DOS saldırısınından farkı, birden fazla noktadan tek bir merkeze yapılıyor olmasıdır. Şöyle ki; DOS saldırıları tek bir kaynaktan olup, herhangi hedef bir sisteme doğrudur. Ancak DDOS saldırılarında birden fazla makine tek bir hedefe odaklanır. Bahsettiğimiz makine sayısı yüzlerce hatta binlercedir. Bundan dolayı da DDOS saldırıları tehlikelidir.
Günümüzde ara sıra bu tarz haberler duymaktayız. Yabancı grup DDOS ile çökertildi, hizmet veremedi" vs. gibi. Hizmet verememesinin amacı ise hedefe çok fazla paketin gitmesi ve bu paketlerin hedefi meşgul etmesidir.

Binlerece kaynaktan saldırı yapılır dedik ama yanlış anlaşılmasın. Bir çok kişi aynı anda sözleşip belirlenen sisteme saldırı yapmıyor. Hayır öyle bir amelilik yok. DDOS saldırıları genelde "Zombi Bilgisayar" dediğimiz komut bekleyen bilgisayarlar aracılığıyla yapılıyor. Şöyle ki; Bu iş, çoğunlukla tek kaynağın birden fazla sistemi yönlendirmesiyle yapılıyor. Bir korsan hedef sisteme tek başına büyük oranda zarar veremezken, kendi emelleri içi birden fazla sistemi ele geçirip ya da bu işi gönüllü olarak yapan kişiler ile beraber hedefe saldırabilir. Bu ele geçirme işlemi "zombi" adı verilen yazılımlar vasıtasıyla yapılır. Korsan belirlediği gün ve saatte tek bir komutla istediği hedefe bilgisayarları yönlendirebilir. Tek kaynaktan bile yapılan DOS saldırılarının etkileri düşünüldüğü zaman binlerce kaynaktan yapılan DDOS saldırılarının yaratacağı etkiyi tahmin edebiliriz.
DDOS saldırısı içi zombi görevi gören bilgisayar topluluğuna "BOTNET" adı verilir. BOTNET'ler aracılığıyla aynı anda hedef sisteme binlerce istek atılabilir. Ancak çok az insan bilgisayarını köle bir bilgisayar yapmak ister. Peki nasıl oluyor da bu kadar bilgisayara erişilebiliyor? Bu olay tamamen hacker'ın hayal gücüne kalmıştır. Bir korsan ihtiyaç duyduğu sistemi zombileştirmek için çeşitli yöntemler kullanabilir. Doğrudan zombi yazılımını enjekte de edebilir ya da dolaylı yoldan çeşitli web sayfaları ve spam postaları kullanarak bu trojanı sisteminize yidirebilir. Böylece zombi olduğunuzdan habersiz bir topluluğu, saldırı aracı olarak kullanmaktan çekinmeyecektir.
Saldırı Metodları
ICMP Flood
ICMP (Internet Control Message Protocol); olarak isimlendirilir. Amacı bilgisayarlarda geri bildirim mekanizmasını sağlar diyebiliriz. Hata mesajları ve TCP/IP yazılımının kendi mesaj trafiği için kullanılır. Hataları raporlamak ve kontrol etmek için kullanılır. Genel olarak sistemler arası kontrol mesajları IP yerine ICMP ile aktarılır. Flood ise; kısa zaman dilimlerinde anlamlı veya anlamsız veri paketlerinin, cevap verilemeyecek şekilde gönderilmesidir. ICMP Flood bir tür saldırı çeşididir. ICMP protokolünü kullanarak hedef bilgisayarı devre dışı bırakmaya yönelik yapılır. Genel olarak Flood saldırısı altında birden fazla türü vardır. Bunlara değinelim. Değinmeden önce SYN Flood hakkında ufak bir bilgi verelim.
SYN Flood; SYN saldırısı bir tür hizmet reddi saldırısıdır (DDOS). Bu saldırı türünde bir saldırgan sistemin isteklerini cevap verememesini amaçlayan bir saldırı türüdür. Üçlü el sıkışma konusunu burada değinmiştik. Bu saldırıda normal bir şekilde 'üçlü el sıkışma' olayı oluyor. Ama amaç saldırgan bir durum olduğu için şöyle bir tablo ortaya çıkıyor;

Klasik bir TCP üçlü el sıkışması. Ancak amaç sistemi çalıştırılmayacak şekile getirilmek istenirse;

Klasik bir şekilde hedef sisteme SYN paketi gönderiliyor. Karşı makina da klasik bir şekilde SYN - ACK paketini gönderiyor. Ancak hedef sistem beklenen ACK paketini alamaz ve ACK(Knowledgement) için bekleyecektir. Kısa bir süre için çok sıkıntı yaratmayacaktır. Ancak binlerce makina aynı anda aynı işlemi deneyeceğini düşünürseniz işlem can sıkıcı bir hal alacaktır. Ya da bir diğer tür olarak saldırgan kişi istekleri IP spoffing ile gönderir. Paketi alan hedef sistem tekrardan paketi geri döndüreceği zaman hangi IP adresine paketi atacağını bilemez ve yine o bekleyiş devam eder.
Bir SYN Flood farklı şekilde sınıflandırılabilir; TCP, UDP ve HTTP Flood
UDP Flood; UDP üzerinden flood yapmanın, TCP üzerinden yapmasının tek farkı verinin datagram olarak UDP protokolü üzerinden gönderilmesidir. Klasik bir UDP Flood;

Web server'lar da normalde dışa açık UDP protokolü kapalı olur. Ancak DNS, UDP tabanlı olduğu için UDP protokolü de mecburen açıktır. Bu nedenle UDP flood, daha çok DNS server'lar için tehlikelidir. Hedef seçilen DNS servera yapılan bir UDP flood bunun için büyük bir sıkıntı oluşturacaktır.
HTTP Flood; HTTP protokolü kullanılarak yapılan bir saldırı türüdür. HTTP metodları olan GET ve POST metodları ile yapılır. TCP flood'un aksine burada üçlü el sıkışmaya izin verilir. Basitçe GET metodu kullanılarak hedef sunucuya bir request gönderiyoruz. Biz bağlantı kurmak için paket gönderiyoruz. Buradan sonrasını biliyorsunuz. Klasik el sıkışma hareketi aynı düzende işliyor. Ancak bağlantı kapatılacağı zaman sıkıntı ortaya çıkıyor. Şöyle ki; biz bağlantıyı sonlandırmak istediğimizi söylüyoruz. Bağlantıyı kesmek için RST + ACK gönderiyoruz. Hedef makina ise ACK kabul ettiğini gönderiyor. Biz de RST göndererek bunu onaylıyoruz. Ancak seri bir şekilde bunu yapınca sistem teklemeye başlıyor.

Time kısmına baktığımız zaman giden paketlerin yoğunluğu anlaşılacaktır. Burada hazır bir basit araç ile gönderim yapıldı. Ancak saldırganlar tarafından bu yükseltilir veya kendi araçlarını yazarak gönderilecek olan paketlerin boyutu ayarlanabilir.
Ekstralar
Smurf Saldırıları
Smurf saldırıları; kullanıcı kaynaklı hatalardan dolayı yapılır. Bu saldırı yanlış konfigüre edilmiş "Broadcast" adresi üzerine yapılır. Paketleri doğrudan hedef server'ın bulunduğu "network'ün directed broadcast" asdresine yollanır. Broadcast; bir ağ üzerinde ki aynı ağ üzerinde bulunan hostlara paket göndermeye yarar. Yani gelen paketleri alt dallarında bulunan hostlara göndererek iletişimi sağlar. İşte Smurf saldırıları bu adresi Broadcast adresini kullanarak, Spoof edilmiş Ping'lerin hostlara gönderilmesi ile olur. Böylelikle sadece Broadcast adresine saldırarak tüm hostları meşgul edebilirsiniz. Smurf saldırısı büyük boyutlar ile "ICMP Echo Request" paketleri gönderilerek yapılır. Her bir yayın IP Spoofing ile gönderilerek ağ üzerinde bulunan bütün paketlere SYN paketi gönderir. Hedef site SYN - ACK paketi göndermek ister ama geri göndereceği IP adresi sahte olduğu için adresi bulamaz ve sistem paketi göndermek ister. Ama gönderemediği için de sürekli meşgul olur ve saldırı gerçekleşir. İşin bir diğer kötü yanı ise ağ genişliğinin artması ile saldırı boyut kazanır. Mantık olarak ağ üzerinde tüm bilgisayarlara ping göndererek yapılan saldırının, ağ genişledikçe daha çok bilgisayara etkili olacaktır. Bundan dolayı multi-network ağlarında Smurf saldırıları çok daha ciddi sorunlar açmaktadır. Ağ içerisinde saldırıdan etkilenen bilgisayarlar Smurf saldırısından etkilenip, "ICMP Request" paketlerinin boyutlarını yükseltip, "Spoofing" edilerek kullanılan bir IP adresine yönlendirilir. Böylece saldırının bir parçası olur. Tam bir kanser...

Ping Of Death (POD)
Mantık olarak "ICMP Echo Request" mesajlaarını gönderip cevap beklemeyi temel alır. Ancak POD saldırılarında ping paketleri, hedefe büyük paketler halinde gönderilir. Gönderilen bu paketlere, tanımlı bir cevap bulamayan sistem çöker. Burada bilinmesi gereken en önemli nokta şudur;
Standart olarak ping paketleri için belirlenen değerler vardır. Bir ping paketi genelde 32 byte gibi gibi bir değer alır. Bu paketlere verilen değerin maksimum boyut ise 65.535 byte değerindedir. Bu boyutun üzerinde gönderilen bir paket, karşılığı olmadığından dolayı sistem hata verir. Eğer hedef server da gerekli konfigüre ayarları yapıldıysa POD saldırıları atlatılabilir. Şöyle ki; 65.535 byte değerinde bir paket gönderildiği zaman ağ protokollerince illegal olarak karşılanıyor ve engelleniyor. Ancak paket parçalı olarak gittiğinden hedef sistemde toplanıyor ve bir araya getiriliyor. Eğer gerekli ayarlar yapılmadıysa bu sistemde "Buffer Overflow" açığının oluşmasına sebep oluyor. Ve sistemin çökmesine sebep oluyor. Günümüzde yapılan yamalar ile Buffer Overflow'a sebep olan bu hata giderilmeye çalışılmıştır.

Kaspersky Lab araştırmalarına göre DDOS saldırılarında en çok kullanılan saldırı türleri listelenmiş. Hem kolaylık hem de herhangi bir teknik bilgi istemediği için en çok kullanılan tür "HTTP Flood". Basit ama etkili bir saldırı biçimi olan bu saldırıya karşı ne yazık ki sistemler dayanamıyor.
Korunma Yöntemleri:

Genel olarak bir araştırma yaptığınızda DDOS saldırıların engellenmesi imkansıza yakındır. Bunun en güzel örneği 28 Şubat Github saldırısı örneğini verebiliriz. Saniye de 1.35 terabitlik bir saldırıya maruz kalan Github, buna rağmen sadece 10 dakikalık bir kesintiye uğradı. Küresel çapta çokça kullanılan ve oldukça faydalı bir platform olan Github'ı bile 10 dakikalık bir servis dışı bırakması bile büyük bir beceri. Bunun için "Github'a bunu yapan bana ne yapmaz" düşüncesi ile DDOS salıdırısına karşı neler yapabiliriz bunlara değinelim;
Öncelikle şunu bilmelisiniz DDOS saldırısı bant genişliğini hedef alır (Bandwith). Bant genişliğinin artması demek, belirli bir süre zarfında aktarılan veri boyutunun da büyümesi demektir. Bununla beraber, sistem hafızası, ağ stack hafızası ve işlemci gibi hedefler de bulunmaktadır. Alınabilecek önlemler;
Ağ Trafiğini izleyin
Siber güvenlik saldırı yapıldıktan sonra değil başlamadan önce alınması gereken bir önlemdir. Sistemi ele geçirilmiş, kullanıcı bilgileri çalınmış bir sistemde siz o saatten sonra önlem alsanız hiç bir işe yaramaz. Çünkü giden gitmiş, olan olmuştur.Saldırı başladıktan sonra her şey geç olabilir. Henüz saldırı yokken en kötü senaryoları düşünerek önlem almanız gerekir. Bundan dolayı ağ trafiğini izlemek size anlık olarak gelen paketlerin boyutunu ve ne sıklıkla geldiğini gösterebilir. Aynı porta sürekli gönderilen paketleri izleyerek, anormal bir durum görürseniz IP adresini direk bloklayabilirsiniz. Ağ trafiğini izlemek için iki tane çok güzel program var. Wireshark ve TCPdump.
TCPdump yazılımıyla, ağ trafiğini izleyebilir ve gelen giden paketleri de kaydedebilirsiniz.
Wireshark ise; benim de en sevdiğim programlardan biridir. Görsel arayüzü, paketlere göre filtreleme ve ağı detaylıca izleyebilmesi sayesinde rahatça ağınızı kontrol edebilir, izleyebilir ve sonuca varabilirsiniz.
Saldırı Tespit / Önleme Sistemi Kurun
Küçük çaplı saldırıları evet ağı izleyerek engelleyebilirsiniz. Ama ya saldırı binlerce bilgisayardan geliyorsa? O zaman sadece ağı izlemek yetmeyecek, fazlasına ihtiyacınız olacaktır. Bu durumda devreye IDS (Intrusion Detection System) ve IPS (Intrusion Prevention System) girecektir. IDS sistemler; ağ üzerinde çalışırlar ve ağ trafiği, sistem dosyaları ve log dosyaları gibi alanları izlerler. Ancak izleme işini kendi kafasına göre değil sizin girdiğiniz değerler doğrultusunda yapar. IDS sistemleri veri akışını izler. Gelen giden paketlere analiz yapar. Aynı zamanda host tabanlı worm, virüs gibi saldırıları veya ağ trafiğindeki kural dışı iletişimleri, tespit edebilirler. Ve bunu log dosyalarına kaydederler. Bu dosyalar yardımıyla en azından ağ yöneticisi saldırının boyutunu, türünü ve yöntemini anlayabilir ve buna göre önlem alır. Saldırı yapan IP adresini engeller ve bunu Firewall'ın IP blok listesine yazar.
IPS sistemleri ise biraz daha farklı olarak ağ dışında değil de in-line olarak yani ağ trafiği içinde çalışırlar. Böylece trafiği kontrol etmek de kolaylaşır. Trafiği kontrol etmenin yanı sıra gelebilecek saldırılara karşı önlemi ağ içerisinde alır. Aynı zamanda IPS sistemleri CRC düzeltme ve TCP bağlantılarında ki olumsuzlukları gidermede de yardımcı olur.
Bant Genişliğinizi Arttırın
Genelde DDOS saldırıları bant genişliğine yönelik saldırılardır. ICMP Flood saldırıları da bant genişliği tüketmeye yönelik saldırılardır. Bu nedenle DOS saldırılarına karşı alabileceğiniz en etkili yöntemlerden birisi de bant genişliğinizi arttırmak olacaktır.
Bilindik Sunucu Çözümlerini Kullanın
Özellikle Cloud flare bu iş için biçilmiş bir kaftandır. Kendi bünyesinde sunduğu ücretsiz trafiği izleme ve analiz etme araçları sayesinde rahatlıkla ağınızı inceleyebilirsiniz. Ek olarak giden bağlantılar önce Cloud Flare sunucularına uğrayarak sonradan size gelir. Böylelikle gelen paketler kötü amaçlı bile olsalar Cloud Flare bunu engelleyecektir.(https://www.cloudflare.com/ddos/)
Sonuç olarak; DDOS/DOS saldırıları sıklıkla yapılabilen ve ulaşımı kolay bir saldırı türüdür. Genellikle sektörde biraz dalgası da geçer. "Adamın teknik bilgisi yok kiralamış sistemleri tek bir tuş ile yönlendiriyor" gibi gibi. Ancak siz her ne kadar adamı küçük görseniz de ve bundan dolayı da saldırıyı umursamazsınız da saldırı bir şekilde gerçekleşiyor ve sisteminizi işlemez hale geliyor, çökmeler meydana geliyor ve en önemlisi de olay sizde bitiyor. Bunun için boş laf yapmak, adamın bilgisini sorgulamak veya hayıflanmak yerine siz elinizden gelenin en iyisini yapmaya çalışın ve yapacaklarınızı adım adım ilerleterek sorunu çözmeye çalışın. Unutmayın ki;
Hedeflenmiş saldırı gerçektir. Av olmayın.
Not: Yazıya yazmadan önce bilgi ve kaynak toplama aşamasındaydım. Güzel bir çözüme denk geldim ve paylaşmak istedim. TCP zaman ayarını ayarlayarak çözülebilir. Burada bir sorun dile getirilmiş ve çözümü de gayet açıklayıcı bir şekilde çözülmüş(https://www.incapsula.com/ddos/attack-glossary/syn-flood.html)
https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/
https://www.cloudflare.com/ddos/
https://www.incapsula.com/ddos/attack-glossary/syn-flood.html
https://www.cloudflare.com/learning/ddos/syn-flood-ddos-attack/
https://blog.paessler.com/types-of-ddos-attacks
http://www.asafvarol.com/dnotlar/ymt311/HizmetEngellemeSaldırıları.pdf






Comments