banner
 .::*nix::. Mã hóa root file system với FreeBSD geli Go to original post Author: pnco - Translator:  - Entry Date: 10/02/2009 09:47:20
Chào các bạn hâm mộ *nix.

Kể từ lúc tôi đọc được bài viết của mrro "Nếu tôi là Huyremy" tại blog bảo mật thông tin, tôi thực sự ngỡ ngàng. Đó là kể từ lúc tôi biết sử dụng máy tính đến nay tôi chưa áp dụng bất kỳ 1 biện pháp nào để bảo vệ dữ liệu của mình. Điều này cũng giống như việc bạn cài đặt 1 phiên bản windows lên máy tính của mình mà không cài thêm cho nó 1 chương trình chống virus. Kết cục là điều dễ thấy. Tuy việc so sánh này có hơi khập khiễng nhưng nó có cùng 1 lý lẽ: Nếu bạn không biết tự bảo vệ mình thì ai khác sẽ làm điều đó đây? Nếu bạn không có biện pháp nào để bảo vệ dữ liệu thì bất kỳ ai cũng có thể đọc được nó. Thật chẳng có ý nghĩa gì khi bạn tạo ra 1 hệ thống được bảo mật chặt chẽ với mật khẩu root dài tới hàng trăm ký tự smilie) thế nhưng bất kỳ ai với 1 livecd đều có thể mount nó lên với quyền root mà không gặp phải 1 sự kháng cự nào. Hãy nghĩ đến viễn cảnh chiếc máy laptop yêu dấu hoặc ổ đĩa usb chứa toàn dữ liệu nhạy cảm mà bạn vô tình đánh rơi ở đâu đó.
Tuy rằng trong bài viết đó mrro có mạnh mẽ khuyên rằng đừng có làm theo smilie) nhưng tôi nghĩ rằng bảo vệ dữ liệu của mình là 1 việc nên làm. Bài viết của mrro có giới thiệu công cụ http://luks.endorphin.org/ dành cho linux. Tuy nhiên tôi đang dùng FreeBSD và tôi tự hỏi không biết hệ điều hành này có công cụ nào tương tự. Thật ngạc nhiên là nó có tới 2 công cụ http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-encrypting.html. Tuy nhiên trong bài này tôi sử dụng geli vì khả năng mã hóa cả root file system. Ưu điểm của việc mã hóa cả root file system là bạn không thể đọc được bất kỳ 1 thông tin nào nếu bạn không cung cấp được 1 keyfile và 1 passphrase.

Cảnh báo quan trọng: Nếu bạn thích thú với tính năng này và có ý định làm theo thì hãy backup tất cả dữ liệu.

Mẹo: Trước khi thực hiện trên máy thật bạn có thể dùng máy ảo smilie)

Ưu điểm thì đã thấy, tuy nhiên cũng nên nói thêm rằng bảo mật và tiện dụng là 2 khái niệm mâu thuẫn nhau. Nếu bạn sử dụng tính năng này thì phải hết sức cẩn thận, nếu bạn làm mất keyfile, hoặc đĩa cứng của bạn gặp vấn đề thì dữ liệu của bạn sẽ ra đi không phải xa mà là... rất xa smilie)

Bây giờ chúng ta bắt đầu thực hiện. Yêu cầu cần có là 1 ổ CDRW, 1 cdrom ftp://ftp.freebsd.org/pub/FreeBSD phiên bản 6.1 hoặc 6.2 và 1 đĩa usb để lưu keyfile, http://www.frenzy.org.ua để tạo đĩa khởi động.

1. Boot máy với đĩa FreeBSD và chọn FixIt -> CD/DVD -> có shell
2. Gõ lệnh sau ở shell:
Code:


#ln -s /dist/boot/kernel /boot/kernel

#ln -s /dist/lib /lib
#geli load


3. Gắn usb disk vào và tạo keyfile:
Code:


#mkdir /mnt/umass

#mount_msdosfs /dev/da0s1 /mnt/umass
#dd if=/dev/random of=/mnt/umass/ad0.key bs=128k count=1
#geli init -b -l 256 -K /mnt/umass/ad0.key /dev/ad0
Enter new passphrase: <-- Nhập vào passphare
Reenter new passphrase: <-- Xác nhận passphare
#geli attach -k /mnt/umass/ad0.key /dev/ad0
Enter new passphrase: <-- Nhập vào passphare


Sau bước này đĩa cứng của bạn đã ở chế độ mã hóa.
4. Phân vùng đĩa cứng và cài hệ điều hành:
Code:


#bsdlabel -w /dev/ad0.eli

#EDITOR=/mnt2/usr/bin/ee; export EDITOR <-- thay đổi text editor sang ee
#bsdlabel -e /dev/ad0.eli


Bạn sẽ nhận được 1 màn hình có dạng như sau:

# /dev/ad0.eli
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 78200413 16 unused 0 0
c: 78200431 0 unused 0 0 # "raw" part, don't edit
 

Tùy theo dung lượng ổ cứng mà bạn có mà điều chỉnh cho hợp lý, ở đây tôi có ổ cứng 40GB. Tôi sẽ điều chỉnh như sau:

# /dev/ad0.eli
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 256M 0 4.2BSD 0 0
b: 934M * swap
c: 78200431 0 unused 0 0 # "raw" part, don't edit
d: 4096M * 4.2BSD 0 0
e: 8192M * 4.2BSD 0 0
f: 512M * 4.2BSD 0 0
g: * * 4.2BSD 0 0
 

5. Format file system:
Code:


#newfs /dev/ad0.elia

#newfs /dev/ad0.elid
#newfs /dev/ad0.elie
#newfs /dev/ad0.elif
#newfs /dev/ad0.elig


6. Mount file system và cài đặt:
Code:


#mkdir /mnt/root; mount /dev/ad0.elia /mnt/root

#cd /mnt/root; mkdir tmp home var usr
#mount /dev/ad0.elid /mnt/root/var
#mount /dev/ad0.elie /mnt/root/usr
#mount /dev/ad0.elif /mnt/root/tmp
#mount /dev/ad0.elig /mnt/root/home
#DESTDIR=/mnt/root; export DESTDIR <-- thay đổi biến môi trường cài đặt
#cd /dist/6.1-RELEASE/base (Nếu dùng phiên bản 6.2 thì đổi là 6.2-RELEASE
#./install.sh
#cd ../kernels
#./install.sh generic (đổi lại là ./install.sh smp nếu bạn may mắn có 1 hệ thống đa xử lý)
#cd ../manpages
#./install.sh
#cd ../ports
#./install.sh
#cd ../src
#./install.sh all
#rmdir /mnt/root/boot/kernel
#mv /mnt/root/boot/GENERIC /mnt/root/boot/kernel (nếu SMP thì đổi lại là mv /mnt/root/boot/SMP /mnt/root/boot/kernel)


7. Tạo fstab:
Code:


#ee /mnt/root/etc/fstab


# Device Mountpoint FStype Options Dump Pass#
/dev/ad0.elib none swap sw 0 0
/dev/ad0.elia / ufs rw 1 1
/dev/ad0.elif /tmp ufs rw 2 2
/dev/ad0.elie /usr ufs rw 2 2
/dev/ad0.elid /var ufs rw 2 2
/dev/ad0.elig /home ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0


8. Tạo đĩa khởi động. Đây là bước khó khăn và quan trọng. Bởi vì ổ đĩa cứng của bạn đã mã hóa hết nên máy tính không thể đọc được bất kỳ 1 thông tin nào, vì vậy bạn phải tạo 1 đĩa khởi động chưa mã hóa, trong đó có chứa keyfile để khởi động vào ổ cứng mã hóa.
Code:


#mkdir /mnt/umass/cdboot

#cp -Rpv /mnt/root/boot /mnt/umass/cdboot
#mkdir /mnt/umass/cdboot/boot/keys
#cp /mnt/umass/ad0.key /mnt/umass/cdboot/boot/keys


Tạo fstab cho cdboot:
Code:


#mkdir /mnt/umass/cdboot/etc

#ee /mnt/umass/cdboot/etc/fstab

# Device Mountpoint FStype Options Dump Pass#
/dev/ad0.elia / ufs rw 1 1


Tạo loader.conf để nạp module geli vào kernel lúc khởi động và cấu hình keyfile:
Code:


#ee /mnt/cdboot/boot/loader.conf


geom_eli_load="YES"
geli_ad0_keyfile0_load="YES"
geli_ad0_keyfile0_type="ad0:geli_keyfile0"
geli_ad0_keyfile0_name="/boot/keys/ad0.key"


Nếu bạn dùng phiên bản 6.1 thì có 1 bug với kdbmux. Bug này làm cho lúc khởi động bạn không thể nhập passpharse. Hãy điều chỉnh như sau:
Code:


#ee /mnt/umass/cdboot/device.hints

...
hint.kdbmux.0.disabled="1"


Kế tiếp chúng ta boot Frenzy và tạo đĩa khởi động:
Code:


#mkdir /mnt/umass

#mount_msdosfs /dev/da0s1 /mnt/umass
#cd /mnt/umass
#mkisofs -R -U -V "Boot Encrypted" -no-emul-boot -b boot/cdboot -o be.iso /mnt/umass/cdboot


Bạn đã tạo được iso boot rồi, hãy burn nó và khởi động. Chúc may mắn smilie)

Tài liệu tham khảo:
http://www.proportion.ch/index.php?page=31
http://events.ccc.de/congress/2005/fahrplan/attachments/586-paper_Complete_Hard_Disk_Encryption.pdf
http://www.bsdforums.org/forums


---------------------------------------
copyright by me, copyleft by you.
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to top Go to original post  

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|