Eşeği Kafese Sokmak

0
tongucyumruk
Tamam kabul ediyorum biraz saçma bir başlık oldu ama Türkçe yazınca böyle bir hal aldı. Aslında konuya uygun bir başlık. Konumuz Linux altındaki en popüler P2P dosya paylaşım programı mlDonkey'i chroot ortamında çalıştırarak sistemimizi güvenceye almak...
P2P tarzdaki programların en büyük sorunlarından biri sisteminizi dışarıya açmalarıdır. Dosyalarınızı paylaşırken dışarıdaki insanlara da sisteminize biraz olsun gözatma şansı vermiş olursunuz.Bu da özellikle güvenlik konusunda paranoyak olan insanlar için hiç hoş bir durum değildir. Özellikle bu tarz dosya paylaşımı programlarının henüz yeterince olgunlaşmadığını (yani en azından bir Apache, QMail vs. seviyesine gelmediğini) düşünürsek güvenlik açıklarının bulunması olasıdır. Böylece kötü niyetli insanlar paylaştığınız dizinden daha yukarılara çıkabilir, tüm dosyalarınıza ulaşabilirler (Kazaa'yı hatırlayın). Peki bu programlar yeterince olgunlaşmamış diye ne yapacağız? Oturup EnGüvenliP2PProgramı 1.0.0'ın çıkmasını mı bekleyeceğiz. Unix sistemleri yıllar yılı gelişirken bize güvenliğimizi sağlamak için bir çok araç sunuyorken niye bekleyelim ki?

Bir programı güvenli bir ortamda çalıştırmanın yolu nedir?

1- Programı yetkileri azaltılmış bir kullanıcı hesabıyla çalıştırmak
2- Programı chroot ortamında çalıştırmak

Şimdi, sorunumuz şu: Bu iki önlem bir anlamda birbirini imkansız kılarlar. Bir programı chroot ortamında çalıştırmak için root olmanız gerekir. Root olarak chroot ortamında çalıştırdığınız bir program ise root yetkileriyle çalışır. Neyseki bu sorunun çözümü ilk bakışta oldukça kolaydır.

root@Serafettin:~# chroot /chroot/dizini su - -c "chrootortamindacalistirilacakkomut"

Bu cozumun sorunu su komutunu da chroot ortamimizin icine tasimamizi gerektirmesidir. Hem su tehlikeli bir komut olduğundan, hemde tembellikten bununla uğraşmak yerine chroot'un yerine geçip "su" işini bizim yerimize halledecek chrootuid adlı programı kullanabiliriz. Ne yazıkki apt-get chrootuid yazarak kullanamıyoruz, çünkü Debian stable için henüz yok, ama testing'den indirip dpkg -i ile kurmanız mümkün, dependency problemi yaşatmıyor. Chrootuid programının tek yaptığı "su" yükünü sırtımızdan almak. Programın kullanımı ise daha anlaşılır:

root@Serafettin:~# chrootuid /chroot/dizini yetkisiazaltilmiskullanici chrootortamindacalisacakkomut

Peki, buraya kadar geldik şimdi işi biraz pratiğe dökelim. önce sistemimize mlDonkey'i çalıştıracak kullanıcıyı ekleyelim

root@Serafettin:~# adduser essek

Sonra www.mldonkey.net adresinden mlDenkey'nin en son versiyonunu indirelim. Burada dikkat etmemiz gereken nokta programı chroot ortamında çalıştıracağımızdan dolayı statik olarak derlenmiş sürümünü indirmek (isminde static geçen sürüm).

root@Serafettin:~# su essek
essek@Serafettin:/root$ cd ~
essek@Serafettin:~$ wget http://savannah.nongnu.org/download/mldonkey/stable/mldonkey-2.02-0.static.i586-Linux.tar.bz2
essek@Serafettin:~$ tar -jxvf mldonkey-2.02-0.static.i586-Linux.tar.bz2
essek@Serafettin:~$ mv mldonkey-distrib-2.02-0 mldonkey


Böylece mlDonkey çalışmaya hazır hale geldi. Şimdi bir defa çalıştırıp gerekli ayar dosyalarını yaratmasını sağlıyoruz.

essek@Serafettin:~$ ./mldonkey/mldonkey

İlk defa çalıştıktan sonra Ctrl+C tuşlarına basarak programı durduralım. Şimdi root kullanıcısına dönerek mldonkey'i bu sefer chroot ortamında çalıştıracağız.

essek@Serafettin:~$ exit
root@Serafettin:~# chrootuid /home/essek essek /mldonkey/mldonkey


Şu anda mlDonkey'nin chroot ortamında essek kullanıcısıyla çalışıyor olması lazım bunu doğrulamak için aşağıdaki yöntemi uyguluyoruz:

root@Serafettin:~# ps -u essek

Karşımıza mldonkey sürecinin (prosesinin) çıkması lazım. Eğer çıktıysa bir de chroot olup olmadığını kontrol etmekte fayda var. Gelen listede en baştaki sütun, sürecin Process ID'sini (pid'ini) belirtir. mlDonkey'in pid'inin 333 olduğunu varsayarsak:

root@Serafettin:~# ls /proc/333/root

Bu komutun bize chroot dizinimizin (Örnekte /home/essek) içeriğini döndürmesi gerekir. Eğer bu sonucu aldıysak hayırlı uğurlu olsun. Artık güvenli olarak çalışan bir mlDonkey'miz var.

Ben bir de daemon olsun istiyorum

Eğer bir dosya paylaşımı fanatiğiyseniz mlDonkey'nin sadece bir terminalde öylece durması hoşunuza gitmeyebilir. Bu durumda yapılabilecek en iyi şey onu bir Daemon olarak çalıştırmak, hatta bir init scripti ile her sistem açılışında çalışmasını sağlamak olacaktır. Bunun için ben Debian ile gelen start-stop-daemon adlı ufak programcığı kullandım. Debian dışı dağıtımlar kullananlar için bu işin D. J. Berntein'ın daemontools'u kullanılarak nasıl yapılacağı burada anlatılmış.

Aslında yukarıda yazılanlardan sonra start-stop-daemon'ın man sayfasına bir göz atmak yeterli olacaktır. Aslında start-stop-daemon kendi içerisinde chuid ve chroot seçenekleri sunsa da ben chroot olarak çalıştırmayı beceremedim, beceren varsa buyursun. mlDonkey'yi start-stop-daemon kullanarak çalıştırmak oldukça kolay:

root@Serafettin:~$ start-stop-daemon --start --background --quiet --exec /usr/bin/chrootuid -- /home/essek essek /mldonkey/mldonkey

Bu komutu masaya yatırıp parça parça incelersek:

--start: açıklama gereği duymuyorum, programın başlatılacağını gösteriyor

--background: Çalıştırdığınız program eğer kendiliğinden fork() ile kendini arkaplana atmazsa zorla arkaplanda çalıştırmayı sağlıyor.

--quiet: stat-stop-daemon'a bir hata olmadıkça ekranı doldurmamasını söylüyor.

--exec: Çalıştıracağımız komut, dikkat etmemiz gereken nokta komutun sadece adını değil tam yolunu yazmak gerektiği.

-- : Boş "-- " parametresinden sonra yazdıklarımız --exec bölümünde verdiğimiz komuta parametre olarak geçiriliyor

Çalıştırdığımız mlDonkey sürecini durdurmak içinse aşağıdaki komutu veriyoruz:

root@Serafettin:~#start-stop-daemon --stop --exec /home/essek/mldonkey/mldonkey

Aslında bu yöntemin performansının oldukça düşük olduğunu itiraf etmem lazım. Bunun yerine start-stop-daemon'ın --pidfile seçeneğini kullanabilirdik ancak bu seçenek gerçekte çalışıtrğımız komut chrootuid olduğundan ve mldonkey onun dışında çalıştığından işe yaramıyor.

Pekiala buraya kadar geldiğimize göre bir de init scripti yazarak programı sistem açılışında çalıştırmamızı kimse engelleyemez. Aşağıdaki scripti /etc/init.d dizininize kopyalayıp gerekli sembolik linkleri oluşturduğunuzda program sistem açılırken çalışacaktır. Tabii onun yerine sadece ./mldonkeyd start şeklinde de kullanmanız mümkün.

#!/bin/sh

set -e

MLDONKEY_BIN=/mldonkey/mldonkey
CHROOTUID_BIN=/usr/bin/chrootuid
CHROOT_DIR=/home/essek
MLDONKEY_USER=essek

test -f ${CHROOT_DIR}${MLDONKEY_BIN} || exit 1
test -f $CHROOTUID_BIN || exit 1
test -d $CHROOT_DIR || mkdir -p ${CHROOT_DIR}

case "$1" in	
	start)
		echo "MLDonkey Deamon Başlatılıyor"
		start-stop-daemon --start
 --background --exec ${CHROOTUID_BIN} -- 
${CHROOT_DIR} ${MLDONKEY_USER} ${MLDONKEY_BIN}
		;;
	stop)
		echo "MLDonkey Daemon Durduruluyor"
		start-stop-daemon --stop --exec 
${CHROOT_DIR}${MLDONKEY_BIN}
		;;
	restart)
		echo "MLDonkey Daemon Durduruluyor"
		start-stop-daemon --stop --exec 
${CHROOT_DIR}${MLDONKEY_BIN}
		echo "MLDonkey Deamon Başlatılıyor"
		start-stop-daemon --start 
--background --exec ${CHROOTUID_BIN} -- 
${CHROOT_DIR} ${MLDONKEY_USER} ${MLDONKEY_BIN}
		;;
	*)
		echo "Kullanımı: 
/etc/init.d/mldonkeyd {start|stop|restart}"
		;;
esac

Hepinize hayırlı paylaşımlar.

Görüşler

0
sundance
Valla eline, koluna, networküne, bilgine sağlık. Süper bir makale olmuş. Haydin mldonkeyciler gün bizim günümüzdür.

Bu arada FZ`nin gönderdiği programlama dili karşılaştırma sitesinde, C`di Perl`dü birçok dili yayan bırakan bir dil var OCML. mldonkey`in yazıldığı dildir kendisi birara gözatın derim. Özellikle de Perl`e okuması zor diyenler :))
0
FZ
Allah her editöre böyle güzel, detaylı, vizyon açıcı makale düzenleme, onaylama, yayınlama fırsatı bahşetsin gani gani. Amin! :)
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Internet Üzerinden Bir Takip Öyküsü

FZ

Geçen gün bir arkadaşımla yazışırken ilginç bir hikaye dinledim ve sizinle paylaşmak istedim:

Arkadaşım Internet üzerinden ICQ aracılığıyla birisi ile yazışıyormuş. Alışıldığı üzere karşısındakine ismini sormuş ancak karşı taraf ismini söylememekte ısrar edince arkadaşım bu inatçı şahsiyeti biraz şaşırtmaya karar vermiş. Önce ICQ programını kontrol etmiş ve yazıştığı kişinin IP numarası gösterme özelliğinin açık olduğunu görmüş (hata 1). Buradan makinanın IP adresini öğrenmiş ve ardından Essential Net Tools isimli programı kullanarak makinanın NetBIOS sisteminin açık olduğunu tespit etmiş (hata 2). Böylece makinanın MS Windows ağındaki makina ismini öğrenmiş: xxxxxx-24 gibi bir isim (hata 3). Bu bilgileri edindikten sonra tüm zamanların en faydalı sitesi Google arama sitesine girip "xxxxxx" ismini aratmış ve karşısına "xxxxxx internet cafe, adres:....." şeklinde bilgiler çıkmış.

Bu bilgilerle donanmış olan arkadaşım karşısındakine şöyle bir mesaj göndermiş: "Şu anda falanca adreste, falanca telefonlu Internet Kafe'de, 24 numaralı makinanın başındasın, hala ismini söylemek istemiyorsan sen bilirsin ;-)". Karşı tarafın küçük çaplı bir şok geçirip dumura uğraması üzerine muhabbeti fazla uzatmamış ;-)

Kıssadan hisse: Windows ortamında, Internet Kafe'de falan yazışırken dikkatli olun. Ya inatçılık etmeyin, ya da edecekseniz gereksiz servisleri kapatın, işletim sisteminizi kontrol edin, vs. vs. ;-)

Internet Tarayıcınız Ne Kadar Güvenli?

FZ

Sizi bilmem ama scanit firmasının Browser Security Test sistemi ile Windows 2000 Pro Service Pack 2 ve IE 5.0 yüklü sistemimi kontrol (Start The Test linkine tıklayarak) ettiğimde (yaklaşık 3-4 dakika süren ve bir sürü popup pencere açan bir test, panik yapmayın :) aşağıdaki sonuçları elde ettim:

Bilgisayar Korsanlarına Beş Yıla Kadar Hapis Cezası

FZ

Adalet Bakanlığı'nın bilişim suçlarına ilişkin hazırladığı kanun tasarısında, bilgisayar korsanlarına 2 yıldan 5 yıla kadar hapis ve adli para cezası verilmesi öngörülüyor. Bakanlık, "Bilişim Ağı Hizmetlerinin Düzenlenmesi ve Bilişim Suçları Hakkında Kanun Tasarısı"nı görüşlerini almak üzere diğer Bakanlıklar ve bakanlıklara bağlı kuruluşlar ile yüksek mahkemeler, üniversiteler, barolar, adli tıp, noterlik, bankalar, adli komisyon başkanlıklarının aralarında bulunduğu 100'den fazla kurum ve kuruluşa gönderdi. Bakanlık, söz konusu kurum ve kuruluşların görüşleri doğrultusunda değişik yaparak tasarıya son şeklini verecek.

Tasarıya göre, bilgisayar korsanlarına 2 yıldan 5 yıla kadar hapis ve adli para cezası da öngörülüyor. Buna göre, bir bilişim ağı aracılığıyla; bilişim sisteminde bulunan verileri veya programları hukuka aykırı olarak bozan, silen, değiştiren, yok eden, erişilmez kılan veya sisteme veri veya program yerleştiren, ekleyen, veri veya programlara zarar veren kişi, 2 yıldan 5 yıla kadar hapis ve adlî para cezası alacak.

Network Penetrasyon Testleri Eğitimi / 17-18 Nisan

butch

Bu eğitim güvenlik dünyasında ismi duyulmuş çeşitli açık kaynak kodlu yazılımların en etkin şekilde kullanılarak efektif güvenlik testlerinin yapılabilmesini amaçlamaktadır. Eğitimde kullanılan araçların isimleri çok bilinmesine rağmen detay özellikleri ve etkin kullanımı genelde bilinmemektedir.

Eğitim sonrası katılımcılar herbiri kendi alanında en iyisi sayılabilecek bu araçları tüm detayları ile birlikte nerede nasıl kullanılacağını öğrenmiş olacaktır.

Diğer detaylar ve eğitim içeriğine bu adresten ulaşabilirsiniz.

Telsim GPRS üzerinden izinsiz giriş!

anonim

TELSIM üzerinden yaklaşık 6 aydır Internet´e bağlanıyorum. Geçen hafta bilgisayarıma ZoneAlarm kuruncuya kadar her şey normal gidiyordu. Ne zaman Internet´e bağlansam 5-10 dakika sonra ZoneAlarm

The firewall has blocked internet access to your computer(NetBIOS Name) from 81.6.65.39 (UDP Port 1025)

mesajı verir oldu. Sonunda IP sahibini aramaya karar verdim. Aşağıda IP sahibinin detaylı bilgisini gösteren adres yer alıyor.

http://arul.telenet-systems.com/cgi-bin/track.cgi?host=81.6.65.39

Garip değil mi?