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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论