当前位置: 代码网 > 服务器>服务器>Linux > linux luks自动加密和挂载磁盘详解

linux luks自动加密和挂载磁盘详解

2026年04月17日 Linux 我要评论
1、描述cryptsetup是linux下的一个分区加密工具,它通过调用内核中的"dm-crypt"来实现磁盘加密的功能。从安全的角度来看,对敏感数据进行加密以保护其免受窥探和黑客

1、描述

cryptsetup是linux下的一个分区加密工具,它通过调用内核中的"dm-crypt"来实现磁盘加密的功能。

从安全的角度来看,对敏感数据进行加密以保护其免受窥探和黑客的攻击是很重要的。 linux 统一密钥设置(linux unified key setup)(luks)是一个很好的工具,也是 linux 磁盘加密的通用标准。因为它将所有相关的设置信息存储在分区头部中,所以它使数据迁移变得简单。

要使用 luks 配置加密磁盘或分区,我们需要使用 cryptsetup 工具。

使用cryptsetup对分区进行了加密后,这个分区就不再允许直接挂载。luks也是一种基于device mapper 机制的加密方案。如果要使用这个分区,必须对这个分区做一个映射,映射到/dev/mapper这个目录里去,我们只能挂载这个映射才能使用。然而做映射的时候是需要输入解密密码的。

2、创建加密磁盘分区

例如:我们现在对现有的 /home目录进行加密

执行lsblk ,我们可以看到home目录对应的磁盘是sda3,全路径即是:/dev/sda3

$ lsblk 
name     maj:min rm   size ro type  mountpoint
sda        8:0    0   477g  0 disk  
├─sda1     8:1    0   600m  0 part  /boot/efi
├─sda2     8:2    0     1g  0 part  /boot
├─sda3     8:3    0 397.7g  0 part  /home
├─sda4     8:4    0    70g  0 part  /
└─sda5     8:5    0   7.7g  0 part  [swap]
sdb        8:16   1   7.5g  0 disk  
└─sdb1     8:17   1   7.5g  0 part

我们需要去umount home目录

umount 可能报错:目录繁忙。

解决方案:关闭正在执行的任务,任何执行目录、存储目录涉及到home的任务。

$ umount /home

再次执行lsblk ,我们可以看到磁盘sda3的挂载home没有了

$ lsblk 
name     maj:min rm   size ro type  mountpoint
sda        8:0    0   477g  0 disk  
├─sda1     8:1    0   600m  0 part  /boot/efi
├─sda2     8:2    0     1g  0 part  /boot
├─sda3     8:3    0 397.7g  0 part  
├─sda4     8:4    0    70g  0 part  /
└─sda5     8:5    0   7.7g  0 part  [swap]
sdb        8:16   1   7.5g  0 disk  
└─sdb1     8:17   1   7.5g  0 part

3、luks加密

安装加密软件,一般服务器自带

$ yum install cryptsetup -y
cryptsetup [其他参数] luksformat 需要加密的磁盘

常用参数:

参数名称描述
–cipher加密方式
–key-size密钥长度
–hash散列算法
–iter-time迭代时间,单位为毫秒。值越大,暴力 破解越难,打开加密盘的时间也越久

我们这里使用默认值,执行的过程中,命令会警告你将会清除磁盘上的所有数据,并要求你输入两次密码

注意:下面的yes必须输入大写的

$ cryptsetup luksformat /dev/sda3
warning!
========
这将覆盖 /dev/sda3 上的数据,该动作不可取消。

are you sure? (type 'yes' in capital letters): yes
输入 /dev/sda3 的口令:
确认密码:

4、打开luks加密盘

命令如下:

cryptsetup 加密类型open 加密磁盘 映射名称

执行该命令后就会将 /dev/sda3 解密,并映射成 /dev/mapper/home

$ cryptsetup luksopen /dev/sda3 home
输入 /dev/sda3 的口令:

5、操作和配置luks加密盘

## 在加密的分区上创建一个 xfs 文件系统
$ mkfs.xfs /dev/mapper/home
$ mount /dev/mapper/home /home
$ touch /mnt/secret

6、开机自动解密和挂载加密盘

生成随机字符串,熵越大越好

$ dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
hfqidawfgdivq6heknjcxqqtrynvfn/xqiicdr2toggeprhqiqf8cs7iwid6y/3bo697gv0km/0ijfqlq7ynlneqdyjwklphrmqnnehrorluu30h5xfyqxnxfdtjysj0ma459qo4zj7pm7klsaydwi8umf+mumhkc9v69depziyzmzzdpilaxb2r0asj6ciljatsu4hd8q7vy1lugmrypchiwtb1vtrbi6ueelylnkwh3vqxqjd/lgg2v3l2er7i1ag3u5stsfd6xjdezuhwfkbme91tph48oos+/d6v9i8bqrf+q2eqlnofuwvboldglg52upyrvuf7hiznzeooqa+ma8mk+r0folss3hmpq1wqkjkiefxqpw69acagvo3yf8amaxvyd3wlfp4zbtq400pyc470zehbjywk8hkvqlo2tb2z5z5bef+iwiy0ejqmgjijh9px6u94pqhcooy92duihtzdgeyw9rfcahdoouliikr1ug2jyi9cxifrxvrn1mmcui2yg87kjik5eqst0gljxvejuddorhvpgeamshqez6kvcyvefrml1ledkjwibf8bwk3txwyb/vw74fuz9ghim25t+kgfwsgmysrvh0tcweckuewsx4rsmy6/pilrlx/rxywbvojla+pjvz1id5jwtf57+jeywivompnibxkrh8yajqdupr1dcnzetf6n1oar5p5czdok5w6qrhdazuz2xzd8td0cyskbseorv8csoenrt6wei5hfnvywbndonqotvzrob8caazb0hzyc9oemop9gvchwgrkua/pd0mjytahr7p9r1plvppcv13zadxwpznrtm4rom2xojt7qpfcpgpdbqlme7uprmy612o+z6rmg18pc7+6oashsy7atb4qpg5mncogeufbcdzchnymygiashzn3+wlm+cpgk1x/dhnrwsumwrzbawg7pqis1qeym70ulz8kllghujwy9weqmjpnhl6ln156ioerppfbw+n5jjzrvfpxyua8ovc0epk/ziabq+swbf4odav2pslab94hac3wxu8oqkwzrggi8/hk4mcc0inproemnxrqtl76smysqlrzcjqxd/kjz5vtqjhk4zhr90kf0gw46uxu9eplo0usdev/tosugxvbp8qn6sbpxfuchqjly5tpxrniufk0zwiygqafynhrlwymvnod8hoqoe9ifc57yk+iqdorck1tac6rmns6bcxaksovhvpsthfwuy7qjhrccm1zx5wrcrirjj7vyeue6lpent+ly2v9imcjx9se1mjutyqxkwvrqehbvpj76vz35paldoqr5vsn86mgmnhnz4urymgph4rfukqr0c5wzbwoea=

将随机内容写入到一个文件,并设置文件权限,只允许 root 读写

$ vim /root/luks_pass
$ chmod 600 /root/luks_pass

设置开机自动解密 luks 分区:

$ vim /etc/crypttab
# <name>  <device>      <password> <options>
home    /dev/sda3       /root/luks_pass

把密码添加到luks加密中,这一步必须执行才能使密码生效:

$ cryptsetup luksaddkey /dev/sda3 /root/luks_pass
输入任意已存在的口令:

注释老的home自动挂载,设置新的 home 自动挂载点:

$ vim /etc/fstab

# 
# /etc/fstab
# created by anaconda on tue jun 20 10:39:43 2023
#
# accessible filesystems, by reference, are maintained under '/dev/disk/'.
# see man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# after editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
uuid=715d159b-2612-439d-8da9-4f003aebe3be /                       xfs     defaults        0 0
uuid=fbbb9210-1b17-485b-b95d-5e550e3b7be8 /boot                   xfs     defaults        0 0
uuid=d918-3920          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
# 注释掉老的home挂载信息
# uuid=7ee7cabf-8627-46b0-b40c-2c329926e775 /home                   xfs     defaults        0 0
uuid=de06acc9-4238-4de4-bc67-b754c2c0e993 none                    swap    defaults        0 0

#配置新的home挂载信息
/dev/mapper/home        /home   xfs    defaults        0       0
~                                                                     

7、查看加密盘

$ cryptsetup status home
/dev/mapper/home is active.
  type:    luks2
  cipher:  aes-xts-plain64
  keysize: 512 bits
  key location: keyring
  device:  /dev/sda3
  sector size:  512
  offset:  32768 sectors
  size:    833939456 sectors
  mode:    read/write

8、关闭加密盘

$ umount /mnt
$ cryptsetup close home

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com