文件系统加密
LUKS (Linux Unified Key Setup)
全盘加密配置方法
安装前加密(Anaconda安装向导选项)
- 在安装CentOS时选择"Encrypt my data"选项
- 设置强密码(建议20+字符,混合大小写、数字和特殊符号)
- 密钥槽管理界面可添加多个解锁方式
现有系统迁移到加密环境
- 使用
cryptsetup-reencrypt
工具进行在线加密 - 示例流程:
yum install cryptsetup-reencrypt cryptsetup-reencrypt --new --reduce-device-size 16M /dev/sda1
- 必须确保备用电源以防中断导致数据损坏
- 使用
加密单个分区的步骤
分区准备
- 使用
fdisk
或parted
创建新分区:fdisk /dev/sdb # 创建新分区并设置类型为8300 (Linux filesystem)
- 使用
LUKS格式化
- 加密分区并设置初始密码:
cryptsetup luksFormat --type luks2 /dev/sdb1
- 加密分区并设置初始密码:
打开加密设备
- 映射加密设备到/dev/mapper:
cryptsetup open /dev/sdb1 secure_data
- 映射加密设备到/dev/mapper:
创建文件系统
- 在映射设备上创建文件系统:
mkfs.ext4 /dev/mapper/secure_data
- 在映射设备上创建文件系统:
密钥管理
密码短语设置
- 添加/删除密钥槽:
cryptsetup luksAddKey /dev/sdb1 # 添加新密码 cryptsetup luksRemoveKey /dev/sdb1 # 删除密码
- 添加/删除密钥槽:
密钥文件生成与使用
- 生成随机密钥文件:
dd if=/dev/urandom of=/root/encryption_key bs=1 count=256 chmod 600 /root/encryption_key
- 添加密钥文件到LUKS:
cryptsetup luksAddKey /dev/sdb1 /root/encryption_key
- 生成随机密钥文件:
TPM 2.0集成
- 安装必要组件:
yum install clevis clevis-luks clevis-dracut
- 绑定LUKS到TPM:
clevis luks bind -d /dev/sdb1 tpm2 '{"pcr_bank":"sha256","pcr_ids":"0,1,2,3"}'
- 安装必要组件:
eCryptfs
用户目录加密实现
安装与配置
- 安装eCryptfs工具:
yum install ecryptfs-utils
- 为新用户启用加密:
adduser --encrypt-home secureuser
- 安装eCryptfs工具:
用户迁移
- 迁移现有用户到加密目录:
ecryptfs-migrate-home -u username
- 迁移现有用户到加密目录:
目录结构解析
~/.Private
: 存储加密数据~/.ecryptfs
: 包含加密元数据和配置文件- 自动挂载配置文件:
~/.ecryptfs/auto-mount
挂载与卸载
自动挂载机制
- 登录时通过PAM模块自动挂载
- 配置位于
/etc/pam.d/system-auth
手动操作
- 挂载加密目录:
mount -t ecryptfs ~/.Private ~/Private -o key=passphrase
- 卸载:
umount ~/Private
- 挂载加密目录:
故障恢复
- 恢复流程
- 使用恢复密码文件:
~/.ecryptfs/wrapped-passphrase
- 恢复命令:
ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
- 使用恢复密码文件:
磁盘加密工具
fscrypt
环境准备
- 内核要求:4.11+
- 启用文件系统加密:
tune2fs -O encrypt /dev/mapper/secure_data
密钥管理
- 初始化:
fscrypt setup
- 创建加密策略:
fscrypt encrypt /secure/directory
- 初始化:
VeraCrypt
安装配置
- 添加第三方仓库:
yum-config-manager --add-repo https://example.com/veracrypt.repo
- 安装:
yum install veracrypt
- 添加第三方仓库:
容器操作
- 创建加密容器:
veracrypt -t -c /secure/container.hc
- 挂载容器:
veracrypt /secure/container.hc /mnt/secure
- 创建加密容器:
网络传输加密
OpenSSL/TLS
证书管理
根CA创建
- 生成私钥:
openssl genrsa -out ca.key 4096
- 创建自签名证书:
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
- 生成私钥:
服务器证书
- 生成CSR:
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
- 添加SAN扩展(在openssl.cnf中配置)
- 生成CSR:
Web服务器配置
Apache示例
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key SSLCertificateChainFile /etc/pki/tls/certs/ca.crt Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" </VirtualHost>
Nginx示例
server { listen 443 ssl; ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; }
SSH强化
安全配置
- 禁用不安全协议:
echo "Protocol 2" >> /etc/ssh/sshd_config
- 算法白名单:
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
- 禁用不安全协议:
证书认证
- 生成用户证书:
ssh-keygen -s ca_key -I user_id -n username user_key.pub
- 配置sshd:
TrustedUserCAKeys /etc/ssh/ca.pub
- 生成用户证书:
数据加密应用
GPG (GNU Privacy Guard)
密钥管理
- 生成密钥对:
gpg --full-generate-key
- 密钥参数选择:
- RSA 4096位
- ECC (ed25519/cv25519)
- 生成密钥对:
文件加密
- 对称加密:
gpg -c sensitive_file.txt
- 非对称加密:
gpg -e -r recipient@domain.com file.txt
- 对称加密:
邮件集成
- Thunderbird+Enigmail配置
- 自动解密/签名设置
系统级安全增强
Secure Boot与TPM集成
UEFI配置
- 导入自定义签名密钥:
mokutil --import /path/to/key.der
- 内核模块签名验证
- 导入自定义签名密钥:
TPM绑定
- 使用tpm2-tools管理:
tpm2_createprimary -C e -c primary.ctx
- PCR策略示例:
{"pcr_bank":"sha256","pcr_ids":"0,1,2,3,4,5,6,7"}
- 使用tpm2-tools管理:
Auditd日志加密
日志加密存储
- 创建加密分区:
cryptsetup luksFormat /dev/sdc1
- 配置auditd存储位置
- 创建加密分区:
远程加密传输
- 配置audisp-remote:
enable_krb5 = yes
- 配置audisp-remote:
密钥管理与恢复
集中化管理
Vault部署
- 安装:
yum install vault
- 初始化:
vault operator init
- 安装:
动态密钥
- 数据库密钥租赁:
vault secrets enable database
- 数据库密钥租赁:
灾难恢复
应急方案
- 纸质密钥分片存储
- 使用Shamir's Secret Sharing分割主密钥
LiveCD恢复
- 使用SystemRescueCD启动
- 解密命令:
cryptsetup luksOpen /dev/sda1 rootfs
性能优化与测试
基准测试
- cryptsetup性能测试:
cryptsetup benchmark
- fio压力测试:
fio --filename=/dev/mapper/secure_data --rw=randrw --bs=4k --direct=1 --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1
- cryptsetup性能测试:
算法选择
- AES-NI加速验证
- ARM平台优化选项
合规性检查
FIPS模式
- 启用内核FIPS:
fips=1
- 验证模式:
sysctl crypto.fips_enabled
- 启用内核FIPS:
CIS审计
- 使用openscap:
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --results scan-results.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
- 使用openscap:
注:所有操作应在测试环境验证后实施,关键操作建议有完整的备份和回滚方案。根据CentOS版本(7/8/Stream)和硬件架构(x86_64/aarch64)可能需要调整具体参数。