LUKS 是 Linux Unified Key Setup 的縮寫,是 Linux Kernel 上廣泛使用的磁碟加密方法,並且是使用 cryptsetup 套件實現。
cryptsetup 命令行通過從提供的密碼衍生的對稱加密金鑰,在文件系統層次結構中加密卷磁碟、分區和整個磁碟(甚至 USB 隨身碟)時,使用 aes-cbc-essiv:sha256 加密算法。

由於 LUKS 可以加密 Linux 系統上的整個塊設備(硬碟、USB 隨身碟、閃存磁碟、分區、卷組等),因此強烈建議用於保護可移動存儲媒體、筆記本電腦硬碟或 Linux 交換文件,但不建議用於文件級別的加密。
NTFS(新技術文件系統)是 Microsoft 開發的專有文件系統。
Ubuntu 14.04 在 ntfs-3g 套件的幫助下,提供對 LUKS 加密和 NTFS 的完整支持。
為了證明這個教程的觀點,我在 Ubuntu 14.04 主機上添加了一個新的硬碟(第四個),系統對新添加的硬碟的參考名稱為 /dev/sdd,它將被分為兩個分區。
- 一個分區(/dev/sdd1 – 主分區)用於 LUKS 加密。
- 第二個分區(/dev/sdd5 – 擴展分區)使用 NTFS 格式,在 Linux 和 Windows 系統上都可以訪問數據。
此外,這些分區將在 Ubuntu 14.04 上重啟後自動掛載。
步驟 1:創建磁碟分區
1. 在將硬碟實體添加到您的機器後,使用ls指令列出所有的/dev/devices(第四個硬碟是/dev/sdd)。
# ls /dev/sd*

2. 接下來使用fdisk指令檢查您新添加的硬碟。
$ sudo fdisk –l /dev/sdd

因為尚未寫入任何檔案系統,所以該硬碟尚未包含有效的分割表。
3. 接下來使用cfdisk磁碟工具將硬碟分割成兩個分割區。
$ sudo cfdisk /dev/sdd
4. 接下來的畫面會進入cfdisk互動模式。選擇您的硬碟上的Free space,並使用左/右方向鍵導航到New選項。

5. 選擇分割區類型為Primary,然後按下Enter鍵。

6. 在MB中輸入您想要的分割區大小。

7. 在硬碟的Beginning位置創建此分割區。

8. 接著導航到分割區的Type選項並按下Enter鍵。

9. 下一個提示會列出所有檔案系統類型及其編號(十六進制編號)。此分割區將使用Linux LUKS加密,所以選擇83編號並再次按下Enter鍵以創建分割區。

10. 第一部分割區已建立,cfdisk 工具提示返回初始位置。要建立作為NTFS使用的第二分割區,選擇剩下的可用空間,導航至新增選項並按Enter 鍵。

11. 這次分割將是延伸邏輯分割區。因此,導航至邏輯選項,並再次按Enter。

12. 再次輸入您的分割區大小。對於將剩餘的自由空間作為新分割區使用,請保留大小方面的預設值,並只是按Enter。

13. 再次選擇您的分割區类型代碼。對於NTFS檔案系統,請選擇86卷代碼。

14. 在查看和核驗分割區後,選擇寫入,在下一個互動提示問題中回答是,然後按退出以離開cfdisk工具。



恭喜您!您的分割區已成功地建立,現在已準備好進行格式化並使用。
15. 為了再次核驗分区表,發送fdisk命令,這將顯示詳細的分區表資訊。
$ sudo fdisk –l /dev/sdd

步驟 2: 建立分割區檔案系統
NTFS 檔案系統
16. 要在第二分割區建立NTFS檔案系統,請執行mkfs命令。
$ sudo mkfs.ntfs /dev/sdd5

17. 為了使分割區可用,它必須被封裝到檔案系統中的掛载點。使用mount命令將第二分割區掛載到第四個硬盤的/opt挂载點。
$ sudo mount /dev/sdd5 /opt
18. 下一步,使用 cat 命令 檢查是否有一個可用的分割區並列在 /etc/mtab 文件中。
$ cat /etc/mtab

19. 要用以下命令來卸載分割區。
$ sudo umount /opt
EXT4 LUKS
20. 確保您的系統上已經安裝了 cryptsetup 套件。
$ sudo apt-get install cryptsetup [On Debian Based Systems] # yum install cryptsetup [On RedHat Based Systems]
21. 現在是通過发出以下命令來格式化第四台硬盤的第一個分割區為 ext4 文件系統的時候了。
$ sudo luksformat -t ext4 /dev/sdd1
在“您確定嗎?”問題上回答大寫的 YES 並輸入三次您想要的安全短語。

注意:根據您的分割區大小和硬盤速度,文件系統的創建可能需要一些時間。
22. 您也可以驗證分割區設備狀態。
$ sudo cryptsetup luksDump /dev/sdd1

23. LUKS 支持最多 8個密碼加入。要用以下命令來加入密碼。
$ sudo cryptsetup luksAddKey /dev/sdd1

要用來移除密碼的命令。
$ sudo cryptsetup luksRemoveKey /dev/sdd1

24. 为了让这个加密分区成为活动状态,它必须在 /dev/mapper 目录中有一个名称条目(初始化)的帮助下使用 cryptsetup 套件。
这个设置需要以下命令行语法:
$ sudo cryptsetup luksOpen /dev/LUKS_partiton device_name
其中“设备名称”可以是您喜欢的任何描述性名称!(我给它取名为crypted_volume)。实际命令将如下所示。
$ sudo cryptsetup luksOpen /dev/sdd1 crypted_volume

25.然后验证您的设备是否在/dev/mapper目录下列出,包括符号链接和设备状态。
$ ls /dev/mapper $ ls –all /dev/mapper/encrypt_volume

$ sudo cryptsetup –v status encrypt_volume

26.现在,为了使分区设备广泛可用,使用mount命令将其挂载到系统中的挂载点上。
$ sudo mount /dev/mapper/crypted_volume /mnt

可以看到,分区已经挂载并且可以写入数据。
27.要使其不可用,只需从系统中卸载它并关闭设备。
$ sudo umount /mnt $ sudo cryptsetup luksClose crypted_volume

第三步:自动挂载分区
如果您使用的是固定硬盘,并且需要在重新启动后自动挂载两个分区,您必须按照以下两个步骤操作。
28.首先编辑/etc/crypttab文件,并添加以下数据。
$ sudo nano /etc/crypttab
- 目标名称:您设备的描述性名称(参见上面的第22点关于EXT4 LUKS)。
- 源驱动器:为LUKS格式化的硬盘分区(参见上面的第21点关于EXT4 LUKS)。
- 密钥文件:选择none
- 选项:指定luks
最后一行应如下所示。
encrypt_volume /dev/sdd1 none luks

29.然后编辑/etc/fstab,指定设备名称、挂载点、文件系统类型和其他选项。
$ sudo nano /etc/fstab
在最后一行使用以下语法。
/dev/mapper/device_name (or UUID) /mount_point filesystem_type options dump pass
并添加您的具体内容。
/dev/mapper/encrypt_volume /mnt ext4 defaults,errors=remount-ro 0 0

30.要获取设备的UUID,请使用以下命令。
$ sudo blkid

31. 亦然的,你也可以加入之前創建的 NTFS 分區类型,只需在 fstab 文件的新一行使用上述相同的語法。(在這裡使用了 Linux 文件的追加重定向。)
$ sudo su - # echo "/dev/sdd5 /opt ntfs defaults 0 0" >> /etc/fstab

32. 要在 重新启动 你的機器來確認更改,请在“開始配置網絡設備”引导消息後按 Enter,並輸入你的設備 密語。


如你所見,兩個 磁盤分區 都已經自動挂載在 Ubuntu 文件系統結構上。建議你不要在無法訪問重啟序列为提供加密卷密碼的实体遠端服務器上,使用 fstab 文件中自動加密的卷。
這些相同 settings 也可應用於所有類型的可移除媒體,如 USB 手指、閃存記憶體、外置硬盤等,以保護在年被窃聽或盜竊情況下的重要、秘密或敏感數據。
Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/