Gentoo Altinda Bir Partitionu Sifreleme

From Lapis Wiki

Jump to: navigation, search
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım 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.

Konu başlıkları

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.

Resim:Dikkat.png

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.

Resim:Dikkat.png

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.

Resim:Dikkat.png

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

Gentoo Forum



Kullanıcı:Erkan