<![CDATA[Latest posts for the topic "Mã hóa root file system với FreeBSD geli"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Mã hóa root file system với FreeBSD geli 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 :D) Ư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 :D) 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 :D) 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.]]>
/hvaonline/posts/list/7525.html#43679 /hvaonline/posts/list/7525.html#43679 GMT
Mã hóa root file system với FreeBSD geli /hvaonline/posts/list/7525.html#43777 /hvaonline/posts/list/7525.html#43777 GMT Re: Mã hóa root file system với FreeBSD geli /hvaonline/posts/list/7525.html#43879 /hvaonline/posts/list/7525.html#43879 GMT Mã hóa root file system với FreeBSD geli

pnco wrote:
Bổ sung: Bất kỳ lúc nào bạn cập nhật lại kernel thì bạn cũng phải cập nhật lại cdboot, nếu không bạn sẽ không thể boot vào ổ cứng của mình được nữa. 
Như vậy thì hơi bất tiện một chút :)) hiện tại có cách nào khắc phục điều này lúc nào bạn cập nhật lại kernel thì bạn cũng phải cập nhật lại cdboot hay không vậy bạn . ]]>
/hvaonline/posts/list/7525.html#43887 /hvaonline/posts/list/7525.html#43887 GMT
Mã hóa root file system với FreeBSD geli

pnco wrote:
Ư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 
Bro nói bất tiện chứ theo tớ là... rất bất tiện :D) Bởi vậy mã hóa root file system chỉ nên áp dụng cho máy chủ và máy laptop thôi, nơi mà thường chứa nhiều dữ liệu nhạy cảm :D) và ổn định, ít có sự thay đổi chứ dùng cho desktop thì không hợp lý lắm. Thay vì thế bro chỉ nên mã hóa swap và home partition thôi. Về geli tớ vẫn chưa hiểu rõ cơ chế làm việc của nó nhiều bởi vì tài liệu cho nó quá ít, chỉ có mỗi man page. Nếu bro để ý thì sẽ thấy lúc tạo keyfile geli ghi 1 mớ thông tin metadata lên ổ cứng. Khi biên dịch lại kernel thì geli không thể check được dữ liệu này dẫn đến không thể xác thực. Tớ chỉ test với trường hợp nâng cấp kernel từ 6.1 lên 6.2 thôi, còn không rõ là nếu biên dịch lại 6.1 không thì sao. Nếu vẫn xác thực được thì đơn thuần là do mã nguồn geli thay đổi thôi, còn nếu không thì nó có 1 cơ chế nào đó kiểu checksum làm cho sai lạc. Thân.]]>
/hvaonline/posts/list/7525.html#43981 /hvaonline/posts/list/7525.html#43981 GMT
Mã hóa root file system với FreeBSD geli /hvaonline/posts/list/7525.html#44107 /hvaonline/posts/list/7525.html#44107 GMT Mã hóa root file system với FreeBSD geli /hvaonline/posts/list/7525.html#56536 /hvaonline/posts/list/7525.html#56536 GMT