SYN cookies

Vikipedi, özgür ansiklopedi

SYN çerezleri (SYN cookies), SYN saldırılarına karşı korunmak için kullanılan bir tekniğin en önemli unsurudur. İlk olarak Daniel J. Bernstein tarafından bulunmuştur, bu kişi "TCP sunucuları tarafından TCP sıra numaraları başlangıç değerlerinin belirli seçenekleridir" diyerek SYN cookies tanımlaması yapmıştır. Özellikle, SYN cookies kullanımı, SYN kuyruğu üste doldururken bağlantıların düşmesini engellemek için bir sunucu kabul eder. Bu sunucu istemciye uygun SYN+ACK cevabı geri döner fakat SYN kuyruk girişi atılır. Eğer sunucuya istemciden altsıralı ACK cevabı ulaşırsa sunucu TCP sıra numarasındaki şifrelenmiş bilgiyi kullanarak SYN kuyruk girişini tekrar yapılandırabilir.

Gerçekleştirimi[değiştir | kaynağı değiştir]

İstemci TCP bağlantısı başlatmak amacıyla sunucuya bir TCP SYN paketi gönderir. Bunun üzerine, sunucu istemciye bir TCP SYN+ACK paketi geri gönderir. Bu paketteki değerlerden bir tanesi sıra numarasıdır. Bu numara TCP tarafından veri akışının tekrar kurmak için kullanılır. TCP tanımlamasına göre, bir uç nokta tarafından gönderilmiş ilk sıra numarası uç nokta tarafından kararlaştırılmış herhangi bir değer olabilir. SYN cookies aşağıdaki kurallara göre dikkatli bir şekilde yapılandırılmış sıra numaralarının başlangıcıdır:

  • t = Yavaşça artan zamanbilgisi(genellikle time() mantıksal olarak 6 pozisyon sağa ötelenmiş, 64 saniye netlikle)
  • m = Sunucunun SYN kuyruk girişinde depolaması gereken maksimum segment boyutu değeri
  • s = Sunucunun IP adresi ve port numarası, istemcinini IP adresi ve port numarası ve t değeri üzerinden hesaplanmış kriptografik gizli bir fonksiyonun sonucu. Geriye dönen s değeri 24 bit değer olmalıdır.

TCP sıra numarasının başlangıcı, SYN cookies'de, aşağıdaki gibi hesaplanır:

  • İlk 5 bit: t mod 32
  • Sonraki 3 bit: m olarak temsil edilen şifrelenmiş değer
  • Son 24 bit: s

Bir istemci sunucunun SYN+ACK paketine cevap olarak sunucuya TCP ACK paketi geri gönderirken, istemci paketin kabul numarası içerisinde n+1 kullanmalıdır. Buradaki n sunucu tarafından gönderilen sıra numarası başlangıcıdır. Daha sonra sunucu, istemciye gönderilen SYN cookie'yi ortaya çıkarmak için kabul numarasından 1 çıkartır.

Daha sonra sunucu aşağıdaki işlemleri uygular.

  • Bağlantı sonlanmış mı diye görmek için şimdiki zamana karşı t değerini kontrol eder.
  • Geçerli SYN cookie olup olmadığına karar vermek için s yi tekrar hesaplar.
  • SYN cookie içerisinde şifrelenmiş 3 bitten m değerini çözer, daha sonra onu SYN kuyruk girişini tekrar yapılandırmak için kullanabilir.

Bu şekilde bağlantı normal bir şekilde sağlanmış olur.