3.5. Programın ortamınısınırlama

Bir süreci kısıtlamanın geleneksel yolu chroot() sistem çağrısıdır. Bu sistem çağrısısürecin ve çocuklarının bağlıbulunduğu kök dizini değiştirir. Bu çağrının başarılıolabilmesi için hedef dizinin çalıştırma(execute ) izninin olmasıgerekmektedir. Yeni bir ortam siz chdir() ile değiştirilmedikçe etkisi olmayacaktır. Tahmin edeceğiniz üzere root kullanıcısının haklarına sahip bir süreç chroot() komutuna rahatlıkla erişebilir. Bu şekilde hafızada çekirdeğin bulunduğu yeri okumak için aygıt noktasıoluşturma, bir programa hata ayıklayıcı (debugger) iliştirme gibi işlemler gerçekleştirebilir.

chroot() sistem çağrısının davranışı kern.chroot_allow_open_directories sysctl değişkeni ile düzenlenebilir.Eğer bu değişken 0 olarak ayarlanırsa chroot() fonksiyonu bir dizin açmak istediğinde EPERM hatasıile geri döner. Bu değişkenin 1 olarak ayarlandığıdurumda ise chroot() sistem çağrısıeğer başka bir dizin açıksa ve bu sürece bağlıise EPERM hatasıile dönecektir. Bunun dışında bütün değerler için hiç bir kontrol gerçekleşmeyecektir.

3.5.1. FreeBSD hapis aracı

Hapis tanımısüper kullanıcının (superuser) bir sanal sunucu (server) ortamıile güçlerini sınırlamak manasına gelir. Bu sınırlamalar ayarlandıktan sonra ağ bağlantılarısadece belirlenen bir IP den devam edebilir ve ana kullanıcının haklarıbu alanda kısıtlanmışolur.

Bu sınırlamalar dahilinde suser() kullanan süper kullanıcı(superuser) girişi denemeleri başarısız olacaktır. Bununla beraber bazısuser() çağrılarısuser_xxx() olarak değiştirilmiş. Bu fonksiyon kısıtlamalar altında olmayan süreçlerin erişim hakkının verilip, verilmemesinden sorumludur.

Kısıtlıortamda süper kullanıcı(superuser) aşağıdaki şeyleri gerçekleştirmeye muktedirdir.

Hapis güvenli ortamda çalışan uygulamalar için kullanışlıbir araçtır ama yine bazıeksiklikleri mevcuttur. Süreçler arası haberleşme mekanizması(IPC) suser_xxx şekline dönüştürelemediğinden (MySql gibi) bu ortamda çalışmaz.Bu kısıtlıortamda superuser'in yetkileri çok azdır , tabi burada az kelimesi görecelidir.

3.5.2. POSIX®.1e ' in yetenekleri

POSIX kendine olay denetleme,erişim kontrol listeleri,güzel ayarlanmışyetkiler,bilgi etiketleme , zorunlu erişim denetimi gibi özellikler içeren bir çalışma taslağıbelirledi.

Bu çalışmalar halen devam ediyor ve şu anda TrustedBSD (http://www.trustedbsd.org/) projesi üzerine yoğunlaşmışbulunmakta. Bazıön çalışmalar FreeBSD-CURRENT (cap_set_proc(3)) üzerinde gerçekleştirilmişti.