linux luks自动加密和挂载磁盘

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


原文始发于微信公众号(猿圈搬砖日常):linux luks自动加密和挂载磁盘

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/223973.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!