Gentoo Altinda Bir Partitionu Sifreleme
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
Eğer Harddiskinizde önemli bilgiler saklıyorsanız, sanırım bu belge çok işinize yarayacak. Bu belgede dm-crypt'nin nasıl çalıştığına değineceğiz.
Giriş
Her işin başında veri kaybına uğramamak gelir. Bu yüzden, Linux altında yeni birşeyler yapmadan önce, önemli dosyalarımızın yedeğini almayı unutmıyoruz. Çünkü şifreleyeceğimiz partitonun biçimlendirilmesi (format) gerekecek.
Tabi başlamadan şunuda belirtmem gerekir: Yaptıklarınızdan veya zararlarınızdan siz sorumlusunuz. Belgede görmediğim bir hata ile veya almadığınız yedekler yüzünden beni ilerde suçlamayın. Bu belgede size adım adım neler yapılması gerektiğini ve benim kendimin neler yaptığımı anlatacağım.
Gerekli Olanlar
- device mapper support
- crypt target support
- cipher algorithms (örn.:aes)
- cryptsetup
- gpg (gnu privacy guard)
- sharutils (uuencode için gerekli)
Kernel'den Ayarlanması Gerekenler
device mapper ve crypt target:
Kernel 2.6x serisinde device mapper support ve crypt target support desteğini aşağıdaki şekilde açabilirniz:
[*] Multiple devices driver support (RAID and LVM) <*> Device mapper support <*> Crypt target support
aes cipher algorithms
Kernel 2.6x serisinde cryptoghraphic options altından eas desteğini açabilirsiniz.
<*> AES cipher algorithms (i586)
Tabi isterseniz modul (M) olarak da ayarlama yapabilirsiniz. Fakat bir partitionun her boot edilişinde bu modula gereksinimiz olacağı için kernel içine gömülü olması size avantaj sağlayacaktır. Eğer Modul olarak kullanmak istiyorsanız, gerekli ayarlamalarınızı ona göre yapmanız ve modulun boot esnasında yüklenmesini sağlamanız gereklidir.
Kernel ayarlarınızı yaptıktan sonra yeni kerneliniz ile sisteminizi boot ettirin ve okumaya devam edin.
Gerekli Olan Uygulamalar
cryptsetup-lux
cryptsetup-lux ile çalışmadan önce, programı emerge etmeniz gerekli:
emerge sys-fs/cryptsetup-lux
gpg (gnu privacy guard)
gpg kurulu değilse aşağıdaki şekilde kurabilirsiniz:
emerge app-crypt/gnupg
sharutils
shareutils büyük bir ihtimal ile kurulu değildir. Kurmak için aşağıdaki komutu verin:
emerge app-arch/sharutils
Partitionu Yedeklemek
İlk baştada söylediğim gibi, şifrelenecek olan partition yeniden biçimlendireleceği için, önemli dosyaların yedeğini almayı unutmayın.
Örnek
Mesela bende /dev/hda5 dosyası /mnt/dump içine bağlanmış (mount) durumda. İlerde /mnt/dump dosyasını şifreleyeceğiz. Bu yüzden bu dizini yedeklemem benim için yeterli olacak. Bu işlem için tar kullanıyorum:
tar -cjvpf /mnt/backup/dump.tbz2 /mnt/dump
Partiton içindeki dosya sayısına göre yedekleme işlemi uzun sürebilir.
crypto-Partition Hazırlıkları
Anahtar (Key) oluşturma
head -c 1000 < /dev/urandom | uuencode -m - | grep -v begin | head -c 32 >NAME.key
Yukardaki komuttaki NAME yazan yere kendiniz bir isim vermeniz gerekli. 'NAME' yazan yer anahtara aktarılır. Buradaki anahtar dosyası, partitionu açacak olan kapının anahtarı olarak düşünülebilir. Tabi bunun için gerekli olan şifreyi bilmeniz gerekli.
Anahtarı (key) şifreleme
Şimdi oluşturduğumuz anahtarı GPG ile şifrelemeniz gerek.
gpg -c NAME.key
Yukardaki komutunu girdikten sonra, sizden 2 defa şifre girmenizi isteyecektir:
# gpg -c NAME.key Enter passphrase: Repeat passphrase:
Bu işlem bittikten sonra NAME.key.gpg adında yeni bir dosya oluşacaktır.
Sizden şifre isterken lütfen doğum tarihiniz, annenizin ismi gibi basit isimleri kullanmayın. Aklınızda tutabileceğiniz, büyük küçük harflerden , rakamlardan oluşan ve en az 8 karakter olan bir şifre tanımlayın. Aksi taktirde bu işin esprisi kaçar ve şifreniz kolayca kırılır.
Anahtarı (key) silme
Artık oluşturduğumuz anahtarı silebiliriz (NAME.key.gpg hariç)
shred NAME.key rm NAME.key
'device mapper' ayarları
Şimdi aygıtımızı 'device mapper' a ekleyeceğiz. Bunun için verilecek komut şöyle:
gpg --quiet -d $NAME.key.gpg | cryptsetup -h plain create $MAPPERNAME /dev/hdXX
- $NAME.key.gpg
- Şifreleme anahtarımız
- $MAPPERNAME
- Partitionun ismi
- hdXX
- Şifrelenecek harddisk'in bölümü
Yani benim verdiğim komut şöyle:
# gpg --quiet -d NAME.key.gpg | cryptsetup -h plain create SIFRELI_BOLUM /dev/hda2 Enter passphrase: (Şifrenizi gireceksiz)
Partitionun büyüklüğüne göre bu işlem uzun sürebilir. Benim ayırdığım bölüm 10GB ve ortalama 1.5dk kadar bekleme yaşadım.
mapperdevice biçimlendirmek (format)
Şimdi burayı biçimlendiriyoruz. Vermemiz gereken komut:
mke2fs -j /dev/mapper/$MAPPERNAME
Yani, yukardaki örneği takip edersek, ben aşağıdaki komutu veriyorum
mke2fs -j /dev/mapper/SIFRELI_BOLUM
Bu işlemden sonra kontrol için şunu verin:
# ls -l /dev/mapper/ total 0 brw------- 1 root root 252, 0 Dec 4 14:34 SIFRELI_BOLUM crw-rw---- 1 root root 10, 62 Dec 4 10:03 control
Gördüğünüz gibi block aygıtımız SIFRELI_BOLUM oluştu.
'mapperdevices' bağlamak (mount)
Artık şifreli bölümümüzü bağlayabiliriz (mount). Fakat bağladığımız yer gerçek partiton değil, aksine 'MAPPER DEVICE' dosyamız. Bunun için ilk önce kendimi bir bağlanma noktası oluşturalım ve bunun içinde aşağıdaki komutları sırasıyla verelim:
# mkdir /mnt/SIFRELI_BOLUM # mount -t ext3 -o users,rw /dev/mapper/SIFRELI_BOLUM /mnt/SIFRELI_BOLUM
Ok, son adıma doğru yaklaşıyoruz. Şimdi artık /mnt/SIFRELI_BOLUM dizini altına kaydedilecek her dosya şifrelenerek kaydedilir. Yani bu dizin altında kaydedeceğiniz her dosya şifrelenir.
Fakat burda ufak bir sorun var: Her reboot işleminden sonra MAPPER DEVICE bölümü silinebilir ve yeniden oluşturmanız gerekebilir. Bunun için aşağıdaki ipucunu okuyun ve uygulayın.
İlave Araçlar ve İpuçları
Crypto-Mount
Yukarda da belirttiğim gibi, mapperdevices dosyası her reboot dan sonra kaybolur ve yeniden mount edilmesi gerekir. Tabi her mount edilişte yukardaki komutları aklımızda tutmak ve şifre vermek biraz uzun gelebilir. Bu işi basit bir betik ile halledebiliriz. Bu sayede daha hızlı bir çalışma ortamı yapmış oluruz.
İlk önce GPG anahtarımızı herkesin erişemeyeceği bir dizin altına koyalım. Mesela anahtar dosyamızı /root/gizli/NAME.key.pgp şeklinde kaydedebiliriz. Zaten root dizinine root kullanıcısından başka kimse bakamayacağı için, sanırım en güvenli yer root dizini olacaktır:
Betiğimizin isminiz kafamıza göre koyabilirsiniz. Ben sifreli_bagla.sh olarak koydum:
#!/bin/bash # # Dosya ismi: sifreli_bagla.sh # # Betik, şifrelediğimiz bölümü mount eder. # Betiği /sbin/sifreli_baglan.sh olarak kaydedin ve # chmod 7000 /sbin/sifreli_baglan.sh # komutu ile sadece root tarafından çalıştırılması için gerekli hakları verin. # # Kullanımı: /sbin/sifreli_baglan.sh # echo -e "Şimdi şifreli bölümü mount ediyorum..." gpg --quiet -d /root/gizli/NAME.key.gpg | cryptsetup -h plain create SIFRELI_BOLUM /dev/hda2 mount -t ext3 -o user /dev/mapper/SIFRELI_BOLUM /mnt/SIFRELI_BOLUM
Artık şifreli bölümü bağlamak (mount) için sadece yukardaki betiği çalıştırmanız yeterli olacak...
Şifreli bölümü ayırmak için bildiğimiz umount komutu kullanabilirsiniz:
umount /mnt/SIFRELI_BOLUM
Init-script
Eğer isterseniz ufak birde INIT-SKRIPT yazabilirsiniz. Birlikte yazalım. Bize gerekli olan sadece START ve STOP fonksiyonları. Başka birşeye normal olarak gerek yok. INIT-SKRIPT'mizin isminide kafamıza göre koyabiliriz. Mesela sifreli olsun.
Aşağıdaki init skripti sadece Gentoo içindir. Kullandığınız diğer Linux sistemlerinde uyum sağlamayabilir. Fakat teori olarak aynıdır.
#!/sbin/runscript
#
depend() {
need modules
after coldplug
}
#
start() {
ebegin "Mounting encrypted HDD"
/sbin/sifreli_baglan.sh
eend $?
}
#
stop() {
ebegin "Unmounting encrypted HDD"
/bin/umount /mnt/SIFRELI_BOLUM
eend $?
}
INIT SKRIPTI'mizi tamamladıktan sonra /etc/init.d/sifreli olarak kaydedin ve gerekli çalıştırma iznini verin (chmod 700 /etc/init.d/sifreli). Şimdi çalıştırabiliriz:
# /etc/init.d/sifreli start * Starting service sifreli Şimdi şifreli bölümü mount ediyorum... (burda sizden şifrenizi ister) * Service sifreli started OK
Durdurmak için, yani umount etmek için ise,
# /etc/init.d/sifreli stop * Stopping service sifreli * Stopped service sifreli
komutunu vermemiz yeterli....
Performans
İnsanların performansa bakış açıları değişik olabilir. Bu yüzden kendiniz test edin ve performansı görün. Fakat benim kullandığım İntell 1600 CPU da oldukca iyi. Uzun dosyalarda ve mesela Film dosyalarının şifrelenrek kopyalanması biraz uzun sürebilir. Bunun haricinde kısa dosyaların kopyalanması oldukca hızlı. Herhangi bir performans düşüşü hissetmiyorum.
Son Olarak
Bu belgede anlatıların çoğunu Gentoo forumda anlatılanlardan uygulayarak yaptım. Bu yüzden detaylı bilgiyi belki Harici bağlantılar bölümündeki Gentoo Forum bağlantılarından okuyabilirsiniz.
Yukarda anlatılanların hepsi başarılı bir şekilde benim tarafımdan şahsen denenmiş ve test edilmiştir. Yeterli kaynakları okumadan ve yedeklemeyi yapmadan sakın bunları uygulamayın. Aksi taktirde sisteminize veya dosyalarınıza zarar verebilirsiniz.
Bağlantılar
Dahili Bağlantılar
Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı
Harici Bağlantılar
| Kullanıcı:Erkan |


