下面由centos基礎教程欄目給大家介紹centos7基于luks對磁盤進行加密的方法,希望對需要的朋友有所幫助!
centos7基于luks對磁盤進行加密
LUKS(linux Unified Key Setup)為Linux硬盤加密提供了一種標準,它不僅能通用于不同的Linux發行版本,還支持多用戶/口令。因為它的加密密鑰獨立于口令,所以如果口令失密,我們可以迅速改變口令而無需重新加密真個硬盤。通過提供一個標準的磁盤上的格式,它不僅方便之間分布的兼容性,而且還提供了多個用戶密碼的安全管理。必須首先對加密的卷進行解密,才能掛載其中的文件系統。
工具:cryptsetup(默認已經安裝)
[root@node1?~]#?cryptsetup?--help cryptsetup?1.7.4 用法:?cryptsetup?[選項…]?? ?--version?打印軟件包版本 ?-v,?--verbose?顯示更詳細的錯誤信息 ?--debug?顯示調試信息 ?-c,?--cipher=STRING?用于加密磁盤的密文(參見?/proc/crypto) ?-h,?--hash=STRING?用于從密碼創建加密密鑰的哈希值 ?-y,?--verify-passphrase?兩次詢問密碼以進行驗證 ?-d,?--key-file=STRING?從文件讀取密鑰。 ?--master-key-file=STRING?從文件讀取卷(主)密鑰。 ?--dump-master-key?轉儲卷(主)密鑰而不是鍵槽信息。 ?-s,?--key-size=位?加密密鑰大小 ?-l,?--keyfile-size=字節?限制從密鑰文件讀取 ?--keyfile-offset=字節?要從密鑰文件跳過的字節數 ?--new-keyfile-size=字節?限制從新增密鑰文件的讀取 ?--new-keyfile-offset=字節?要從新增密鑰文件跳過的字節數 ?-S,?--key-slot=INT?新密鑰的槽號(默認為第一個可用的) ?-b,?--size=扇區?設備大小 ?-o,?--offset=扇區?后端設備的起始偏移量 ?-p,?--skip=扇區?從開頭要跳過的加密數據扇區數量 ?-r,?--readonly?創建只讀映射 ?-i,?--iter-time=毫秒?LUKS?默認?PBKDF2?迭代時間(毫秒) ?-q,?--batch-mode?不要請求確認 ?-t,?--timeout=秒?交互式密碼提示符超時長度(秒) ?-T,?--tries=INT?輸入密碼的最大重試頻率 ?--align-payload=扇區?于?<n>?個扇區邊界處對其載荷數據?-?供?luks?格式用 ?--header-backup-file=STRING?帶有?LUKS?數據頭和密鑰槽備份的文件。 ?--use-random?使用?/dev/random?生成卷密鑰。 ?--use-urandom?使用?/dev/urandom?生成卷密鑰。 ?--shared?與另一個不重合的加密段共享設備。 ?--uuid=STRING?設備使用的?UUID?已占用。 ?--allow-discards?允許設備的?discard(或稱?TRIM)請求。 ?--header=STRING?帶有分離?LUKS?數據頭的設備或文件。 ?--test-passphrase?不要激活設備,僅檢查密碼。 ?--tcrypt-hidden?使用隱藏數據頭(隱藏?TCRYPT?設備) ?--tcrypt-system?設備為系統?TCRYPT?驅動器(帶有引導器)。 ?--tcrypt-backup?使用備份(次級)TCRYPT?標頭。 ?--veracrypt?同時掃描?VeraCrypt?兼容的設備。 ?-M,?--type=STRING?設備元數據類型:luks,?純粹?(plain),?loopaes,?tcrypt. ?--force-password?禁用密碼質量檢查?(如果已啟用)。 ?--perf-same_cpu_crypt?使用?dm-crypt?same_cpu_crypt?性能兼容性選項。 ?--perf-submit_from_crypt_cpus?使用?dm-crypt?submit_from_crypt_cpus?性能兼容性選項。 幫助選項: ?-?,?--help?顯示此幫助 ?--usage?顯示簡短用法 ?為其中之一: ?open??[--type?]?[]?-?以映射??打開設備 ?close??-?關閉設備(移除映射) ?resize??-?改變活動設備大小。 ?status??-?顯示設備狀態 ?benchmark?[--cipher?<cipher>]?-?測試密文 ?repair??-?嘗試修復磁盤上的元數據 ?erase??-?清空所有密鑰槽(移除加密密鑰) ?luksFormat??[]?-?格式化一個?LUKS?設備 ?luksAddKey??[]?-?向?LUKS?設備添加密鑰 ?luksRemoveKey??[]?-?移除?LUKS?設備中指定的密鑰或密鑰文件 ?luksChangeKey??[]?-?更改?LUKS?設備中指定的密鑰或密鑰文件 ?luksKillSlot???-?從?LUKS?設備清理標號為?<key>?的密鑰 ?luksUUID??-?輸出?LUKS?設備的?UUID(唯一標識符) ?isLuks??-?從?<device>?探測?LUKS?分區標頭 ?luksDump??-?調出?LUKS?分區信息 ?tcryptDump??-?調出?TCRYPT?設備信息 ?luksSuspend??-?掛起?LUKS?設備并清除密鑰(凍結所有?IO?操作)。 ?luksResume??-?恢復已暫停的?LUKS?設備。 ?luksHeaderBackup??-?備份?LUKS?設備標頭和密鑰槽 ?luksHeaderRestore??-?恢復?LUKS?設備標頭和密鑰槽 你亦可使用老的??語法別名: ?open:?create?(plainOpen),?luksOpen,?loopaesOpen,?tcryptOpen ?close:?remove?(plainClose),?luksClose,?loopaesClose,?tcryptClose <name>?為要在?/dev/mapper?創建的設備 <device>?為加密設備 <key>?為需要更改的?LUKS?密鑰槽 <key>?提供給?luksAddKey?動作的密鑰文件 默認集成的密鑰和密碼參數: ?密鑰文件的最大大小:8192kB,?交互式密碼的最大長度:512?(字符) LUKS?的默認?PBKDF2?迭代時間:2000?(毫秒) 默認集成的設備密文參數: ?loop-AES:aes,?256?位密鑰 ?plain:aes-cbc-essiv:sha256,?密鑰:256?位,?密碼哈希:ripemd160 ?LUKS1:aes-xts-plain64,?密鑰:256?bits,?LUKS?數據頭哈希:sha256,?RNG:/dev/urandom</key></key></device></name></device></key></cipher></n>
1. 環境
- OS:?centos7
- Kernel: 3.10.0-693.el7.x86_64
- tools: cryptsetup.x86_64 0:1.7.4-4.el7
2. 創建加密分區
首先,我們添加一塊硬盤/dev/sdb作為測試用,如下:
[root@node1?~]#?fdisk?-l 磁盤?/dev/sdb:8589?MB,?8589934592?字節,16777216?個扇區 Units?=?扇區?of?1?*?512?=?512?bytes 扇區大小(邏輯/物理):512?字節?/?512?字節 I/O?大小(最小/最佳):512?字節?/?512?字節 磁盤?/dev/sda:8589?MB,?8589934592?字節,16777216?個扇區 Units?=?扇區?of?1?*?512?=?512?bytes 扇區大小(邏輯/物理):512?字節?/?512?字節 I/O?大小(最小/最佳):512?字節?/?512?字節 磁盤標簽類型:dos 磁盤標識符:0x000bfe7f 設備?Boot?Start?End?Blocks?Id?System /dev/sda1?*?2048?2099199?1048576?83?Linux /dev/sda2?2099200?16777215?7339008?8e?Linux?LVM 磁盤?/dev/mapper/centos-root:6652?MB,?6652166144?字節,12992512?個扇區 Units?=?扇區?of?1?*?512?=?512?bytes 扇區大小(邏輯/物理):512?字節?/?512?字節 I/O?大小(最小/最佳):512?字節?/?512?字節 磁盤?/dev/mapper/centos-swap:859?MB,?859832320?字節,1679360?個扇區 Units?=?扇區?of?1?*?512?=?512?bytes 扇區大小(邏輯/物理):512?字節?/?512?字節 I/O?大小(最小/最佳):512?字節?/?512?字節
下來我們格式化加密分區
[root@node1?~]#?cryptsetup?luksFormat?/dev/sdb WARNING! ======== 這將覆蓋?/dev/sdb?上的數據,該動作不可取消。 Are?you?sure??(Type?uppercase?yes):?YES??#?注意這里必須是大寫的YES 輸入密碼: 確認密碼:
5. 利用 key file?加密分區
除了密碼之外,還可以選擇使用 key file 解密你的硬盤,也就是相當于一個密鑰,當然可以也可以只使用 key file 或者同時使用密碼與 key file
5.1 生成隨機 key file
[root@node1?~]#?dd?if=/dev/urandom?of=/root/enc.key?bs=1?count=4096 記錄了4096+0?的讀入 記錄了4096+0?的寫出 4096字節(4.1?kB)已復制,0.00967434?秒,423?kB/秒 [root@node1?~]#?ls anaconda-ks.cfg?enc.key?kubernetes
5.2 添加 key file 作為密碼之一
[root@node1?~]#?cryptsetup?luksAddKey?/dev/sdb?/root/enc.key? 輸入任意已存在的密碼:
6. 移除解密密碼
移除普通密碼
[root@node1?~]#?cryptsetup?luksRemoveKey?/dev/sdb 輸入要移除的密碼:
移除 key file 密碼
[root@node1?~]#?cryptsetup?luksRemoveKey?-d?/root/enc.key?/dev/sdb WARNING! ======== 這是最后一個密鑰槽。設備在清空此密鑰后將不可用。 Are?you?sure??(Type?uppercase?yes):?YES
注意:千萬不要將所有密碼移除,至少需要留有一個密碼訪問設備,移除操作不可撤銷
7.?分區映射與掛載
7.1?分區映射
[root@node1?~]#?cryptsetup?luksOpen?/dev/sdb?data2 輸入?/dev/sdb?的密碼:
7.2 key file分區映射
也可以通過key file做映射
[root@node1?~]#?cryptsetup?luksOpen?-d?/root/enc.key?/dev/sdb?data2
7.3 創建文件系統
在掛載使用之前,我們仍然需要對設備創建文件系統才可以使用,可以選擇任何你喜歡的文件系統,例如 btrfs,ext4,vfat,ntfs等
[root@node1?~]#?mkfs.ext4?/dev/mapper/data2? mke2fs?1.42.9?(28-Dec-2013) 文件系統標簽= OS?type:?Linux 塊大小=4096?(log=2) 分塊大小=4096?(log=2) Stride=0?blocks,?Stripe?width=0?blocks 524288?inodes,?2096640?blocks 104832?blocks?(5.00%)?reserved?for?the?super?user 第一個數據塊=0 Maximum?filesystem?blocks=2147483648 64?block?groups 32768?blocks?per?group,?32768?fragments?per?group 8192?inodes?per?group Superblock?backups?stored?on?blocks:? ?32768,?98304,?163840,?229376,?294912,?819200,?884736,?1605632 Allocating?group?tables:?完成? 正在寫入inode表:?完成? Creating?journal?(32768?blocks):?完成 Writing?superblocks?and?filesystem?accounting?information:?完成
7.4 掛載
現在可以像正常分區一樣掛載我們的加密分區設備了
[root@node1?~]#?mkdir?/data2 [root@node1?~]#?mount?/dev/mapper/data2?/data2 [root@node1?~]#?df?-h 文件系統?容量?已用?可用?已用%?掛載點 /dev/mapper/centos-root?6.2G?1.8G?4.5G?28%?/ devtmpfs?4.4G?0?4.4G?0%?/dev tmpfs?4.4G?0?4.4G?0%?/dev/shm tmpfs?4.4G?8.5M?4.4G?1%?/run tmpfs?4.4G?0?4.4G?0%?/sys/fs/cgroup /dev/sda1?1014M?143M?872M?15%?/boot tmpfs?883M?0?883M?0%?/run/user/0 /dev/mapper/data2?7.8G?36M?7.3G?1%?/data2
7.5 卸載掛載點并關閉加密分區
[root@node1?/]#?umount?/data2 [root@node1?/]#?cryptsetup?luksClose?data2
8. 總結
在完成整個步驟以后,您現在需要做的就是妥善保管您的加密存儲,可采用同樣的方式加密多個設備進行備份,因為誰也不能保證這移動設備會不會在什么時候丟掉。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END