Kaynak
Server’a bağlantı isteği gelmiş (syn paketi) sonrasında syn-ack paketi gönderilmiş olan ve gelecek olan ack paketini bekleyen bu bağlantıları en eskiden başlayarak sonlandırmak bu çözümlerden bir tanesidir. Ayrıca beklenen ack paketlerinin bir geri dönüş süresi için bir zamanlayıcı (timer) başlatılıyor. Bu zamanlayıcı zaman aşımına (timeout) uğrayıncaya kadar bu ack paketini bekliyor. Biz bu timeout süresini kısaltarak da server’i bu boş, geri dönüşü olmayacak istekleri kapatarak server’ın rahatlamasını sağlıyoruz.
Bu yöntemde server aldığı bir syn paketi için çerez (cookie) oluşturur. Öncelikle bu Syn Cookie yönteminde temel yapılan işlem gönderilip alınan paketlerden olan ISN (initial sequence number) değişkeninin rastgele değil de belirli yöntemlere göre hesaplanması üzerinedir. Server bu yöntemde artık gelen her bir syn paketi için bellekte alan açmıyor onun yerine ISN değişkeni hesaplanıp ( cookie ISN değerini ifade ediyor) syn-ack paketiyle beraber gönderme işlemini uyguluyor. Sonra gelecek ack paketine bakılarak isteğimiz doğrultusunda bir eşitlik var ise bu alan açılıp bağlantı kurulmuş oluyor. Unix-Linux çekirdekli işletim sistemlerinde Syn Cookie özelliği artık yüklü halde gelmekte fakat kullanımı kullanıcıya bağlıdır. İstenildiğinde belirli komutlar ile açılabilir.
Bu yöntemde paketler öncelikle proxy server’a iletilir. Handshake işlemi bu server’da gerçekleşir.Client öncelikle proxy server ile bağlantıyı sağlamaktadır. Proxy server ardından bir client gibi davranarak aldığı bağlantı isteğini server’a yönlendirir ve client ile server’ın arasında bir bağlantı kurulmuş olur. Ardından gelecek olan paketin sıra numarası öncekini bir fazlası olacağı için server artık gelen isteğin doğru ve güvenilir bir yerden olduğunu anlayabilecektir. Bu yöntemde aracı olan proxy server’ın güvenliği üst düzeyde sağlanmalıdır.Syn Proxy’nin kullanımı için çeşitli programlar bulunmaktadır.
En temel DoS ataklarından biri olan Syn Flood atağı TCP ile haberleşmek isteyen client ile server arasında yapılacak olan “3-way handshake” olayına müdahele ederek mümkün olmaktadır. Syn Flood saldırıları teorik olarak ilk 1994 yılında Firewalls And Internet Security adlı kitapta geçmiştir.
El sıkışmasının ilk adımında client servera bir syn paketi gönderdikten sonra server tekrar paketi aldığına ve kendi bağlantı isteğini göndermek için bir syn-ack paketi gönderir. Ardından tekrar client da bu syn paketi aldığına dair bir ack paketi gönderiyor ve bağlantı sağlanmış oluyor. Syn Flood atağında atağı yapacak olan kişi server’a farklı IP’lerden çok fazla syn paketi gönderir. Server’da bu paketler alındıkça işletim sistemi gelen paket için bellekte bir yer açar. Alınan paketler için belli bir kapasite olduğu ve bu kapasite dolduktan sonra server göndermiş olduğu syn-ack paketlerinin geri dönüşü olarak alıcağı ack paketleri gelmedikçe server yeni bir bağlantı kabul etmez. Syn Flood atağının bize yarattığı sorun burda ortaya çıkıyor. Server’a bir istekte bulunamadığımızdan erişim sağlayamıyoruz.
Syn Flood ataklarını engellemek için yöntemler geliştirilmiş bunlardan bazıları işletim sistemi seviyesinde olup bazıları kullanıcı seviyesinde geliştirilmiştir. Bunlardan başlıca olanlar:
El sıkışmasının ilk adımında client servera bir syn paketi gönderdikten sonra server tekrar paketi aldığına ve kendi bağlantı isteğini göndermek için bir syn-ack paketi gönderir. Ardından tekrar client da bu syn paketi aldığına dair bir ack paketi gönderiyor ve bağlantı sağlanmış oluyor. Syn Flood atağında atağı yapacak olan kişi server’a farklı IP’lerden çok fazla syn paketi gönderir. Server’da bu paketler alındıkça işletim sistemi gelen paket için bellekte bir yer açar. Alınan paketler için belli bir kapasite olduğu ve bu kapasite dolduktan sonra server göndermiş olduğu syn-ack paketlerinin geri dönüşü olarak alıcağı ack paketleri gelmedikçe server yeni bir bağlantı kabul etmez. Syn Flood atağının bize yarattığı sorun burda ortaya çıkıyor. Server’a bir istekte bulunamadığımızdan erişim sağlayamıyoruz.
Syn Flood ataklarını engellemek için yöntemler geliştirilmiş bunlardan bazıları işletim sistemi seviyesinde olup bazıları kullanıcı seviyesinde geliştirilmiştir. Bunlardan başlıca olanlar:
1- Server’ın bağlantı isteği kapasitesini arttırma
Farklı IP’lerden gelen syn paketlerini gönderip bağlantı isteğinde bulunmak isteyen cihaz sayısını arttırmaktır. Atağı uygulayan kişi server’ı boğmasına rağmen alınan istek sayısını arttırdığımızda biz de isteğimizde bulunup bağlantı kurmayı başarabiliriz. Bu şekilde atağın başarılı olmamış sayılabiliriz.
2- En yaşlı istenen acklerin sonlandırılması ve timeout süresinin azaltılması
Server’a bağlantı isteği gelmiş (syn paketi) sonrasında syn-ack paketi gönderilmiş olan ve gelecek olan ack paketini bekleyen bu bağlantıları en eskiden başlayarak sonlandırmak bu çözümlerden bir tanesidir. Ayrıca beklenen ack paketlerinin bir geri dönüş süresi için bir zamanlayıcı (timer) başlatılıyor. Bu zamanlayıcı zaman aşımına (timeout) uğrayıncaya kadar bu ack paketini bekliyor. Biz bu timeout süresini kısaltarak da server’i bu boş, geri dönüşü olmayacak istekleri kapatarak server’ın rahatlamasını sağlıyoruz.
3- Syn Cookie
Bu yöntemde server aldığı bir syn paketi için çerez (cookie) oluşturur. Öncelikle bu Syn Cookie yönteminde temel yapılan işlem gönderilip alınan paketlerden olan ISN (initial sequence number) değişkeninin rastgele değil de belirli yöntemlere göre hesaplanması üzerinedir. Server bu yöntemde artık gelen her bir syn paketi için bellekte alan açmıyor onun yerine ISN değişkeni hesaplanıp ( cookie ISN değerini ifade ediyor) syn-ack paketiyle beraber gönderme işlemini uyguluyor. Sonra gelecek ack paketine bakılarak isteğimiz doğrultusunda bir eşitlik var ise bu alan açılıp bağlantı kurulmuş oluyor. Unix-Linux çekirdekli işletim sistemlerinde Syn Cookie özelliği artık yüklü halde gelmekte fakat kullanımı kullanıcıya bağlıdır. İstenildiğinde belirli komutlar ile açılabilir.
4- Syn Proxy
Bu yöntemde paketler öncelikle proxy server’a iletilir. Handshake işlemi bu server’da gerçekleşir.Client öncelikle proxy server ile bağlantıyı sağlamaktadır. Proxy server ardından bir client gibi davranarak aldığı bağlantı isteğini server’a yönlendirir ve client ile server’ın arasında bir bağlantı kurulmuş olur. Ardından gelecek olan paketin sıra numarası öncekini bir fazlası olacağı için server artık gelen isteğin doğru ve güvenilir bir yerden olduğunu anlayabilecektir. Bu yöntemde aracı olan proxy server’ın güvenliği üst düzeyde sağlanmalıdır.Syn Proxy’nin kullanımı için çeşitli programlar bulunmaktadır.