1. 程式人生 > >用luks方式對磁碟進行加密以及加密磁碟的自動掛載

用luks方式對磁碟進行加密以及加密磁碟的自動掛載

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  # 這是正確的命令