[linux-programlama] Re: SYN flood

---------

From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Sun 30 Mar 2003 - 14:22:49 EEST

  • Next message: yilmaz kemal yüce: "[linux-programlama] Re: SYN flood"

    Selamlar..

    Bunun icin uygulanabilecek bir kac yontem var. Basta raw socket API
    uzerinden calismak, devaminda netfilter uzerine sistemi uygulamak gibi.

    Fakat bu Multicast mantalitesi ile biraz ters gibi geldi bana. Uygulama
    seviyesinde UDP paketleri ile bir tur connection kontrol yapabilirsiniz.

    Siz her yeni baglanti icin yeni bir TCP connection kuracaksiniz. Bu
    durumda bu gene unicast olur. Kernel TCP kodlari uzerine dalmaniz
    gerekir. SEQUENCE numaralarini vs. buna gore ayarlamakla ugrasmak
    gerekecektir.=20

    Diger yandan bunu multicast olarak yaparsaniz, TCP paketlerinin
    destination adresleri ne olacak ? Alicilarin hangisi bunu alacak ? Yani,
    siz bunu Layer 1/2 broadcast ile yollayacaksiniz. Sonucta karsi tarafin
    sizin yayininizi almasi icin gereken tek sey promiscous modda calisan
    bir ethernet.

    broadcast/multicast maalesef her daim boyle. Yani, yaptiginiz islem
    biraz fuzuli gibi gorunuyor. Belki ben yanlis anliyor olabilirim.=20

    Neden oyle gorunuyor ? Multicast islerinde streami butunleme islevleri
    uygulama seviyesinde gerceklestirir. TCP ise bu isi stack seviyesinde
    yapar. Sonucta aradaki bir paketin bir tek node tarafindan alinamamasi=20
    durumunda karsi tarafa durum bildirilmelidir. Sunucu da o paketi yeniden
    yollamalidir. Peki bu durumda diger node'lar ne yapacak ?=20

    TCP temel olarak point-to-point iletisim icin dizayn edilmis bir
    protokol. *cast isleri isleri icin uygun degil.

    Bence en uygun cozum kendi protokolunuzu yazin. Bunu UDP uzerine
    bindirebilirsiniz mesela.=20

    Saygi ve sevgiler..

    On Sun, 30 Mar 2003 10:49:11 +0000
    "yilmaz kemal y=FCce" <ykyuce@hotmail.com> wrote:

    >=20
    >=20
    >=20
    > Herkese iyi =E7al=FD=FEmalar,
    >=20
    > ben IP Multicast =FCzerinde =E7al=FD=FE=FDyorum ve uygulama seviyesi katm=
    an=FDnda
    > IP Multicast'a g=FCvenilirlik kazand=FDrarak bir yerel a=F0 =E7oklu yay=
    =FDn
    > protokol=FC hazirlamaya u=F0ra=FE=FDyorum. Detaylara girmeme gerek yok. S=
    tream
    > tipi soketler de kulland=FD=F0=FDm i=E7in benim SYN floodunu =F6nlemek am=
    ac=FD ile
    > bir teknik bulmam gerekli. Mesele daha a=E7=FDk =FEekilde =FE=F6yle : bir=
     sunucu
    > accept ( ) sistem =E7a=F0r=FDs=FD ile bloklanmi=FE I/O modundaki bir soke=
    t ile
    > istemci ba=F0lant=FDs=FD bekliyor. accept ( ) ilk gelen ( veya queueda
    > bekleyen bir sonraki ) iste=F0i kabaca =FE=F6yle handle ediyor : ( a )
    > istemciye SYN_ACK g=F6nderiyor, ( b ) istemci ile aradaki ileti=FEim i=E7=
    in
    > yeni soket yarat=FDyor ve ( 3 ) yeni soket descriptorunu ve istemcinin
    > host adresini uygulama seviyesine gonderiyor. Bundan sonra mevcut bir
    > host IP look up tabloma bak=FDp gelen iste=F0in beklenen istemcilerden
    > birinden gelip gelmedi=F0ini kontrol etmeliyim. Zira her ba=F0lant=FD ist=
    e=F0i
    > beklenen istemcilerden birinden gelmeyebilir. B=F6yle olunca SYN_ACK'in
    > g=F6nderilmesi, yeni soketin yarat=FDlmas=FD ve bunlar=FDn ard=FDndan kon=
    trol
    > sonucu istemcinin beklenen istemciler listesinde olmamas=FDn=FDn sonucu
    > bir de yarat=FDlan soketin kapat=FDlmas=FD i=FElemi gerekiyor ki b=FCt=FC=
    n bunlar
    > extra a=F0( yakla=FE=FDk 10 TCP paketi) ve sistem kayna=F0=FD harcamas=FD=
    (CPU ve
    > memory) anlam=FDna geliyor. Uzatmayay=FDm. FreeBSD'de bir soket opsiyonu
    > ile ( SO_ACCEPTFILTER ) sunucu, gelen ba=F0lant=FD iste=F0ini g=F6nderen
    > istemcinin host adres bilgilerine ula=FEabiliyor. B=F6ylelikle SYN_ACK
    > g=F6ndermeden, soket yaratmadan ve yarat=FDlan soketin kapat=FDlmas=FD
    > i=FElemine gerek kalmadan istemci adresi denetlenip uygunsuz ise cevap
    > verilmiyor. B=F6ylelikle SYN flood engellenmi=FE oluyor. Linux'te b=F6yle
    > bir opsiyon veya bunu ba=FEarmam=FD sa=F0layabilecek bir teknik biliyor
    > musunuz? Yard=FDmlar=FDn=FDz i=E7in =FEimdiden =E7ok te=FEekk=FCrler. =DD=
    yi
    > =E7al=FD=FEmalar...


  • Next message: yilmaz kemal yüce: "[linux-programlama] Re: SYN flood"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.