與其它創(chuàng)建加密文件系統(tǒng)的方法相比,dm-crypt系統(tǒng)有著無(wú)可比擬的優(yōu)越性:它的速度更快,易用性更強(qiáng),
如何應(yīng)用dmcrypt構(gòu)建加密文件系統(tǒng)(EFS)
。除此之外,它的適用面也很廣,能夠運(yùn)行在各種塊設(shè)備上,即使這些設(shè)備使用了RAID和LVM也毫無(wú)障礙。dm-crypt系統(tǒng)之所以具有這些優(yōu)點(diǎn),主要得益于該技術(shù)是建立在2.6版本內(nèi)核的device-mapper特性之上的。device-mapper是設(shè)計(jì)用來(lái)為在實(shí)際的塊設(shè)備之上添加虛擬層提供一種通用靈活的方法,以方便開(kāi)發(fā)人員實(shí)現(xiàn)鏡像、快照、級(jí)聯(lián)和加密等處理。此外,dm-crypt使用了內(nèi)核密碼應(yīng)用編程接口實(shí)現(xiàn)了透明的加密,并且兼容cryptloop系統(tǒng)。第一步:內(nèi)核準(zhǔn)備
dm -crypt利用內(nèi)核的密碼應(yīng)用編程接口來(lái)完成密碼操作。一般說(shuō)來(lái),內(nèi)核通常將各種加密程序以模塊的形式加載。對(duì)于AES來(lái)說(shuō),其安全強(qiáng)度已經(jīng)非常之高,即便用來(lái)保護(hù)絕密級(jí)的數(shù)據(jù)也足夠了。為了保證用戶的內(nèi)核已經(jīng)加載AES密碼模塊,請(qǐng)根據(jù)如下命令進(jìn)行檢查:
#cat /proc/crypto
否則,可以使用modprobe來(lái)手工加載AES模塊,命令如下所示:
#modprobe aes
接下來(lái),用戶安裝dmsetup軟件包,該軟件包含有配置device-mapper所需的工具,如下命令所示:
#yum install dmsetup cryptsetup
為檢查dmsetup軟件包是否已經(jīng)建立了設(shè)備映象程序,鍵入下列命令進(jìn)行:
#ls -l /dev/mapper/control
然后,需要使用如下命令加載dm-crypt內(nèi)核模塊:
#modprobe dm-crypt
dm-crypt加載后,它會(huì)用evice-mapper自動(dòng)注冊(cè)。如果再次檢驗(yàn)的話,device-mapper已能識(shí)別dm-crypt,并且把crypt 添加為可用的對(duì)象。執(zhí)行完上述步驟后,用戶應(yīng)該可以根據(jù)如下命令看到crypt的下列輸出:
#dmsetup targets
這說(shuō)明系統(tǒng)已經(jīng)為裝載加密設(shè)備做好了準(zhǔn)備。下面,我們先來(lái)建立一個(gè)加密設(shè)備。
第二步:創(chuàng)建加密設(shè)備
要?jiǎng)?chuàng)建作為加密設(shè)備裝載的文件系統(tǒng),有兩種選擇:一是建立一個(gè)磁盤映像,然后作為回送設(shè)備加載;二是使用物理設(shè)備。無(wú)論那種情況,除了在建立和捆綁回送設(shè)備外,其它操作過(guò)程都是相似的。
建立回送磁盤映象
如果用戶沒(méi)有用來(lái)加密的物理設(shè)備(比如存儲(chǔ)棒或另外的磁盤分區(qū)),作為替換,你可以利用命令dd來(lái)建立一個(gè)空磁盤映象,然后將該映象作為回送設(shè)備來(lái)裝載,照樣能用。下面我們以實(shí)例來(lái)加以介紹:
#dd if=/dev/zero f=/virtual.img bs=1M count=100
這里我們新建了一個(gè)大小為100 MB的磁盤映象,該映象名字為virtual.img。要想改變其大小,可以改變count的值。
接下來(lái),我們利用losetup命令將該映象和一個(gè)回送設(shè)備聯(lián)系起來(lái):
#losetup /dev/loop0 /virtual.img
現(xiàn)在,我們已經(jīng)得到了一個(gè)虛擬的塊設(shè)備,其位于/dev/loop0,并且我們能夠如同使用其它設(shè)備那樣來(lái)使用它,
電腦資料
《如何應(yīng)用dmcrypt構(gòu)建加密文件系統(tǒng)(EFS)》(http://www.lotusphilosophies.com)。設(shè)置塊設(shè)備
準(zhǔn)備好了物理塊設(shè)備(例如/dev/hda1),或者是虛擬塊設(shè)備(像前面那樣建立了回送映象,并利用device-mapper將其作為加密的邏輯卷加載),我們就可以進(jìn)行塊設(shè)備配置了。
下面我們使用cryptsetup來(lái)建立邏輯卷,并將其與塊設(shè)備捆綁:
#cryptsetup -y create ly_EFS device_name
其中,ly_EFS是新建的邏輯卷的名稱。并且最后一個(gè)參數(shù)device_name必須是將用作加密卷的塊設(shè)備。所以,如果要使用前面建立的回送映象作為虛擬塊設(shè)備的話,應(yīng)當(dāng)運(yùn)行以下命令:
#cryptsetup -y create ly_EFS /dev/loop0
無(wú)論是使用物理塊設(shè)備還是虛擬塊設(shè)備,程序都會(huì)要求輸入邏輯卷的口令,-y的作用在于要你輸入兩次口令以確保無(wú)誤。這一點(diǎn)很重要,因?yàn)橐坏┛诹钆e(cuò),就會(huì)把自己的數(shù)據(jù)鎖住, 為了確認(rèn)邏輯卷是否已經(jīng)建立,可以使用下列命令進(jìn)行檢查一下: www.2cto.com
#dmsetup ls
只要該命令列出了邏輯卷,就說(shuō)明已經(jīng)成功建立了邏輯卷。不過(guò)根據(jù)機(jī)器的不同,設(shè)備號(hào)可能有所不同。device-mapper會(huì)把它的虛擬設(shè)備裝載到/dev/mapper下面,所以,你的虛擬塊設(shè)備應(yīng)該是/dev/mapper/ly_EFS ,盡管用起來(lái)它和其它塊設(shè)備沒(méi)什么不同,實(shí)際上它卻是經(jīng)過(guò)透明加密的。
如同物理設(shè)備一樣,用戶也可以在虛擬設(shè)備上創(chuàng)建文件系統(tǒng):
#mkfs.ext3 /dev/mapper/ly_EFS
現(xiàn)在為新的虛擬塊設(shè)備建立一個(gè)裝載點(diǎn),然后將其裝載。命令如下所示:
#mkdir /mnt/ly_EFS
#mount /dev/mapper/ly_EFS /mnt/ly_EFS
用戶能夠利用下面的命令查看其裝載后的情況:
#df -h /mnt/ly_EFS
通過(guò)上述的步驟后,用戶看到裝載的文件系統(tǒng),盡管看起來(lái)與其它文件系統(tǒng)無(wú)異,但實(shí)際上寫(xiě)到/mnt/ly_EFS/下的所有數(shù)據(jù),在數(shù)據(jù)寫(xiě)入之前都是經(jīng)過(guò)透明的加密處理后才寫(xiě)入磁盤的,因此,從該處讀取的數(shù)據(jù)都是些密文。
卸載加密設(shè)備
要卸載加密文件系統(tǒng),和平常的方法沒(méi)什么兩樣:
#umount /mnt/ly_EFS
即便已經(jīng)卸載了塊設(shè)備,在dm-crypt中仍然視為一個(gè)虛擬設(shè)備。如若不信,用戶可以再次運(yùn)行命令dmsetup ls來(lái)驗(yàn)證一下,將會(huì)看到該設(shè)備依然會(huì)被列出。因?yàn)閐m-crypt緩存了口令,所以機(jī)器上的其它用戶不需要知道口令就能重新裝載該設(shè)備。為了避免這種情況發(fā)生,用戶必須在卸載設(shè)備后從dm-crypt中顯式的刪除該設(shè)備。命令具體如下所示:
#cryptsetup remove ly_EFS
此后,它將徹底清除,要想再次裝載的話,用戶必須再次輸入口令。
重新裝載加密設(shè)備
在卸載加密設(shè)備后,用戶很可能還需作為普通用戶來(lái)裝載它們。為了簡(jiǎn)化該工作,需要在/etc/fstab文件中添加下列內(nèi)容:
/dev/mapper/ly_EFS /mnt/ly_EFS ext3 noauto,noatime 0 0
此外,用戶也可以通過(guò)建立腳本來(lái)替我們完成dm-crypt設(shè)備的創(chuàng)建和卷的裝載工作,方法是用實(shí)際設(shè)備的名稱或文件路徑來(lái)替 換/dev/DEVICENAME: