如何在Linux上创建加密磁盘分区如何在Linux上创建加密磁盘分区如何在Linux上创建加密磁盘分区如何在Linux上创建加密磁盘分区
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在Linux上创建加密磁盘分区

假设您有一个可用于 Linux 系统的便携式 USB 驱动器。如果您注重安全,您可能需要加密您的 USB 驱动器,以便其他人无法篡改您 USB 驱动器中的内容。有许多选项可以通过加密来保护驱动器。例如,您可以使用 eCryptFS 加密特定文件或目录。您还可以转向全盘加密。特别是,您可以使用 dm-crypt 和 LUKS,它们共同提供基于设备映射器子系统的块设备的透明加密。

在本教程中,我将介绍如何在Linux上设置使用dm-crypt+LUKS加密的磁盘分区。

在 Linux 上安装 dm-crypt

要在 Linux 上使用 dm-crypt+LUKS 加密分区,请安装以下软件。

在 Ubuntu、Mint 或 Debian 上:


$ sudo apt-get install cryptsetup

在 CentOS、Fedora 或 RHEL 上:


$ sudo yum install cryptsetup

创建加密分区

使用fdisk,创建一个新分区进行加密,如下所示。在此示例中,我假设 /dev/sdb 映射到您的硬盘驱动器以进行加密。

与 LUKS 一起使用的新创建的分区被映射到 /dev/sdb1。使用cryptsetup命令初始化该分区。此命令将用随机数据覆盖分区,并提示您输入要使用的初始密码。


$ sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1

您可以通过运行以下命令来检查分区的 LUKS 配置,该命令将转储 LUKS 标头信息。


$ sudo cryptsetup luksDump /dev/sdb1

LUKS header information for /dev/sdb1

Version:           1
Cipher name:       aes
Cipher mode:     cbc-essiv:sha256
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:       18 1d 6d 3e e9 44 2a fe bf 67 78 8f aa 02 7f 91 2a f4 f2 17 
MK salt:        26 cc 29 9f 0b 7d ea ff 44 9f fe 34 91 40 6e 9b 
                af 1e bd 8f d0 d2 1c 3a 70 30 35 5f 2d 49 9a 95 
MK iterations:  222875
UUID:             5acc17e0-80be-40ba-beae-626e47b57379

Key Slot 0: ENABLED
 Iterations:             891733
  Salt:                   26 20 29 39 a5 1d 02 7b ca 8c bd 18 bc 29 64 7e 
                            28 dc 06 65 78 0e 16 95 1a 67 14 66 12 2d a3 c1 
    Key material offset:    8
   AF stripes:             4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

接下来,按如下方式打开 LUKS 分区。


$ sudo cryptsetup luksOpen /dev/sdb1 sdb1

上述命令将要求您输入密码。使用正确的密码成功打开 LUKS 分区后,加密分区将映射到 /dev/mapper/sdb1。要检查该块设备是否创建成功,请使用以下命令:


$ sudo fdisk -l

Disk /dev/mapper/sdb1: 1067 MB, 1067156992 bytes
255 heads, 63 sectors/track, 129 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7b0402f6

最后,您可以在 /dev/mapper/sdb1 上创建一个新的文件系统,并将其挂载到您的 Linux 系统上:


$ sudo mkfs.ext3 /dev/mapper/sdb1
$ sudo mount /dev/mapper/sdb1 /mnt

启动时自动挂载 LUKS 加密硬盘

如果您希望在启动时自动安装 LUKS 加密分区,请按照以下过程操作。

首先,创建一个随机生成的密钥文件,用于在启动序列期间打开加密分区。使该密钥文件只能由 root 读取。


$ sudo dd if=/dev/urandom of=/root/key.sdb1 bs=1024 count=4
$ sudo chmod 400 /root/key.sdb1

将密钥文件添加到 LUKS 配置中:


$ sudo cryptsetup luksAddKey /dev/sdb1 /root/key.sdb1

验证密钥文件是否已成功添加:


$ sudo cryptsetup luksDump /dev/sdb1

Key Slot 0: ENABLED
 Iterations:             891733
  Salt:                   26 20 29 39 a5 1d 02 7b ca 8c bd 18 bc 29 64 7e 
                            28 dc 06 65 78 0e 16 95 1a 67 14 66 12 2d a3 c1 
    Key material offset:    8
   AF stripes:             4000
Key Slot 1: ENABLED
 Iterations:             404242
  Salt:                   9d b9 05 d4 06 be 8c db 74 bd cb 59 de 9a 95 8a 
                            91 8c 09 5d 91 5f 0a e6 b5 86 3c 81 73 22 e1 db 
    Key material offset:    264
 AF stripes:             4000

如上所示,密钥槽 1 已被密钥文件占用。

接下来,获取加密块设备的UUID。


$ sudo cryptsetup luksUUID /dev/sdb1

5acc17e0-80be-40ba-beae-626e47b57379

现在,编辑 /etc/crypttab 添加以下条目。


$ sudo vi /etc/crypttab

sdb1 /dev/disk/by-uuid/5acc17e0-80be-40ba-beae-626e47b57379 /root/key.sdb1 luks

/etc/crypttab 中的条目格式如下。


<name of encrypted block device> /dev/disk/by-uuid/<UUID of block device> <location of key file> luks

最后创建挂载点,编辑/etc/fstab添加挂载点信息:


$ sudo mkdir /mnt_sdb1
$ sudo vi /etc/fstab

/dev/mapper/sdb1        /mnt_sdb1    ext3

马上重启。加密分区应在启动时自动安装。

©2015-2025 艾丽卡 support@alaica.com