Internete açık web sunucular için tehdit sıralamalarında ilk sırayı DDOS saldırıları alıyor. Çok basit(?) araçlarla zahmet ve bilgi gerektirmeden yapılabilmesi, etkisinin yüksek olması bu saldırı tiplerini yaygınlaştıran ana etkenlerden.
Web Sunucunuzun bir DDOS saldırısına karşı olduğunu nasıl anlarsınız?
En basitinden netstat komutunu çalıştırarak bağlantı tablosunu izlenir ve aynı ip/random ip lerden gelen bağlantılar incelemeye alınır. Normalde aynı ip adresinden(arkasında onarca istemcisi bulunan networkler haric) belirli bir sayıdan fazla istek gelmez(siz 10 diyin ben 30 diyeyim). Fazlası varsa anormal, incelenecek bir durum var demektir.
Nasıl incelersiniz?
İncelemeye geçmeden buna sebep olan protokolü ve detaylarına eğilelim.
Kısaca hatırlayacak olursak TCP bağlantıları bayraklarla(flags) yürütülür. Bayraklar TCP bağlantılarında durum belirleme konumuna sahiptir Yani bağlantının başlaması, veri transferi, onay mekanizması ve bağlantının sonlandırılması işlemleri tamamen bayraklar aracılığı ile gerçekleşir.
UDP’de ise böyle bir mekanizma yoktur. UDP’de güvenilirliliğin(paketlerin onay mekanizmasi) sağlanması üst katmanlarda çalışan uygulamalar yazılarak halledilebilir. DNS protokolü UDP aracılığı ile nasıl güvenilir iletişim kurulacağı konusunda detay bilgi verecektir.
UNIX/Windows sistemlerde bağlantılara ait en detaylı bilgi netstat (Network statistics) komutu ile elde edilir. Netstat kullanarak TCP, UDP hatta UNIX domain socketlere ait tüm bilgileri edinebiliriz.
UDP için bir bağlantı durum bilgisi olmadığından dolayı netstat aracılığı ile de fazla bilgi alamayız fakat
TCP’de bağlantıya ait oldukca fazla durum vardır.
TCP bağlantılarında netstat aracılığı ile görülebilecek durum senaryoları:
CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SEND ve TIME_WAIT
Bunların neler olduğu ve hangi durumlarda oluştuğunu irdeleyelim.
SYN_SEND : Hedef sistemle TCP bağlantısı oluşturma adımının ilkidir. Kısaca SYN bayraklı paket gönderilip buna karşılık cevap bekleme zamanında portun alacağı durum.
SYN_RECEIVED: Hedef sistem portu bağlantı kurulması için gerekli ilk adım olan SYN paketini almıştır.
ESTABLISHED: 3 lü el sıkışma tamamlanmış artık taraflar veri transferi yapabilir durumdadır.
LISTEN: O portun bağlantı kabul eder olduğunu belirtir.
tcp4 0 0 *.465 *.* LISTEN
LISTEN moddaki portları ki bunlar aynı zamanda sistemde çalışan servislerdir netstat -ant|grep LISTEN komutu ile elde edebiliriz.
TCP Oturumlarında bağlantı sonlandırma
Oturum sonlandırma her iki tarafında anlaşması sonucu tamamlanır. Taraflardan birinin ilgili bayraklı paketi göndermemesi, geç göndermesi bağlantının sağlıklı olarak sonlanmasına engel olur.
Bağlantı sonlandırma aşamalarında çeşitli durumlar oluşur. Bu durumlara geçmeden bir TCP bağlantısının nasıl kapatıldığını inceleyelim.
A ——FIN ——–>B A <—–ACK———B A <—–FIN———B A ——ACK———B
görüleceği üzere A ve B sistemleri arasındaki bağlantıyı kapatmak için 4 paket transferi oluyor. Bu paketleri Wireshark ya da tcpdump ile rahatlıkla görebilirsiniz.
tcpdump çıktısı
2007-08-13 21:38:57.239126 IP 80.93.212.86.3306 > 88.233.216.57.2175: F 75:75(0) ack 1 win 65535 2007-08-13 21:38:57.292806 IP 88.233.216.57.2175 > 80.93.212.86.3306: . ack 76 win 17446 2007-08-13 21:38:57.295927 IP 88.233.216.57.2175 > 80.93.212.86.3306: F 1:1(0) ack 76 win 17446 2007-08-13 21:38:57.295941 IP 80.93.212.86.3306 > 88.233.216.57.2175: . ack 2 win 65534
0 yorum:
Yorum Gönder