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 slot> 的金鑰 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 slot> 為需要更改的 LUKS 金鑰槽 <key file> 提供給 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
首先,我們新增一塊硬碟/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 輸入密碼: 確認密碼:
除了密碼之外,還可以選擇使用 key file 解密你的硬碟,也就是相當於一個金鑰,當然可以也可以只使用 key file 或者同時使用密碼與 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
[root@node1 ~]# cryptsetup luksAddKey /dev/sdb /root/enc.key 輸入任意已存在的密碼:
移除普通密碼
[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
注意:千萬不要將所有密碼移除,至少需要留有一個密碼存取裝置,移除操作不可復原
[root@node1 ~]# cryptsetup luksOpen /dev/sdb data2 輸入 /dev/sdb 的密碼:
也可以通過key file做對映
[root@node1 ~]# cryptsetup luksOpen -d /root/enc.key /dev/sdb data2
在掛載使用之前,我們仍然需要對裝置建立檔案系統才可以使用,可以選擇任何你喜歡的檔案系統,例如 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: 完成
現在可以像正常分割區一樣掛載我們的加密分割區裝置了
[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
[root@node1 /]# umount /data2 [root@node1 /]# cryptsetup luksClose data2
在完成整個步驟以後,您現在需要做的就是妥善保管您的加密儲存,可採用同樣的方式加密多個裝置進行備份,因為誰也不能保證這移動裝置會不會在什麼時候丟掉。
以上就是詳解centos7基於luks對磁碟進行加密的詳細內容,更多請關注TW511.COM其它相關文章!