Kullanıcı Adı :   Şifre:  
  Online: 241 kişi (16 kayıtlı kullanıcı, 225 konuk),   [Üye ol]   [Şifremi Unuttum

Telif hakkı: Gökhan ALKAN, TÜBİTAK-UE
Gönderen: qaqqos   Tarih: 2008-12-29 23:28 / Sık Kullanılar'a Ekle
Yorum: (0)   Oy:
Ortalama oy (10 üzerinden) : Henüz Oylanmamış   
Oylar: 0
     

1. Motivasyon

Bu makalede özellikle sunucu servis yazılımlarının ve uygulamaların Chroot ortamında çalıştırılması, kademeli güvenlik anlayışı gibi yaklaşımlardan ziyade basit olarak Chroot nedir ve neden Chroot kullanmak gerekli sorusuna cevap aranmaya çalışılacaktır.
2. Chroot Nedir?

Chroot, yazılımlar için yeni bir kök (/) dizini tanımlar. Kısaca çalıştırılacak olan servis ya da uygulama için gerekli kütüphane, yapılandırma, sürücü dosyaları (device file), bu servis için belirlenen kök dizinde bulunan ilgili yollara (path) kopyalanır ve hapsedilmiş olarak çalıştırılır.

Peki, Chroot kullanmanın getirdiği avantajlar ve dezavantajlar nelerdir ve neden kullanmak gerekli? Kısaca bu sorunun cevabı, eğer sistem üzerinde Chroot ortamında çalışan bir servis ya da uygulamadan kaynaklanan bir açıklığı kullanarak sisteme sızan bir saldırgan, bütün dosya sistemine ve işletim sistemi kaynaklarına erişim sağlayamayacak ve sadece Chroot için belirlenen kök dizine ve burada bulunan kaynaklara erişim sağlayabilecektir. Ayrıca kısıtlı dosya sistemi erişimi sağlaması yanında kısıtlı komutlara erişim ile de sistem üzerinde bulunan komutlar kümesine erişim de kısıtlanmış olacaktır.

Aşağıdaki şekilde ( Şekil 1 ) Chroot kullanımı ile dosya sistemine erişim şematize edilmiştir.


Şekil 1 Chroot Kullanımı İle Yeni Dosya Sistemi Hiyerarşisi
3. Chroot Nasıl Çalışır?

Chroot komutu
# chroot /chroot [komut seti]

şeklinde çalıştırılır.
Burada /chroot dizini örnek dizin olarak belirtilmemiştir. Bu dizin yerine isteğe göre herhangi bir dizin seçilebilir.

Örnek bir kullanımı şu şekildedir.
Kod:
# mkdir /yeni_dizin
# chroot /yeni_dizin


Bütün bu işlemler için chroot komutu, Chroot sistem çağrısını kullanır. Kısaca önce belirlenen yeni kök dizini içerisine girilir ve arkasından Chroot sistem çağrısı çalıştırılır ve son olarak belirlenen kullanıcı kimliğine bürünülerek root kullanıcı haklarından vazgeçilir.
Kod:
# chdir("/yeni_dizin");
# chroot("/yeni_dizin");
# setuid(500);


Bu komutun 500 uid’sine sahip kullanıcı tarafından çalıştırıldığı varsayılmıştır.
4. Örnek Chroot Ortamının Oluşturulması

Daha öncede belirtildiği gibi sadece saldırganın bütün dosya sistemine ve işletim sistemi kaynaklarına erişimi engellenmiş olacaktır. Aşağıda Chroot kullanıma basit bir örnek verilmiştir. Bash kabuğu Chroot ortamı altında çalıştırılacak ve birkaç örnek komut Chroot ortamı altında çalıştırılacaktır.
Kod:
# mkdir /yeni_dizin
# which bash
/bin/bash
#
# cd /yeni_dizin
# mkdir /bin
# mkdir /lib
# ldd /bin/bash
        linux-gate.so.1 =>  (0x00712000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0x00c49000)
        libdl.so.2 => /lib/libdl.so.2 (0x00c43000)
        libc.so.6 => /lib/libc.so.6 (0x00afe000)
        /lib/ld-linux.so.2 (0x00ae0000)
#


Bu çıktıya göre bash için gerekli kütüphane dosyaları teker teker belirlenmeli ve ilgili dizinlere kopyalanmalıdır. Hangi kütüphane dosyalarına ihtiyaç olduğu ‘ldd’ komutu aracılığı ile öğrenilebilir.
Kod:
# cp –p /lib/libtermcap.so.2 /home/ga/yeni_dizin/lib
# cp –p  /lib/libdl.so.2 /home/ga/yeni_dizin/lib
# cp –p  /lib/libc.so.6 /home/ga/yeni_dizin/lib
# cp –p  /lib/ld-linux.so.2 /home/ga/yeni_dizin/lib


Ardından chroot komutu ile bash kabuğu Chroot olarak belirtilen dizinde çalışmaya başlayacaktır. Chroot ortamı altında çalıştırılmak istenen komutlar ve bu komutlar için gerekli kütüphane dosyaları ‘ldd’ komutu yardımı ile bulunarak ilgili dizinlere kopyalanmalıdır.
Kod:
# cp –p /bin/bash /yeni_dizin/bin
# cp –p /bin/pwd /yeni_dizin/bin
# chroot /yeni_dizin/ /bin/bash
bash-3.2# pwd
/
bash-3.2# exit


Görüldüğü gibi ‘pwd’ komutu çalıştırıldığında ‘/yeni_dizin’ dizinini kök (/) dizini olarak görülmektedir. Chroot ortamından çıkmak için ‘exit’ komutu kullanılabilir. ‘pwd’ gibi çalıştırılmak istenen komutlar gerekli kütüphane dosyaları ile birlikte ilgili dizinlere kopyalanarak çalıştırılabilirler.

Burada verilen basit bir örnektir. Asıl Chroot kullanım amacı dosya sistemi hiyerarşisi üzerinde dağıtık biçimde erişim sağlayabilen servisler için kullanımı olmalıdır. Bu şekilde saldırgan, sistem üzerinde çalışan bir servisten ya da uygulamadan kaynaklanan bir açıklık ile sisteme sızmayı başardığında bütün dosya sistemine erişimi engellenmiş olacaktır.
Gökhan ALKAN, TÜBİTAK-UEKAE
01.09.2008
Benzer Sayfalar (Şuan okuduğunuz sayfa ile benzer olan sayfalar listelenmektedir)
#BaşlıkYazanKategoriOkunmaTarih
1CGI Nedir & PERL Nedir?F1R4TDökümanlar » ASP / PHP / CGI11362006-10-17 09:55
2Wi-Fi nedirxxsatrianixxDökümanlar » Network / Ağ8482008-09-16 01:01
3URL nedir ?CooL JacKDökümanlar » Gerekli Bilgiler6562006-11-01 01:09
4CRM Nedir?rangerosDökümanlar » Gerekli Bilgiler6112006-12-25 19:26
5Wi-Fi Nedir?rangerosDökümanlar » Network / Ağ6352006-12-25 12:41
6FTP nedir ?CooL JacKDökümanlar » Gerekli Bilgiler5912006-11-01 01:11
7Ms-dos Nedir ?RoXeTTeDökümanlar » Windows15082006-11-01 12:53
8MD5 Nedir ?F1R4TDökümanlar » Gerekli Bilgiler9582006-11-05 21:05
9ICQ Nedir?rangerosDökümanlar » Instant Messaging5982006-12-24 20:53
10D.O.S Nedir ?RoXeTTeDökümanlar » Gerekli Bilgiler5362006-11-13 12:27
38.107.191.117 logged
Sayfa oluşturma süresi 0.038 saniye
SQL toplam zamanı: 0.007 saniye - SQL sorgusu: 42 - Ortalama SQL zamanı: 0.00017 saniye

[ Site - Sayfa ]
Bağlantılar:
Woltran Sinema izle video izle video izle video video izle izle

firma ekle