用luks方式對磁碟進行加密以及加密磁碟的自動掛載
阿新 • • 發佈:2018-12-20
1.關於luks加密
LUKS(Linux Unified Key Setup)為Linux硬碟分割槽加密提供了一種標準,它不僅能通用於不同的
Linux發行版本,還支援多使用者/口令。因為它的加密金鑰獨立於口令,所以如果口令失密,我們可以
迅速改變口令而無需重新加密整個硬碟。通過提供一個標準的磁碟上的格式,它不僅方便之間分佈的
相容性,而且還提供了多個使用者密碼的安全管理。必須首先對加密的捲進行解密,才能掛載其中的檔案
系統。
檔案系統在加密層之上,當加密層被破壞掉之後,磁盤裡的內容就看不到,因為沒有裝置對
他解密
crypsetup工具加密的特點: (1)加密後不能直接掛載 (2)加密後硬碟丟失也不用擔心資料被盜 (3)加密後必須做對映才能掛載
2.磁碟加密
cryptsetup luksFormat /dev/vdb1 # 將分割槽進行LUKS格式加密(變成LUKS分割槽)
cryptsetup open 裝置名 # 開啟,也就是解密,裝置名任意,此處的裝置為虛擬裝置
cryspsetup close 裝置名 # 關閉解密,也就是恢復加密狀態
[[email protected] ~]# cryptsetup luksFormat /dev/vdb5 # 將分割槽進行LUKS格式加密(變成LUKS分割槽)
[[email protected] ~]# cryptsetup open /dev/vdb5 lala # 開啟,也就是解密,lala為虛擬裝置
Enter passphrase for /dev/vdb5:
[ [email protected] ~]# ll /dev/mapper/ # 當解密成功時,會發現在這個目錄下生成虛擬裝置
[[email protected] ~]# mkfs.xfs /dev/mapper/lala # 格式化虛擬裝置
[[email protected] ~]# mount /dev/mapper/lala /mnt # 掛載虛擬裝置就可以使用了
[[email protected] ~]# df
[[email protected] ~]# touch /mnt/file{1..10} # 因為裝置是解密狀態,所以可以新建檔案
[ [email protected] ~]# ls /mnt # 也可以檢視內容
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
[[email protected] ~]# umount /mnt
[[email protected] ~]# cryptsetup close lala # 關掉解密狀態,也就是恢復加密狀態
[[email protected] ~]# ll /dev/mapper/ # 檢視到虛擬裝置消失
total 0
crw------- 1 root root 10, 236 Nov 9 19:53 control
[[email protected] ~]# mount /dev/mapper/lala /mnt # 想要重新掛載虛擬裝置,發現掛載失敗,虛擬裝置是臨時的,當關閉虛擬裝置時,他就失效了
mount: special device /dev/mapper/lala does not exist
[[email protected] ~]# cryptsetup open /dev/vdb5 haha # 我們重新解密,生成虛擬裝置
Enter passphrase for /dev/vdb5:
注:此處的密碼是第一次加密時設定的密碼
[[email protected] ~]# mount /dev/mapper/haha /mnt # 掛載成功
[[email protected] ~]# ls /mnt # 重新檢視到內容
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
3.加密裝置的開機掛載
[[email protected] ~]# vim /etc/fstab # 設定自動掛載
10 /dev/mapper/disk /mnt xfs defaults 0 0
[[email protected] ~]# vim /etc/crypttab # 編輯自動生成虛擬裝置檔案
1 disk /dev/vdb5 /root/vdb5pass
[[email protected] ~]# vim /root/vdb5pass # 編輯密碼檔案 ,此處的密碼不是隨意的,而是磁碟加密設定的密碼
1 [email protected]
[[email protected] ~]# chmod 600 /root/vdb5pass # 修改密碼檔案的許可權
[[email protected] ~]# cryptsetup luksAddKey /dev/vdb5 /root/vdb5pass # 把密碼新增到luks加密中,即讓密碼檔案生效
Enter any passphrase: # 必須通過認證才能新增成功
[[email protected] ~]# reboot
[[email protected] ~]# df # 檢視到自動掛載
4. 取消自動加密掛載
[[email protected] ~]# rm -fr /root/vdb5pass # 刪除密碼檔案
[[email protected] ~]# vim /etc/fstab # 刪除對/dev/vdb5的永久掛載設定
[[email protected] ~]# vim /etc/crypttab # 刪除檔案內容
[[email protected] ~]# umount /mnt/ # 解除掛載
[[email protected] ~]# cryptsetup close disk # 關閉解密
[[email protected] ~]# mkfs.xfs /dev/vdb5 -f # 強制格式化操作
[[email protected] ~]# mount /dev/vdb5 /mnt # 再次掛載,發現是一般的掛載,沒有加密
5.關於加密過程中出現的問題,以及解決方案
(1)加密失敗
[[email protected] ~]# cryptsetup luksFormat /dev/vdb5 # 當我想要給/dev/vdb5加密時,發現加密失敗
[[email protected] ~]# df # 結果發現/dev/vdb5掛載在/mnt下,也就是裝置佔用著
[[email protected] ~]# umount /dev/vdb5 # 解除安裝掉就好了
(2)解密時,發現報錯
[[email protected] ~]# cryptsetup open /dev/vdb5 haha # 當我想要解密時,發現報錯,
Enter passphrase for /dev/vdb5:
Cannot use device /dev/vdb5 which is in use (already mapped or mounted).
[[email protected] ~]# mount -a # 檢測是否裝置處於掛載狀態
[[email protected] ~]# dmsetup ls # 顯示當前的device mapper的資訊
lala (252:0)
[[email protected] ~]# dmsetup remove lala # 刪除lala裝置
[[email protected] ~]# dmsetup status # 再次顯示當前的device mapper的資訊,此時解密就不會報錯了
No devices found
(3)命令執行不了,注意此處命令的大小寫
[[email protected] ~]# cryptsetup luksAddkey /dev/vdb5 /root/vdb5pass # 出現這種情況一定是命令寫錯了
[[email protected] ~]# cryptsetup luksAddKey /dev/vdb5 /root/vdb5pass # 這是正確的命令