BGA Cyber Security – Siber Güvenlik Çözümleri

DDoS Saldırıları, Netstat ve TCP Oturum Detayları

İnternete açık penceremiz olan Web sunucularını tehdit eden risklerin ilk sıralarında DDoS saldırıları gelmektedir. DDoS saldırılarını analiz etmek en az engellemek kadar önemlidir. DDoS saldırı analizinde olmazsa olmaz şart ise TCP/IP bilgisidir.

Web Sunucunuzun bir DDOS saldırısına karşı olduğunu nasıl anlarsınız?

En basitinden netstat komutu çalıştırılarak bağlantı tablosunu izlenir ve aynı ip/random ip lerden gelen bağlantılar incelemeye alınır. Normalde aynı ip adresinden (arkasında onlarca istemcisi bulunan networkler hariç) belirli bir sayıdan fazla istek gelmez.

Fazlası varsa anormaldir ve incelenmesi gereken bir olay var demektir.

Nasıl incelenir?

Saldırı UDP üzerinden yapılıyorsa netstat ile inceleme zor olacaktır. TCP kullanılarak gerçekleştirilmişse rahatlıkla DDoS saldırıları belirlenebilir. İncelemeye geçmeden buna sebep olan protokolü ve detaylarına bakalım.

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 mekanizması) 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.

DDoS Saldırıları, Netstat ve TCP Oturum Detayları

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 edinebilir.

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 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

Bağlantı sonlanması esnasında oluşan durumlar:

FIN_WAIT_1:

Bağlantı sonlandırmak için işlem başlatan taraf(A) hedef sisteme FIN bayraklı TCP paketi gönderir. Ardından karşı taraftan(B) ayrı ayrı ACK ve FIN bayraklı paketleri bekler . Bu arada durumunu FIN_WAIT_1 olarak ayarlar.

FIN_WAIT_2:

Bağlantı sonlandırma isteğini(FIN bayraklı ilk paket) alan taraf(B) bu pakete karşılık olarak ACK(onay) bayraklı TCP paketi hazırlar ve gönderir ve durumunu CLOSE_WAIT’e alır. Ilk FIN bayraklı paketi gönderen taraf(A) ACK paketini aldığında durumunu FIN_WAIT_2 olarak ayarlar.

Böylece bağlantı sonlandırma işleminin ilk yarısı tamamlanmıştır. Diğer yarısıda sağlıklı tamamlandıktan sonra bağlantı tamamen sonlanmış olacaktır.

LAST_ACK:

B tarafı ACK bayraklı paket gönderdikten sonra , kendisinin de bağlantıyı sonlandırmak istediğini bildiren FIN bayraklı paket oluşturarak A sistemine gönderir ve durumunu LAST_ACK olarak ayarlar.

TIME_WAIT:

A sistemi FIN bayraklı paketi aldıktan sonra buna cevaben ACK bayraklı bir paket oluşturarak B’ye gönderir ve durumunu TIME_WAIT olarak belirler.

A sistemi TIME_WAIT durumunda son gönderilen ACK bayraklı paketin hedef sisteme(B) ulaştığını garantilemek için bir müddet bekler. Bu müddet eğer gereğinden fazla(eski tip UNIX sistemlerde 4 dakikaya kadar çıkabiliyor.) ise sisteminizde netstat -an çalıştırdığınızda oldukca fazla TIME_WAIT satırı görebilirsiniz.

Bu da sistemi gereğinden fazla meşgul edeceği için performans problemleri yaşanması kaçınılmaz olacaktır.

Örnek bir sistem üzerinde inceleme:

www portuna yapılan bir istek ve isteğin sonlanması sırasında netstat ile alınan durum çıktıları. Sadece sunucu tarafını gösterdiği için bazı durumlar gözükmemektedir. İsteği yapan taraf da incelenecek olursa eksik kalan kısımlar tamamlanır.

tcp4 0 0 80.93.212.86.80 88.233.216.57.2348 SYN_RECEIVED
tcp4 0 0 80.93.212.86.80 88.233.216.57.2348 ESTABLISHED
tcp4 0 0 80.93.212.86.80 88.233.216.57.2348 FIN_WAIT_2
tcp4 0 0 80.93.212.86.80 88.233.216.57.2348 TIME_WAIT

Exit mobile version