CentOS加密技术全指南

发布于:2025-06-25 ⋅ 阅读:(17) ⋅ 点赞:(0)

文件系统加密

LUKS (Linux Unified Key Setup)

全盘加密配置方法
  1. 安装前加密(Anaconda安装向导选项)

    • 在安装CentOS时选择"Encrypt my data"选项
    • 设置强密码(建议20+字符,混合大小写、数字和特殊符号)
    • 密钥槽管理界面可添加多个解锁方式
  2. 现有系统迁移到加密环境

    • 使用cryptsetup-reencrypt工具进行在线加密
    • 示例流程:
      yum install cryptsetup-reencrypt
      cryptsetup-reencrypt --new --reduce-device-size 16M /dev/sda1
      
    • 必须确保备用电源以防中断导致数据损坏
加密单个分区的步骤
  1. 分区准备

    • 使用fdiskparted创建新分区:
      fdisk /dev/sdb
      # 创建新分区并设置类型为8300 (Linux filesystem)
      
  2. LUKS格式化

    • 加密分区并设置初始密码:
      cryptsetup luksFormat --type luks2 /dev/sdb1
      
  3. 打开加密设备

    • 映射加密设备到/dev/mapper:
      cryptsetup open /dev/sdb1 secure_data
      
  4. 创建文件系统

    • 在映射设备上创建文件系统:
      mkfs.ext4 /dev/mapper/secure_data
      
密钥管理
  1. 密码短语设置

    • 添加/删除密钥槽:
      cryptsetup luksAddKey /dev/sdb1  # 添加新密码
      cryptsetup luksRemoveKey /dev/sdb1  # 删除密码
      
  2. 密钥文件生成与使用

    • 生成随机密钥文件:
      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
      
  3. 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

用户目录加密实现
  1. 安装与配置

    • 安装eCryptfs工具:
      yum install ecryptfs-utils
      
    • 为新用户启用加密:
      adduser --encrypt-home secureuser
      
  2. 用户迁移

    • 迁移现有用户到加密目录:
      ecryptfs-migrate-home -u username
      
  3. 目录结构解析

    • ~/.Private: 存储加密数据
    • ~/.ecryptfs: 包含加密元数据和配置文件
    • 自动挂载配置文件:~/.ecryptfs/auto-mount
挂载与卸载
  1. 自动挂载机制

    • 登录时通过PAM模块自动挂载
    • 配置位于/etc/pam.d/system-auth
  2. 手动操作

    • 挂载加密目录:
      mount -t ecryptfs ~/.Private ~/Private -o key=passphrase
      
    • 卸载:
      umount ~/Private
      
故障恢复
  1. 恢复流程
    • 使用恢复密码文件:~/.ecryptfs/wrapped-passphrase
    • 恢复命令:
      ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
      

磁盘加密工具

fscrypt
  1. 环境准备

    • 内核要求:4.11+
    • 启用文件系统加密:
      tune2fs -O encrypt /dev/mapper/secure_data
      
  2. 密钥管理

    • 初始化:
      fscrypt setup
      
    • 创建加密策略:
      fscrypt encrypt /secure/directory
      
VeraCrypt
  1. 安装配置

    • 添加第三方仓库:
      yum-config-manager --add-repo https://example.com/veracrypt.repo
      
    • 安装:
      yum install veracrypt
      
  2. 容器操作

    • 创建加密容器:
      veracrypt -t -c /secure/container.hc
      
    • 挂载容器:
      veracrypt /secure/container.hc /mnt/secure
      

网络传输加密

OpenSSL/TLS

证书管理
  1. 根CA创建

    • 生成私钥:
      openssl genrsa -out ca.key 4096
      
    • 创建自签名证书:
      openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
      
  2. 服务器证书

    • 生成CSR:
      openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
      
    • 添加SAN扩展(在openssl.cnf中配置)
Web服务器配置
  1. 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>
    
  2. 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强化

  1. 安全配置

    • 禁用不安全协议:
      echo "Protocol 2" >> /etc/ssh/sshd_config
      
    • 算法白名单:
      Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
      
  2. 证书认证

    • 生成用户证书:
      ssh-keygen -s ca_key -I user_id -n username user_key.pub
      
    • 配置sshd:
      TrustedUserCAKeys /etc/ssh/ca.pub
      

数据加密应用

GPG (GNU Privacy Guard)

  1. 密钥管理

    • 生成密钥对:
      gpg --full-generate-key
      
    • 密钥参数选择:
      • RSA 4096位
      • ECC (ed25519/cv25519)
  2. 文件加密

    • 对称加密:
      gpg -c sensitive_file.txt
      
    • 非对称加密:
      gpg -e -r recipient@domain.com file.txt
      
  3. 邮件集成

    • Thunderbird+Enigmail配置
    • 自动解密/签名设置

系统级安全增强

Secure Boot与TPM集成

  1. UEFI配置

    • 导入自定义签名密钥:
      mokutil --import /path/to/key.der
      
    • 内核模块签名验证
  2. TPM绑定

    • 使用tpm2-tools管理:
      tpm2_createprimary -C e -c primary.ctx
      
    • PCR策略示例:
      {"pcr_bank":"sha256","pcr_ids":"0,1,2,3,4,5,6,7"}
      

Auditd日志加密

  1. 日志加密存储

    • 创建加密分区:
      cryptsetup luksFormat /dev/sdc1
      
    • 配置auditd存储位置
  2. 远程加密传输

    • 配置audisp-remote:
      enable_krb5 = yes
      

密钥管理与恢复

集中化管理

  1. Vault部署

    • 安装:
      yum install vault
      
    • 初始化:
      vault operator init
      
  2. 动态密钥

    • 数据库密钥租赁:
      vault secrets enable database
      

灾难恢复

  1. 应急方案

    • 纸质密钥分片存储
    • 使用Shamir's Secret Sharing分割主密钥
  2. LiveCD恢复

    • 使用SystemRescueCD启动
    • 解密命令:
      cryptsetup luksOpen /dev/sda1 rootfs
      

性能优化与测试

  1. 基准测试

    • 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
      
  2. 算法选择

    • AES-NI加速验证
    • ARM平台优化选项

合规性检查

  1. FIPS模式

    • 启用内核FIPS:
      fips=1
      
    • 验证模式:
      sysctl crypto.fips_enabled
      
  2. 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
      

注:所有操作应在测试环境验证后实施,关键操作建议有完整的备份和回滚方案。根据CentOS版本(7/8/Stream)和硬件架构(x86_64/aarch64)可能需要调整具体参数。


网站公告

今日签到

点亮在社区的每一天
去签到