Siteniz açılmıyor, SSH komutları geç yanıt veriyor, müşteriler "sunucuya ulaşamıyoruz" diye yazıyor. Akla ilk gelen şüphe çoğu zaman DDoS saldırısıdır. Oysa aynı belirtiler bozuk bir betikten, dolmuş bir diskten, kampanya kaynaklı gerçek bir trafik artışından ya da yanlış bir güvenlik duvarı kuralından da doğabilir. Bu rehber, DDoS saldırısı nasıl anlaşılır sorusuna somut cevap verir: hangi belirtilere bakmalısınız, Linux sunucuda hangi komutlarla teşhis koyarsınız, yanlış alarmı nasıl ayıklarsınız ve saldırı gerçekse ilk yarım saatte neler yaparsınız.
Bu yazı genel teknik bilgilendirmedir. Her saldırı farklıdır; kritik bir olayda barındırma sağlayıcınızın ağ ekibiyle birlikte hareket etmeniz en sağlıklısıdır.
DDoS (dağıtık hizmet engelleme), çok sayıda kaynaktan gelen yapay trafikle bir sunucunun, uygulamanın ya da ağ hattının cevap veremez hale getirilmesidir. Amaç veri çalmak değil, hizmeti erişilemez kılmaktır. Saldırılar üç ana gruba ayrılır:
| Tür | Ne yapar? | Tipik belirti |
|---|---|---|
| Hacimsel (volumetrik) | Bant genişliğini doldurur (UDP flood, yansıtmalı saldırılar) | Sunucu canlı ama dışarıdan hiçbir şeye ulaşılamıyor; port doygunluğu |
| Protokol (bağlantı tablosu) | Bağlantı kurma mekanizmasını tüketir (SYN flood) | Çok sayıda yarım açık bağlantı, yeni bağlantıların zaman aşımına uğraması |
| Uygulama katmanı | Web uygulamasına ağır istekler gönderir (HTTP flood) | İşlemci ve veritabanı dolu, ağ trafiği ise ılımlı |
Bu ayrım önemlidir çünkü teşhis ve çözüm yolu türe göre değişir. Hacimsel saldırıyı sunucuda çözemezsiniz; uygulama katmanı saldırısını ise büyük ölçüde sunucuda ve web sunucusu ayarlarında hafifletebilirsiniz.
Tek bir belirti kanıt değildir. İki ya da üçünün birlikte görülmesi şüpheyi ciddi biçimde artırır.
Ağ seviyesinde koruma seçeneklerini inceleyin
Saldırı koruması hakkında ayrıntılar ve seçenekler için DDoS koruma sayfamıza bakın.
DDoS koruma sayfasını inceleyinBirçok saldırı şüphesi aslında başka bir sorundur. Müdahaleden önce şu beş kontrolü yapın:
Sunucunun neden yavaşladığını genel olarak ayırt etmek için sunucu yavaşladığında 10 dakikalık performans teşhisi rehberine de göz atabilirsiniz.
uptime
top -o %CPU
free -h
df -h
Yük ortalaması çekirdek sayısının çok üzerindeyse ve işlemciyi web sunucusu ya da veritabanı süreçleri tüketiyorsa uygulama katmanı sorunu olasılığı yüksektir. Kaynaklar sakin ama erişim yoksa sorun ağ hattındadır.
ss -s
ss -tn state established | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
İlk komut toplam bağlantı özetini verir. İkincisi, kurulmuş bağlantıları kaynak IP'ye göre sayar. Tek bir adresin yüzlerce bağlantısı varsa bu bir şüphedir; binlerce farklı adres ise dağıtık bir saldırıya işaret edebilir. Bu komutta sütun numarası sürüme ve çıktı biçimine göre değişebilir, çıktıyı bir kez gözle kontrol edin.
ss -n state syn-recv | wc -l
ss -n state time-wait | wc -l
SYN-RECV durumunda çok sayıda bağlantı, SYN flood'un klasik izidir. Normal bir sunucuda bu sayı genellikle çok düşüktür.
cat /proc/net/dev
sudo apt install -y iftop nload
sudo iftop -i eth0 -nNP
Arayüz adınız eth0 olmayabilir; ip -br link ile doğrulayın. Gelen trafik port hızına yakınsa ve sunucu kaynakları rahatsa, saldırı sunucuya ulaşmadan hatta başlamış demektir. Bu durumda yapabileceğiniz tek şey hizmet sağlayıcınızı bilgilendirmektir.
sudo tcpdump -i eth0 -nn -c 2000 -w /root/olay.pcap
sudo tcpdump -nn -r /root/olay.pcap | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -nr | head
İlk komut 2.000 paketlik kısa bir kayıt alır; yakalamayı sınırlı tutmak diski doldurmamanızı sağlar. Saldırı trafiğinin hangi porta, hangi protokole (TCP SYN, UDP, ICMP) yöneldiğini görmek, hizmet sağlayıcıya verilecek en değerli bilgidir.
tail -n 20000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
tail -n 20000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -20
Birincisi en çok istek yapan IP'leri, ikincisi en çok istenen yolları listeler. Apache kullanıyorsanız günlük yolu /var/log/apache2/access.log ya da dağıtıma göre farklı olabilir. Tek bir yola yığılan binlerce istek, uygulama katmanı saldırısının en net kanıtıdır.
| Gözlem | Olası durum | Önerilen ilk adım |
|---|---|---|
| Gelen trafik port hızında, sunucu boşta | Hacimsel saldırı | Hizmet sağlayıcıyı hemen bilgilendirin; sunucuda yapılacak şey yok |
| SYN-RECV sayısı çok yüksek | SYN flood | SYN cookies'i kontrol edin, güvenlik duvarında bağlantı sınırı koyun, sağlayıcıya bildirin |
| Web sunucusu ve veritabanı CPU'da tavan, trafik ılımlı | HTTP flood ya da yavaş istek saldırısı | İstek sınırlama, önbellek, hedef yola özel kural |
| Yüksek trafik, çeşitli sayfalar, gerçek oturumlar | Muhtemelen meşru ziyaretçi artışı | Önbellek ve kaynak artırımı; saldırı varsayımıyla engelleme yapmayın |
| Tek IP'den çok sayıda istek | Basit bot ya da kötü niyetli tarayıcı | O IP'yi engelleyin, günlüğü saklayın |
Aşağıdaki örnekler küçük ve orta ölçekli HTTP saldırılarını yavaşlatır; hacimsel saldırıya karşı etkisizdir.
# Nginx: IP başına istek sınırı (http bloğu)
limit_req_zone $binary_remote_addr zone=genel:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=baglanti:10m;
# server veya location bloğu
limit_req zone=genel burst=20 nodelay;
limit_conn baglanti 30;
# Linux: SYN cookies durumunu görün
sysctl net.ipv4.tcp_syncookies
# Tek IP için geçici engelleme
sudo ufw deny from 203.0.113.50
Buradaki adres belgelendirme amaçlı örnek adrestir. Sınır değerlerini kendi gerçek trafiğinize göre ayarlayın; fazla sıkı bir sınır meşru ziyaretçileri de engeller. Güvenlik duvarı ve erişim ayarları için Linux sunucu güvenliği rehberi yararlı bir başlangıçtır.
Kendi sunucunuzu güvenle kurun
İstanbul lokasyonunda, KVM sanallaştırma ve 1 Gbps port ile VDS paketlerini inceleyin.
VDS kiralama paketlerini inceleyinBir sunucunun portu 1 Gbps ise, o porttan sığabilecek veriden fazlasını gönderen bir saldırı hattı doldurur. Bu noktada sunucunuzun işlemcisi tamamen boşta olsa bile paketler sunucuya ulaşamaz, çünkü tıkanıklık sunucunun öncesindedir. Bu nedenle güvenlik duvarı kurmak, bir iptables kuralı yazmak ya da sunucuyu yeniden başlatmak hacimsel saldırılarda işe yaramaz. Bu tür saldırıların filtrelenmesi ağ seviyesinde, trafiğin sunucuya ulaşmasından önce yapılmalıdır. Konuyu genel çerçevede anlatan DDoS saldırılarından korunma rehberimiz ve oyun sunucuları için oyun sunucusu DDoS koruması yazımız bu açıdan faydalı olabilir.
Bazen sorun saldırı değil, hat üzerinde bir yerdeki gecikme ya da paket kaybıdır. Ping ve MTR sonuçlarını doğru okumak, sorunun sunucunuzda mı, yolun ortasında mı olduğunu ayırt etmenizi sağlar. Ayrıntılar için ping testi ve MTR rehberini okuyabilirsiniz.
DDoS saldırısını anlamanın yolu, belirtileri sayılara dökmektir: bağlantı sayısı, kaynak dağılımı, paket türü, işlemci yükü ve ağ doygunluğu. Kaynaklarınız rahatken hat doluysa hacimsel saldırı, işlemci doluyken ağ ılımlıysa uygulama katmanı saldırısı olasılığı yüksektir. Her durumda kayıt tutun, kapatmayın, hizmet sağlayıcınızı doğru bilgiyle bilgilendirin ve yetkisiz erişim izi olup olmadığını kontrol edin. Ağ seviyesinde koruma seçenekleri için DDoS koruma sayfasına, destek için iletişim sayfasına bakabilirsiniz.
DDoS saldırısı ile ani ziyaretçi artışı nasıl ayırt edilir?
Gerçek ziyaretçi artışında istekler farklı sayfalara, farklı tarayıcı kimliklerine ve makul oturum davranışına dağılır. Saldırıda genellikle aynı yola yüklenen, benzer başlıklı, oturum açmayan ve çok sayıda farklı IP'den gelen istekler görülür.
DDoS saldırısı sunucuya zarar verir mi, veriler çalınır mı?
DDoS saldırısının amacı hizmeti erişilemez kılmaktır; veri çalmak değildir. Ancak saldırı bazen dikkat dağıtmak için kullanılır, bu yüzden saldırı sırasında oturum açma kayıtlarını ve yetkisiz değişiklikleri de kontrol etmek iyi bir alışkanlıktır.
Sunucuyu kendim DDoS saldırısına karşı koruyabilir miyim?
Uygulama katmanında istek sınırlama ve güvenlik duvarı kuralları küçük saldırıları hafifletir. Bant genişliğini dolduran hacimsel saldırılar ise sunucuya ulaşmadan ağ seviyesinde süzülmelidir; bunu tek başına sunucuda çözmek mümkün değildir.
Saldırı sırasında sunucuyu kapatmak doğru mu?
Genellikle hayır. Kapatmak saldırganın amacına hizmet eder ve teşhis için gereken kanıtı da siler. Önce trafiğin türünü anlayın, gereksiz servisleri kapatın ve hizmet sağlayıcınızla iletişime geçin.
Hangi kayıtları saklamalıyım?
Erişim ve hata günlüklerini, güvenlik duvarı sayaçlarını, kısa süreli paket yakalama çıktısını ve olayın saat aralığını saklayın. Bu kayıtlar hem hizmet sağlayıcıya iletilecek bilgi hem de sonraki analiz için gerekir.
Sunucum yavaşladığında ilk neye bakmalıyım?
Önce kaynak tüketimine (işlemci, bellek, disk, bağlantı sayısı) bakın, sonra ağ trafiğinin yönüne ve türüne geçin. Yavaşlığın yaygın nedenleri arasında yanlış yapılandırma, bozuk bir betik ve yedekleme işleri de vardır.