文件系統加密
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 onSSLCertificateFile /etc/pki/tls/certs/server.crtSSLCertificateKeyFile /etc/pki/tls/private/server.keySSLCertificateChainFile /etc/pki/tls/certs/ca.crtHeader 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)可能需要調整具體參數。