Bir SYN-FLOOD Hikayesi

Syn FloodYönetmekte olduğum bir sisteme sürekli olarak SYN paketleri gönderildiğini farketmemin üzerine çalışmalara başladım. Paketlerin gönderilme hızı değişkenlik gösteriyordu; çoğunlukla 1 paket/saniye hızında seyreden trafik zaman zaman saniyede 100 SYN paketi geçiyordu. Yavaş ulaşan paketler gerçek IP’lerden gelirken, hızlı gönderilenler değiştirilmiş kaynak IP sine (IP Spoofing) sahipti -ulaşan paketlerin TTL Time To Live değerlerindeki farklılıktan bunu tespit etmek mümkün-.

Evvelce etkinleştirdiğim SYNCookie özelliği sayesinde kaynak israfı çok artmıyor, sistemim cevap veremez hale gelmiyordu. (yoğun bir saldırıda SYNCookie CPU kullanımını sature edebilir)

netstat -ant|grep SYN_REC

SYNCookie özelliği sayesinde yukarıdaki komutu çalıştırdığımda SYN_REC durumunda bağlantı görmüyordum. Fakat SYNCookie gelen her SYN paketine SYN+ACK cevabı dönüyordu. Bunun önüne geçmeliydim. SYNCookie önlemine ek olarak, aynı IP’den gelen çok fazla SYN paketi olduğunda, bu IP lere SYN+ACK cevabı dönülmeyerek kara listeye alınmasının uygun olacağına karar verdim.

iptables -N SYNFLOOD
iptables -A INPUT -p tcp --syn -j SYNFLOOD
iptables -A SYNFLOOD -m recent --set --name KARALISTE
iptables -A SYNFLOOD -m recent --update --seconds 10 --hitcount 20 --name KARALISTE -j DROP

İki günlük çabanın ve trafik incelemesinin ardından yukarıdaki satırları iptables üzerine tanımladım. Bu satırlar sayesinde dışarıdan sunucuya doğru gelen, 20paket/10saniye oranı aşan tüm tekil IP adresleri kara listeye alınacak ve bu oranın üzerinde kaldıkları süre boyunca gönderdiği SYN paketleri DROP edilecek. Bu orana karar verirken sunucunun trafiğini bir süre incelemem ve ona göre karar vermem gerekti. Bazı sistemler için bu oran agresif sayılabilir

İşlem tamamlandı, öncesinde sunucuyu sürekli meşgul edenler, bu çalışma sonrasında kısa süreli ziyaretler dışında uğramaz oldular.

Bana gelen saldırının odaklı bir saldırı olduğunu düşünmüyorum. Büyük bir bütünün, bir parçası olarak sistemin üzerinden trafik geçiriliyor olma ihtimali yüksek. Daha odaklı bir saldırı karşısında farklı savunma yöntemleri geliştirmek gerekeceği açık.

Gelelim izleme kısmına. Kimler bu filtreye takılıyor, anlık takılanların paket akışı, filtre kuralına takılan paket sayısı gibi bilgileri alalım şimdide;

cat /proc/net/xt_recent/KARALISTE

Ubuntu tabanlı sistemlerde yukarıdaki komut ile iptables filtresinde tanımladığımız isme göre oluşan dosyayı görüntülüyoruz. Bu dosyanın içinde, belirtilen hitcount oranın üzerine çıkan kaynak IP adresleri listeleniyor ve istenmeyen davranışı tekrarladıklarında zaman bilgisi güncelleniyor. Ayrıca TTL bilgisi gibi ek bilgiler de yeralıyor.

tcpdump -nni eth0 'tcp[13] = 2'

Yukarıdaki komut ile saldırı anında veya normal izleme sırasında sadece SYN bayraklı TCP paketlerini izleyebiliyoruz.

watch -n 0.5 'iptables -vL'

Yukarıdaki komut ile iptables üzerinde tanımladığımız kurallardan geçen trafik bilgisi anlık olarak izlenebiliyor.

Eklemek istedikleriniz veya farklı önerileriniz için çekinmeden yorum bırakabilirsiniz.

Hamdi ÖZCAN – ozcan.com



Yorumlar

Bir cevap yazın

(gerekli)