FreeBSD: ZFS diski GELI ile şifreleme
Solaris’in efsane ZFS sistemi artık açık kaynağa kapalı , son versiyonu olan ZFSv28 ile kullanılmaya devam edilebilinecek ancak yeni çıkan özellikleri kullanılamayacak ve FreeBSD için artık yeni port yaratılmayacak. ZFS’in son sürümü olan v34’e kadar bir çok yeni özellikler eklendi :
- RAID-Z/mirror hybrid allocator - ZFS encryption - Improved 'zfs list' performance - One MB block support - Improved share support - Sharing with inheritance
Bunlardan biri de ZFSv30 sürümü ile birlikte gelen “ZFS encryption” oldu. Şu anda Solaris'te kullanılabilir halde olan disk şifreleme özelliği diğer ZFS özellikleri gibi kullanımı çok kolay ve faydalı bir özellik.
Herhangi bir zpool yaratırken sadece “ encryption=on “ özelliğini de diğer özelliklerle birlikte komut satırına ekleyerek kullanabiliyorsunuz. Kısaca örnek vermek gerekirse;
zfs create -o encryption=on rpool/export/project
Detaylı bilgi için;
www.oracle.com/technetwork/articles/servers-storage-admin/manage-zfs-encryption-1715034.html
Diğer yandan ZFS kullanan FreeBSD kullanıcıları disk şifrelemek istediklerinde encryption özelliğinden yararlanamasa da hala Geli ile şifreleme işlemlerini gerçekleştirebilecekler. FreeBSD için disk şifreleme işlemi gbde ve geli ile yapılabilmektedir detaylı bilgi için :
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-encrypting.html
GELI ile disk şifreleme
ZFS disk şifreleme yapısını bilen ve bir diski zfs yapısında olan makinalar için küçük bir örnek yapacağım.
Ilk yapmamız gereken şifreyi nerede oluşturacaksak bir klasör yapısı oluşturuyoruz. Ben kısaca /root/keys altında depoluyor olacağım bunun içinde ;
mkdir /root/keys
şimdi bir anahtar oluşturalım;
dd if=/dev/random of=/root/keys/boot.key bs=128k count=1
ve geli ile şifreleyelim;
geli init -b -K /root/keys/boot.key -s 4096 -l 256 /dev/ad0s1e Enter new passphrase: Reenter new passphrase: Metadata backup can be found in /var/backups/ad0s1e.eli and can be restored with the following command: # geli restore /var/backups/ad0s1e.eli /dev/ad0s1e
Buraya kadar yaptığımız işlemlerde bir şifre oluşturup /dev/ad0s1e adındaki diskimizi buna göre şifreledik.
Şimdi geli ile anahtarımızı diski attach ediyoruz ve sonrasında klasik olarak ZFS create işlemini yapacağız.
geli attach -k /root/keys/boot.key /dev/ad0s1e zpool create tank /dev/ad0s1e.eli
aslında tüm işlemler bu kadar kolay bir şekilde diski şifreledik ve sistemimize şifresini açarak ekledik, ancak açılışta başlaması gereken bazı ayarlar var ve bunları /boot/loader.conf'a ekleyerek açılışın sorunsuz olmasını sağlayacağız.
geom_label_load="YES" geom_mirror_load="YES" geom_uzip_load="YES" kern.geom.eli.visible_passphrase="1" vfs.zfs.txg.timeout="5"
artık makinanınız yeniden başlatarak şifreli diskinizi test edebilirsiniz ancak işlemler doğru oldu mu diye şifreli diskinizin içine birkaç örnek dosya ve klasör oluşturmanızı tavsiye ederim.
Reboottan Sonra
Makinayı yeniden başlattıktan sonra diskin durumuna bir bakın “df -h”. Zfs gözükmeyecektir çünkü disk geli tarafından şifreli ve attach edilmedi. Yapılması gereken önce diskin şifresini çözmektir, bunun için ;
geli attach -k /root/keys/boot.key /dev/ad0s1e
komutu diskimize yine anahtarımızı eklememiz sağlayacaktır ve bu süreçte şifre soracaktır yanlış girdiğiniz taktirde uyarı mesajı alacaksınız, gdbe ile şifreleme yapmış olsaydınız uyarı almadığınız gibi makinayı yeniden başlatmadan denediğiniz attachlerde sorun yaşayacaktınız.
geli attach -k /root/keys/boot.key /dev/ad0s1e Enter passphrase: geli: Wrong key for ad0s1e.
Sonrasında şifresi çözülmüş ZFS için tek yapmak gereken mount etmektir.
zfs mount -a
tekrar “df -h“ çıktısını kontrol edin ve ZFS in geldiğini görün artık kullanabilirsiniz.
Ek olarak açılışta şifreyi sorsun ve bilinmediği sürece de geçilmesin isteniyorsa
/etc/rc.conf 'a şu satırlar eklenmelidir;
geli_devices="ad0s1e" geli_ad0s1e_flags="-k /root/keys/boot.key"
eğer açılışta şifreyi soruyor da ben bu şifreyi sorsun istemiyorum diyorsanız -p parametresi size yardımcı olacaktır;
geli_devices="ad0s1e" geli_ad0s1e_flags="-p -k /root/keys/boot.key"
Bash: Xml Parser FreeBSD: Single User mode vi , rm not found || read-only file system
[…] FreeBSD’de daha önce bahsettiğim GELI ile ZFS diski şifreleme işlemlerimde bir key dosyası kullanmıştım (bkn) […]