Bundan uzun zaman önce Enderunix de okudugum güzel bir döküman bilgi açısından okumanızın faydalı olucağını düşünüyorum
FreeBSD’deki SYN flood önlemlerinden “SYN cookies” fikrinin ilk kim tarafından gündeme getirildiğini merak ettim.
Karşıma cok tanıdık biri çıktı. Şaşırdığımı söyleyemem doğrusu
http://cr.yp.to/syncookies.html
D.J.B.
Etkili (D)DoS saldırılarından SYN flood, hedef sistemin TCP protocol block tablosunu bogus SYN paketleri ile doldurup, hedefin yeni bağlantı isteklerine cevap dönememesini hedefler. FreeBSD’de (ve muhtemelen diğer BSD’lerde) bunun için
Syn cache ve Syn Cookies mekanizmaları beraber kullanılır.
Syn cache, bağlantı ile ilgili state bilgilerini bağlantı henüz oluşmamışsa (ESTABLISHED state’de degilse), daha ufak ve ucuz veri yapiları ile farklı bir tabloda tutup, daha fazla “initial state” tutma ve ACK edilmemiş bogus bağlantıları daha çabuk timeout’a uğratmak için geliştirilmiş bir yöntem.
Fakat, bu tablonun da bir sınırı olduğu için, FreeBSD, syncache’in dolmaya yüz tuttuğu durumda, syn cookies’i devreye alır.
Syn cookies yöntemi de, 3-way phase’deki bağlantılar için state tutmaya gerek bırakmaz. Bir kriptografik yöntem [1] ile, bağlantının state bilgisi (e.g. ISN), SYN+ACK cevabı içinde yollanır, dönen ACK’den (eğer dönerse) bağlantı state’i restore edilir.
/usr/src/sys/netinet/tcp_syncache.c’den:
static int tcp_syncookies = 1;
SYSCTL_INT(_net_inet_tcp, OID_AUTO, syncookies, CTLFLAG_RW,
&tcp_syncookies, 0,
“Use TCP SYN cookies if the syncache overflows”);
FreeBSD’de, by-default, iki mekanizma da aktif olarak geliyor. syncache artık stabil
hale geldiği için, kullanıp kullanmamak opsiyonel değil.
Fakat, syncookies, kriptografik hesaplamalardan dolayı çok CPU cycle’a ihtiyaç duyduğu ve TCP option’ları drop etmeyi gerektirdiği için FreeBSD’de öntanimli olarak aktif olmasına karşın devre dışı bırakılabilmesine izin verilmiş.
Kod:
root <at> efe# sysctl -a | grep syncoo
net.inet.tcp.syncookies: 1
root <at> efe#
Linux’ta aktive etmek için:
Kod:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
[1]
http://cr.yp.to/syncookies/archive
Kaynak : Enderunix.org