Monthly Archive for December, 2008

Paket Gönderici

Tcp_ips100 mbit lik yerel ağda ağın gerçek hızını tespit edebilmek için bir uygulama geliştirmeye çalışıyorum.
Mantık şu: 1500 byte büyüklüğündeki paketlerden 1 sn. de 10 tane göndersek 15.000 byte=120.000 bit=~117 mbit.
Bu arada birim zamanda gönderilen paketlerin kaç tanesinin alındığını kayıt ederek, 1 dakikalık test sonunda alınan paket / alınması gereken paket ile ağın pratikteki hızını tespit etmeye çalıştım.
Önce, çok kısa beklemeler ile (normalde 10 ms. de bir paket göndermem gerekirken) 1 ms. civarında bekleyerek veri gönderip almayı denedim. Bilgisayarı bırakıp dışarı çıktım. 3 saati aşkın bir süre sonunda baktığımda şu sonuçla karşılaştım:

InoutResimdeki gönderilen paket değerine baktığınızda 3 saat 19 dakikada 12 milyar 884 milyon değeri görünüyor ki, ne teoride ne de pratikte bu kadar paket göndermek mümkün değil. Kullandığım Switch Cisco Catalyst, her iki pc deki ethernet kartı Intel, yani ağ donanımında sorun olmamalı idi.

Anladığım kadarıyla TCP/IP stack’i arka arkaya çok fazla raw paket gönderilmeye çalışıldığında bunu engelliyor. http://research.eeye.com/html/tools/RT20060808-1.html adresinde XP SP2 ve w2k3 te TCP SYN paketlerinde böyle bir durumun söz konusu anlatılıyor.

Stack in çöküp çökmediğini kontrol etmek için Internete bağlanmayı denedim. Maalesef bağlanamadı.

Sonuç: Microsoft’un ethernet sürücülerine direk çok hızlı yüklenildiğinde stack çok kısa sürede çöküyor ve ne veri girişine ne de çıkışına izin veriyor!

Bekleme değerlerini daha normal değerlere düşürüp, VOIP ya da MMS stream gibi mantıklı paketler oluşturup veri alışverişi yaparak hız testini yenileyeceğim.

Merak ettiğim konulardan biri ise Microsoft TCP/IP stack’inin (özellikle Vista) Gigabit network e bağlı olduğunda ne kadar dayanabileceği. Kısa vadede eve Gbit networku kurmayı düşünmediğimden bu testi bir süre daha ertelemem gerekli.

/tmp klasörü güvenli mi?

TrashUnix tabanlı işletim sistemlerinde /tmp klasörü (adı üzerinde olduğu gibi) geçici dosyaların kopyalandığı klasördür. (Windows taki Local Settings/Temp klasörü gibi). Geçici depolama alanı olduğundan aynı anda bir çok kullanıcı hatta işlem (process) kullanıcıları bu alanı kullanmak zorundalar. tmp klasörü güvenliğini sağlarken sadece belli kullanıcılara yazma hakkı vermek gibi bir durum söz konusu değil.

Ancak backdoor, trojan, botnet gibi programlar da kendilerini güvenilir bir yer olan tmp klasörüne saklayabiliyorlar. Ancak tmp klasörüne kopyalanan dosyalar çalıştırılamaz şekilde ayarlanırsa /tmp ile ilgili güvenlik riskleri ortadan kaldırılmış olur.

Bunun için:

dev klasörüne girin

cd /dev

Yaklaşık 200 MB lık yeni bir alan oluşturun. Daha fazlası lazım ise (neden ki) count değerinden değiştirebilirsiniz.

dd if=/dev/zero of=tmpMnt bs=1024 count=200000

Dosya sistemini oluşturun

/sbin/mke2fs /dev/tmpMnt

Eski /tmp klasöründeki dosyalar lazım ise yedeğini almayı unutmayın!

Yeni oluşturduğunuz alanı tmp klasörüne maount edin

mount -o loop,noexec,nosuid,rw /dev/tmpMnt /tmp

Yeni tmp klasörünün yeni izinleri:

chmod 1777 /tmp

Bilgisayarın her açılışında /tmp klasörüne oluşturduğumuz alanın mount edilmesi için:

Kullandığınız editör ile /etc/fstab dosyasını açın, fstab dosyasının en alt satırına:

/dev/tmpMnt         /tmp         ext2    loop,noexec,nosuid,rw  0 0

Dosyanın üstündeki satırlara göre tab ları ayarlayabilirsiniz.

Artık tmp klasörünüze bir shell dosyası koyarak chmod +x yaparak çalıştırmayı deneyebilirsiniz.

Not: Bu işlemleri dikkatsiz yapmanız durumunda bilgisayarınız yeniden başlamayabilir, tmp klasörü kullanılamaz hale gelerek bir çok program hatalar üretebilir. Dikkatle ve başka yerlerden de araştırarak uygulayınız.