linux加密檔案系統

2021-07-09 12:58:37 字數 4382 閱讀 3763

dm-crypt利用核心的密碼應用程式設計介面來完成密碼操作。一般說來,核心通常將各種加密程式以模組的形式載入。對於256-bit aes來說,其安全強度已經非常之高,即便用來保護絕密級的資料也足夠了。因此本文中我們使用256-bit aes密碼,為了保證您的核心已經載入aes密碼模組,請利用下列命令進行檢查:

$ cat /proc/crypto

如果看到類似下面的輸出的話,說明aes模組已經載入:

name         : aes

module       : aes

type         : cipher

blocksize    : 16

min keysize  : 16

max keysize  : 32

否則,我們可以利用modprobe來手工載入aes模組,命令如下所示:

$ sudo modprobe aes

$ sudo apt-get install dmsetup cryptsetup

為檢查dmsetup軟體包是否已經建立了裝置映象程式,鍵入下列命令:

接下來載入dm-crypt核心模組:

$ sudo modprobe dm-crypt

$ sudo dmsetup targets

如果一切順利,現在你應該看到crypt的下列輸出:

crypt            v1.1.0

striped          v1.0.2

linear           v1.0.1

error            v1.0.1

這說明我們的系統已經為裝載加密裝置做好了準備。下面,我們先來建立乙個加密裝置。

二、建立加密裝置

要建立作為加密裝置裝載的檔案系統,有兩種選擇:一是建立乙個磁碟映像,然後作為回送裝置載入;二是使用物理裝置。無論那種情況,除了在建立和**回送裝置外,其它操作過程都是相似的。

1.建立回送磁碟映象

如果你沒有用來加密的物理裝置(比如儲存棒或另外的磁碟分割槽),作為替換,你可以利用命令dd來建立乙個空磁碟映象,然後將該映象作為回送裝置來裝載,照樣能用。下面我們以例項來加以介紹:

$ dd if=/dev/zero of=~/secret.img bs=1m count=100

這裡我們新建了乙個大小為100 mb的磁碟映象,該映象名字為secret.img。要想改變其大小,可以改變count的值。                

接下來,我們利用losetup命令將該映象和乙個回送裝置聯絡起來:

$ sudo losetup /dev/loop/0 ~/secret.img

現在,我們已經得到了乙個虛擬的塊裝置,其位於/dev/loop/0,並且我們能夠如同使用其它裝置那樣來使用它。

$ sudo cryptsetup -y create myencryptedfilesystem           

/dev/devicename

其中,myencryptedfilesystem 是新建的邏輯卷的名稱。並且最後乙個引數必須是將用作加密卷的塊裝置。所以,如果你要使用前面建立的回送映象作為虛擬塊裝置的話,應當執行以下命令:

$ sudo cryptsetup -y create myencryptedfilesystem  /dev/loop/0

無論是使用物理塊裝置還是虛擬塊裝置,程式都會要你輸入邏輯卷的口令,-y的作用在於要你輸入兩次口令以確保無誤。這一點很重要,因為一旦口令弄錯,你就會把自己的資料鎖住,這時誰也幫不了您了!

為了確認邏輯卷是否已經建立,可以使用下列命令進行檢查一下:

$ sudo dmsetup ls

只要該命令列出了邏輯卷,就說明已經成功建立了邏輯卷。不過根據機器的不同,裝置號可能有所不同:

myencryptedfilesystem  (221, 0)

如同物理裝置一樣,我們也可以在虛擬裝置上建立檔案系統:

現在為新的虛擬塊裝置建立乙個裝載點,然後將其裝載。命令如下所示:

我們能夠利用下面的命令檢視其裝載後的情況:

很好,我們看到裝載的檔案系統,儘管看起來與其它檔案系統無異,但實際上寫到/mnt/myencryptedfilesystem /下的所有資料,在資料寫入之前都是經過透明的加密處理後才寫入磁碟的,因此,從該處讀取的資料都是些密文。

三、解除安裝方法

要解除安裝加密檔案系統,和平常的方法沒什麼兩樣:

$ sudo umount /mnt/myencryptedfilesystem

即便已經解除安裝了塊裝置,在dm-crypt中仍然視為乙個虛擬裝置。如若不信,你可以再次執行命令sudo dmsetup ls來驗證一下,你會看到該裝置依然會被列出。因為dm-crypt快取了口令,所以機器上的其它使用者不需要知道口令就能重新裝載該裝置。為了避免這種情 況發生,你必須在解除安裝裝置後從dm-crypt中顯式的刪除該裝置。命令具體如下所示:

$ sudo cryptsetup remove myencryptedfilesystem

此後,它將徹底清除,要想再次裝載的話,你必須再次輸入口令。為了簡化該過程,我們可以利用乙個簡單的指令碼來完成解除安裝和清除工作:

#!/bin/sh

umount /mnt/myencryptedfilesystem 

cryptsetup remove myencryptedfilesystem

四、重新裝載

在解除安裝加密裝置後,我們很可能還需作為普通使用者來裝載它們。為了簡化該工作,我們需要在/etc/fstab檔案中新增下列內容:

此外,我們也可以通過建立指令碼來替我們完成dm-crypt裝置的建立和卷的裝載工作,方法是用實際裝置的名稱或檔案路徑來替換/dev/devicename:

如果你使用的是回送裝置的話,你還能利用指令碼來**裝置:

如果你收到訊息「ioctl: loop_set_fd: device or resource busy」,這說明回送裝置很可能仍然裝載在系統上。我們可以利用sudo losetup -d /dev/loop/0命令將其刪除。

五、加密主目錄

如果配置了pam(pluggable authentication modules,即可插入式鑑別模組)子系統在您登入時裝載主目錄的話,你甚至還能加密整個主目錄。因為libpam-mount模組允許pam在使用者登 錄時自動裝載任意裝置,所以我們要連同openssl一起來安裝該模組。命令如下所示:

$ sudo apt-get install libpam-mount openssl

auth    optional        pam_mount.so use_first_pass

然後在檔案/etc/pam.d/common-session末尾新增下列一行內容:

session optional        pam_mount.so

現在,我們來設定pam,告訴它需要裝載哪些卷、以及裝載位置。對本例而言,假設使用者名稱是ian,要用到的裝置是/dev/sda1,要新增到/etc/security/pam_mount.conf檔案中的內容如下所示:

volume ian crypt - /dev/sda1 /home/ian cipher=aes aes-256-ecb /home/ian.key

如果想使用磁碟映象,你需要在此規定回送裝置(比如/dev/loop/0),並確保在ian登入之前系統已經執行losetup。為此,你可以將 losetup /dev/loop/0 /home/secret.img放入/etc/rc.local檔案中。因為該卷被加密,所以pam需要金鑰來裝載卷。最後的引數用來告訴pam金鑰在 /home/ian.key檔案中,為此,通過使用openssl來加密你的口令來建立金鑰檔案:

$ sudo sh -c "echo 

'your passphrase

' | openssl aes-256-ecb > 

/home/ian.key"

這時,提示你輸入密碼。注意,這裡的口令必需和想要的使用者登入密碼一致。原因是當你登入時,pam需要你提供這個密碼,用以加密你的金鑰檔案,然後根據包含在金鑰檔案中的口令用dm-crypt裝載你的主目錄。

需要注意的是,這樣做會把你的口令以明文的形式暴露在.history檔案中,所以要及時利用命令history -c清楚你的歷史記錄。此外,要想避免把口令存放在加密的金鑰檔案中的話,可以讓建立加密檔案系統的口令和登入口令完全一致。這樣,在身份認證時,pam 只要把你的密碼傳給dm-crypt就可以了,而不必從金鑰檔案中抽取密碼。為此,你可以在/etc/security/pam_mount.conf文 件中使用下面的命令列:

volume ian crypt - /dev/sda1 /home/ian cipher=aes - -

close_sessions yes

六、小結

資料加密是一種強而有力的安全手段,它能在各種環境下很好的保護資料的機密性。而本文介紹的ubuntu linux 下的加密檔案系統就是一種非常有用的資料加密保護方式,相信它能夠在保護資料機密性相方面對您有所幫助。

Linux檔案系統加密

使用loop modprobe cryptoloop dd if dev zero of partition file0 bs 1k count 1024 losetup e aes dev loop0 partition file0 不必需partion file0,直接使用 dev sd 分割槽...

加密檔案系統

目前對作業系統安全的研究主要集中在邏輯安全領域,及防止未經授權的使用者 程序訪問高特權級別的敏感資料,現有的研究成果包括美國 局主導研發的selinux模組 現已新增到linux核心中 等。但是,這樣的保護對於能夠從物理上接觸到敏感計算機的攻擊者而言是完全無效的。攻擊者可以通過軟盤 光碟或者u盤來引...

加密檔案系統

1,加密檔案轉移到別的物理介質上時,沒有額外的加密 解密開銷。2,支援檔案粒度的加密,也就是說,使用者可以選擇對哪些檔案或目錄加密。而且,應用程式不用關心檔案是否被加密,可以完全透明地訪問加密檔案。3,無需預先保留足夠的空間,使用者可以隨時加密或恢復檔案。4,對單個加密檔案更改金鑰和加密演算法比較容...