Ana Sayfa » *nix » Ezjail Flavours ile Öntanımlı Jail Sistemler Oluşturmak

Ezjail Flavours ile Öntanımlı Jail Sistemler Oluşturmak


BerbatKötüİdare EderGüzelHarika (Henüz Puan Verilmedi. Oy kullanarak siz de katkı yapabilirsiniz.)
Loading...

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYpEA6a7' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
FreeBSD_Jail Bildiğiniz gibi bir üzerinde, kendisine ait ayrı ip ve alan adı bulunan mini 'ler (jailler) oluşturabiliyor ve her bir jail'e farklı sunucu uygulamaları (web, dns, smtp, ftp vs. vs.)  yükleyebiliyorsunuz ve bu mini sistemler üzerinde çalışan uygulamalara ait süreçler diğer jaillerdeki süreçlerden yalıtılmış olduğu için de hat safhada güvenlik sağlıyorlar. Daha önce kurulumuna FreeBSD Jail Kurulumu – Güvenli Network Servisleri başlıklı yazımda değindiğim Jail özelliği hem efektif sanal sunucular oluşturmak hem de sistem servislerinin güvenliğini sağlamak için oldukça kullanışlı buluyorum.

Bu yazıda ise, ezjail isimli jail yönetim çatısının (jail administration framework) flavours özelliğini kullanarak, üzerine gerek duyulan tüm paketlerin yüklenmiş olduğu hazır jail sistemler oluşturmaktan bahsetmek istiyorum.

 

Başlamadan Önce


Bu yazıda anlatılanları uygulamadan önce sisteminizde ezjail yüklü olmalı ve jail sistemler oluşturmak için gerekli olan yapılandırma işlemleri tamamlanmış olmalıdır. ezjail kurulumu ve yapılandırması için FreeBSD Jail Kurulumu – Güvenli Network Servisleriisimli yazıyı inceleyiniz ve sisteminizi hazır duruma getiriniz.

Ezjail Flavours


Normalde ezjail kullanarak öntanımlı ayarlarla bir jail sistem oluşturduğunuz zaman, kendi ipsi ve alan adı olan bomboş bir mini FreeBSD elde etmiş oluyorsunuz. Bu jail sistem üzerinde örnek olarak bir web sunucusu çalıştırmak isterseniz, herzamanki gibi port ağacından (ya da pkg_add aracı ile) gerekli uygulamaları sisteme yüklemeniz ve yapılandırma işlerini tamamlamanız gerekir. Fakat, aynı paketlerin kurulu olduğu birden fazla jail sisteme ihtiyacınız varsa bu manual yükleme ve yapılandırma işleri çok zamanınızı alacaktır. İşte ezjail'in flavours özelliği bu noktada yardıma koşmakta ve öntanımlı olarak gerekli paketlerin yüklenmiş olduğu jailler oluşturmanıza olanak sağlamaktadır.

Kısaca, flavours ile öntanımlı şablonlar hazırlayabilir ve yeni bir jail oluşturuken bu şablonların kullanılmasını sağlayabilirsiniz. Örnek olarak ayrı ayrı web, sql, dns, smtp vs. gibi tüm servisler için birer flavours hazırlarsanız ileride bir bu servislerden herhangi birini çalıştıracak yeni bir jail sistem oluşturmanız epey kolaylaşacaktır.

Flavours mantığı ile ilgili bu kadar açıklama zannediyorum yeterli olacaktır. Şimdi flavours yapılandırmaları ile ilgili teknik konulara değinmek istiyorum.

Öntanımlı Flavour


Sisteminize ezjail kurduğunuz zaman example isminde (adı üstünde) örnek bir flavour oluşturulur. Bu flavour sistemde /usr/jails/flavours/example isimli dizin altında bulunmaktadır. Dizinin tree görüntüsü aşağıdaki gibidir.

[root@jailhost /usr/jails/flavours/example]# tree
.
|-- etc
|   |-- make.conf
|   |-- periodic.conf
|   |-- rc.conf
|-- ezjail.flavour
`-- usr
    `-- local
        `-- etc
            `-- sudoers

Bu flavour dizini default flavour ile oluşturulacak jail sistemlere kopyalanacak dosyaları belirtmektedir. Gördüğünüz gibi make.conf, periodic.conf ve rc.conf dosyaları jail sistemin /etc dizinine kopyalanacaktır. Host sistemden, jaillere kopyalanmasını istediğiniz dosyaları, default flavour dizinin altına aynı hiyearşide olacak şekilde kopyalarsanız, flavour dizinine attığınız bu dosyalar yeni jail oluşturulması sırasında ilgili jail sisteme kopyalanacaktır. (İlgili dosyaları inceleyip kendinize göre düzenleyebilirsiniz. Ancak öntanımlı ayarlarla da gayet yeterlidirler.)

Ben, jail sistemlere kopyalanması üzere host sistemin  /etc dizinindeki localtime ve resolve.conf dosyalarını da muhakka flavour'a atıyorum. (Bu işleme biraz sonra tekrar değineceğim.)

Bunun dışında kök dizininde ezjail.flavour isimli bir de betik dosyası bulunmaktadır. Bu betik dosyasında belli başlı yapılandırma işlemleri bulunmaktadır ve jail'in oluşturulmasından sonra bu betik otomatik olarak çalıştırılarak yapılandırma işlemlerinin gerçekleştirilmesi sağlanır.

Bu betikde, aşağıdaki işlemlerin otomatik olarak yapılması için tanımlamalar bulunmaktadır.
Kullanıcı ve Grup oluşturma,
Dosya/Dizin izinleri
Paket Yüklemeleri

Ancak, kullanıcı/grup ve dosya/dizin işlemleri comment out (#) edilerek devre dışı bırakılmıştır. Dosyayı kendinize göre set edip devreye alırsanız belirlediğiniz işlemler gerçekleştirilecektir. Ayrıca, kendi özel tanımlamalarınızı da bu dosya içerisinde yapabilirsiniz.

ezjail.flavour betiği içinde bizi yakından ilgilendiren aşağıdaki gibi bir bölüm de bulunmaktadır:

# Packages
###########
#
# Install all packages previously put to /pkg
# Remove package files afterwards

[ -d /pkg ] &amp& PACKAGESITE=file:// pkg_add -r /pkg/*
rm -rf /pkg

Gördüğünüz gibi bu bölümde, jail flavour ana dizininde bulunan pkg isimli dizinin içinde bulunan paketlerin hepsinin pkg_add aracı ile sisteme yüklenmesi söylenmektedir. Yani, flavour dizininde bir pkg klasoru oluşturup yüklenmesini istediğiniz paketleri bu dizine atarsanız, jail'in oluşturulması sırasında bu paketler de sisteme yüklenecektir.

İşte bu yazıda, port ağacında bulunan uygulamaların paketlerini “make package” komutu ile oluşturup kendi hazırlayacağımız flavour'un pkg dizinine atacağız ve jail'lere kurulmasını sağlayacağız.

Şimdi kendi default flavour'ımızı oluşturalım.

Özel Flavour Oluşturmak


Özel bir flavour oluşturmanın fazla bir esprisi yok; yapılacak iş -yukarıda da bahsettiğim- default isimli flavour dizininin bir kopyasını almak ve jail sistemlere yüklenmesini istediğiniz dosya ve dizinleri aynı hiyerarşi ile bu kopya flavour'a atmaktan ibaret.

Ben bu yazıda,  genel isimli öntanımlı bir flavour oluşturacağım ve bir iki conf dosyasını bu flavour'a kopyalayacağım. Ayrıca gene aynı flavour icindeki pkg dizinine -bir sonraki bölümde anlatılacağı üzere- yüklenmesi istenen uygulamaların tbz formatındaki paket dosyalarını kopyalayacağım.

Şimdi özel flavour'ı oluşturalım. Önce default isimli flavour'ı genel ismi ile aynı yere kopyalıyoruz.

# cp -pr /usr/jails/flavours/example /usr/jails/flavours/genel

Daha sonra, host sistemin /etc dizini altında bulunan, zaman bilgisinin tutulduğu localtime dosyasını ve dns tanımlarının bulunduğu resolv.conf dosyasını “genel” isimli flavour'ın altındaki etc dizinine kopyalıyorum.

# cp /etc/resolv.conf /etc/localtime /usr/jails/flavours/genel/etc/

(Jail sistemler, çok kısıtlı şekilde yapılandırıldıkları için üzerlerinde localtime ve resolv.conf gibi yapılandırma dosyaları bulunmaz. Bu nedenle internet erişimi için özellikle resolv.conf dosyasını kopyalamanız gerekir.)

Bundan sonra gene “genel” isimli flavour altında pkg isimli bir dizin oluşturuyorum.

# mkdir -p /usr/jails/flavours/genel/pkg

Yukarıda da bahsettiğim gibi bir sonraki aşamada oluşturacağımız uygulama paketlerini pkg isimli bu dizine atıp, ezjail.flavour betiğinin bu paketleri jail sisteme yüklemesini sağlayacağız.

Flavour oluşturuldu, bundan sonra jail sistemlere yüklenecek paketlerin oluşturulma işlemi var.

Jaillere Kurulacak Paketlerin Oluşturulması


Şimdi, genel isimli flavour'ın pkg dizinine kopyalanarak jaillere otomatik olarak kurulması sağlanacak uygulamaların paketleri üretilecek.

Ben Jail'lere default olarak, bash3 kabuğunun yüklenmesini istiyorum, dolayısı ile bash3'e ait tbz paketinin üretilmesini sağlayacağım. Paket üretme işini hosts sistemde değil, bu iş için oluşturulacak build isimli jail sistemde yapıyorum.

Bu yazıda, ezjail ile jail oluşturma ve öncesindeki yapılandırma işlemlerinden detaylı olarak bahsetmeyeceğim. Bu tip konular için  FreeBSD Jail Kurulumu – Güvenli Network Servisleri yazısına bakınız.

Şimdi build isimli jail'i oluşturalım.

# ezjail-admin create -f example build 192.168.12.12

Böylece, default isimli öntanımlı flavours'ı kullanarak 192.168.12.12 ip'li build isminde bir jail oluşturuldu.

Şimdi bu jail'e console bağlantısı sağlayalım.

# ezjail-admin console -f build

Port ağacı kullanılarak oluşturulacak paketlerin konulacağı /var/ports/packages isimli dizini oluşturalım.

# mkdir -p /var/ports/packages

Şimdi port ağacında ilgili dizine gidip, paketlerin oluşturulmasını sağlayalım.

# cd /usr/ports/shells/bash
# make distclean
# make package-recursive

Not: package-recursive komutu aşağıdaki gibi bir hata verebilir. Ancak bu hata çalışma dizinin dolu olduğundan ve ignore edildiğinden dolayı önemsizdir.

Creating bzip'd tar ball in '/var/ports/packages/All/libiconv-1.13.1.tbz'
rmdir: /var/ports/usr/ports/converters/libiconv/work: Directory not empty
*** Error code 1 (ignored)

Bu şekilde, bash3 ve bağımlı uygulamalar için paketler oluşturulur ve /var/ports/packages/All dizinin içine kopyalanır. Dizinin çıktısı şu şekildedir:

# ls -l /var/ports/packages/All/
total 5008
-rw-r--r--  1 root  wheel   570635 Nov 18 11:48 bash3-3.2.50.tbz
-rw-r--r--  1 root  wheel  2560004 Nov 18 11:48 gettext-0.17_1.tbz
-rw-r--r--  1 root  wheel  1490944 Nov 18 11:48 libiconv-1.13.1.tbz
-rw-r--r--  1 root  wheel   410959 Nov 18 11:48 libtool-2.2.6a_1.tbz

Şimdi oluşturulan bu paketleri host sistemde bulunan genel isimli flavours'ın pkg dizinine kopyalayacağız. Jail'den çıktıktan sonra aşağıdaki komutu verelim.

# cp -pr /usr/jails/build/var/ports/packages/All/* /usr/jails/flavours/genel/pkg/

Hepsi bu, artık “ezjail-admin create -f genel jail_ismi ip_adresi” komutuyla yeni bir jail oluşturduğumız zaman bash3 (ve bağımlı paketler) sisteme otomatik olarak yüklenecekler. Siz keyfinize göre ayrı flavours'lar olulşturabilir, jaillere yüklenmesini istediğiniz paketleri aynı şekilde oluşturup pkg dizinine atabilirsiniz.

Daha fazla bilgi için aşağıdaki linkten yararlanabilirsiniz:
http://wiki.freebsd.org/AppserverJailsHOWTO

Visited 193 times, 1 visit(s) today
Kategoriler: *nix |

Bu yazılar da ilginizi çekebilir:


- FreeBSD Jail Sistemlere İkinci IP Eklemek
- FreeBSD – Jail Sistemleri Ramdisk Üzerinde Çalıştırmak
- FreeBSD – pkg_add: File unavailable (file not found, no access)
- FreeBSD Jail Kurulumu – Güvenli Network Servisleri
- SysInfo Script Set’i ile FreeBSD Sistem Bilgileri

Yorumlar


Henuz yorum yapilmamis.

Yorumda bulunun.