Linux分区:如何实现分区加密
导读:Linux分区加密实操指南 一 方案与准备 推荐使用 LUKS/dm-crypt + cryptsetup,这是 Linux 上通用、兼容性好的块设备加密方案,支持多口令/密钥文件、基于 device-mapper 的透明加解密。适用于...
Linux分区加密实操指南
一 方案与准备
- 推荐使用 LUKS/dm-crypt + cryptsetup,这是 Linux 上通用、兼容性好的块设备加密方案,支持多口令/密钥文件、基于 device-mapper 的透明加解密。适用于 /home、数据盘、可移动盘 等场景。若仅需目录级加密,可考虑 eCryptfs/EncFS,但对系统盘/启动盘支持不如 LUKS 直接。准备事项:
- 安装工具:
sudo apt-get install cryptsetup或sudo yum install cryptsetup(部分发行版为 cryptsetup-luks)。 - 备份数据:加密会不可逆覆盖目标分区数据,务必先完整备份。
- 规划分区:用
fdisk/parted创建分区(如 /dev/sdb1),确认设备路径无误。
- 安装工具:
二 标准步骤 LUKS 加密分区
- 创建分区(示例为 /dev/sdb1)
sudo fdisk /dev/sdb→ 新建分区 → 写入分区表。
- 初始化 LUKS 加密容器
- 交互口令:
sudo cryptsetup luksFormat /dev/sdb1 - 或指定密钥文件:
sudo cryptsetup luksFormat /dev/sdb1 /etc/cryptfs.key - 注意:执行
luksFormat会清空分区数据,命令确认时输入大写的 YES。
- 交互口令:
- 打开并映射加密设备
- 交互口令:
sudo cryptsetup luksOpen /dev/sdb1 encrypted_partition - 密钥文件:
sudo cryptsetup open --key-file=/etc/cryptfs.key /dev/sdb1 encrypted_partition - 成功后生成映射设备 /dev/mapper/encrypted_partition。
- 交互口令:
- 在映射设备上创建文件系统并挂载
sudo mkfs.ext4 /dev/mapper/encrypted_partitionsudo mkdir -p /mnt/encrypted_partitionsudo mount /dev/mapper/encrypted_partition /mnt/encrypted_partition
- 日常卸载与关闭
sudo umount /mnt/encrypted_partitionsudo cryptsetup luksClose encrypted_partition
- 验证
lsblk、cryptsetup status /dev/mapper/encrypted_partition、df -h查看状态与挂载。
三 开机自动解锁与挂载
- 生成密钥文件(可选,便于自动化)
sudo dd if=/dev/urandom of=/etc/cryptfs.key bs=1k count=4sudo chmod 600 /etc/cryptfs.key- 将密钥加入 LUKS:
sudo cryptsetup luksAddKey /dev/sdb1 /etc/cryptfs.key
- 配置自动解锁:编辑 /etc/crypttab
- 建议用 UUID 识别设备,避免设备名变动:
- 获取 UUID:
blkid /dev/sdb1
- 获取 UUID:
- 示例行(使用密钥文件):
encrypted_partition UUID=xxxx-xxxx /etc/cryptfs.key luks
- 如需每次手动输入口令,第三列留空(不建议用于无人值守场景)。
- 建议用 UUID 识别设备,避免设备名变动:
- 配置自动挂载:编辑 /etc/fstab
/dev/mapper/encrypted_partition /mnt/encrypted_partition ext4 defaults 0 0
- 测试
sudo cryptdisks_start encrypted_partition(触发解锁)sudo mount -a(挂载所有 fstab 条目)- 重启验证自动解锁与挂载是否生效。
四 密钥管理与备份恢复
- 多口令与密钥文件
- 添加额外口令:
sudo cryptsetup luksAddKey /dev/sdb1 - 删除口令:
sudo cryptsetup luksRemoveKey /dev/sdb1 - 查看密钥槽:
sudo cryptsetup luksDump /dev/sdb1
- 添加额外口令:
- 备份 LUKS 头部
- 头部损坏将导致无法解密,建议离线备份:
sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /root/sdb1-luks-header.bak- 恢复:
sudo cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file /root/sdb1-luks-header.bak
- 头部损坏将导致无法解密,建议离线备份:
- 密钥文件安全
- 设置严格权限(如 600),纳入备份与变更管控;丢失密钥等同于丢失数据。
五 常见问题与注意事项
- 性能与场景
- 加密/解密由 CPU 完成,现代处理器硬件加速下影响通常可接受;对 数据库/高 IOPS 场景建议进行压测评估。
- 故障与恢复
- 加密对介质错误更敏感,LUKS 头部/密钥槽损坏会导致整卷不可读;务必做好离线备份与演练恢复流程。
- 设备名漂移
- 生产环境优先使用 UUID 配置
/etc/crypttab与/etc/fstab,避免插拔磁盘或重启后设备名变化导致解锁/挂载失败。
- 生产环境优先使用 UUID 配置
- 安全性提示
- 使用高强度口令与最小权限的密钥文件;对可移动介质实施物理防护与离线备份策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux分区:如何实现分区加密
本文地址: https://pptw.com/jishu/758676.html
