帮你快速理解、总结文档立即下载

系统安全加固指南

最近更新时间:2026-08-27 18:07:00
我的收藏
本文介绍 TencentOS Server 中系统级的安全配置方法,包括加密策略管理、证书管理、漏洞扫描、完整性检查、块设备加密、审计系统、USBGuard 和 SELinux 配置。本文适用于 TencentOS Server 3 及以上版本。

系统加密策略

全系统加密策略(System-wide Crypto Policy)是 TencentOS Server 的加密子系统配置组件,涵盖 TLS、IPSec、SSH、DNSSEC 和 Kerberos 协议。设置全系统策略后,应用程序会遵循该策略,拒绝使用不符合策略的算法和协议。如需覆盖默认行为,也可对单个应用程序进行自定义。

加密策略级别

策略级别
说明
DEFAULT
默认级别。允许 TLS 1.2 和 1.3 协议,以及 IKEv2 和 SSH2 协议。
LEGACY
兼容性策略。在 DEFAULT 基础上额外支持 TLS 1.0 和 1.1 协议,允许 DSA、3DES 和 RC4 算法。
FUTURE
保守安全级别。不允许在签名算法中使用 SHA-1,允许 TLS 1.2 和 1.3 协议,以及 IKEv2 和 SSH2 协议。

查看与设置加密策略

# 查看当前加密策略
update-crypto-policies --show

# 设置为 FUTURE 策略
update-crypto-policies --set FUTURE
警告
修改加密策略后,建议重启系统使配置完全生效。
reboot

排除特定应用程序

如果需要让特定应用程序不遵循全系统加密策略,可以直接在该应用程序中配置受支持的密码套件和协议,或从 /etc/crypto-policies/back-ends/ 目录中删除与应用程序相关的符号链接。
# wget 示例:自定义 TLS 版本和密码套件
wget --secure-protocol=TLSv1_1 --ciphers="SECURE128" https://example.com

# curl 示例:指定密码列表
curl https://example.com --ciphers '@SECLEVEL=0:DES-CBC3-SHA:RSA-DES-CBC3-SHA'

自定义子加密策略

可以在现有全系统策略之上叠加自定义子策略:
# 1. 创建子策略文件
cd /etc/crypto-policies/policies/modules/
touch MYCRYPTO-1.pmod
MYCRYPTO-1.pmod 中添加:
min_rsa_size = 3072
hash = SHA2-384 SHA2-512 SHA3-384 SHA3-512
# 2. 启用子策略
update-crypto-policies --set DEFAULT:MYCRYPTO-1

# 3. 重启生效
reboot

# 4. 验证
cat /etc/crypto-policies/state/CURRENT.pol | grep rsa_size

自定义完整加密策略

# 1. 创建策略文件(可复制系统预定义策略作为基础)
cp /usr/share/crypto-policies/policies/DEFAULT.pol /etc/crypto-policies/policies/MYPOLICY.pol

# 2. 编辑策略文件内容
vim /etc/crypto-policies/policies/MYPOLICY.pol

# 3. 启用自定义策略
update-crypto-policies --set MYPOLICY

# 4. 重启生效
reboot

# 5. 验证
update-crypto-policies --show

共享系统证书

TencentOS Server 的共享系统证书机制使 NSS、GNUTLS、OpenSSL 和 Java 能够共享默认证书源,包括 CA 证书锚点和黑名单信息。默认信任存储包含 Mozilla CA 列表。

证书存储路径

用途
路径
信任锚点
/usr/share/pki/ca-trust-source/anchors//etc/pki/ca-trust/source/anchors/
不信任证书
/usr/share/pki/ca-trust-source/blacklist//etc/pki/ca-trust/source/blacklist/
扩展格式证书
/usr/share/pki/ca-trust-source//etc/pki/ca-trust/source/
说明
/etc/pki/ca-trust/ 中的设置优先级高于 /usr/share/pki/ca-trust-source/

添加信任证书

# 安装 ca-certificates(通常已预装)
dnf install ca-certificates

# 将证书复制到信任锚点目录
cp ~/certificate.pem /usr/share/pki/ca-trust-source/anchors/

# 更新系统证书存储
update-ca-trust

管理已信任证书

# 列出所有信任锚点
trust list

# 添加信任锚点
trust anchor path/to/certificate.crt

# 删除信任锚点
trust anchor --remove path/to/certificate.crt

# 查看子命令帮助
trust list --help

漏洞及配置合规性扫描

TencentOS Server 提供基于 SCAP(Security Content Automation Protocol)标准的自动化合规审计工具,支持对系统进行配置扫描、漏洞扫描和合规修复。

配置合规工具

工具
说明
SCAP Workbench
图形化界面工具,对单个系统执行配置和漏洞扫描,生成安全报告
OpenSCAP(oscap)
命令行工具,对本地系统执行配置和漏洞扫描,支持合规修复
SCAP Security Guide(SSG)
安全策略集合,提供针对 Linux 系统的 XCCDF 配置文件和 OVAL 检测脚本
Script Check Engine(SCE)
可选扩展,支持用 Bash、Python 等脚本编写自定义检查逻辑
说明:详细使用方法,请联系与您对接的商务人员获取。

完整性检查(AIDE)

AIDE(Advanced Intrusion Detection Environment)通过创建文件数据库快照,检测系统文件是否被篡改。

安装与初始化

# 安装 AIDE
dnf install aide

# 初始化数据库
aide --init

# 启用数据库(从文件名中删除 .new)
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
说明
默认配置文件为 /etc/aide.conf,可在此定义需要监控的目录和文件。

执行完整性检查

# 检查文件是否被篡改
aide --check

# 系统变更后更新数据库
aide --update
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

块设备加密(LUKS)

TencentOS Server 使用 LUKS(Linux Unified Key Setup)作为块设备加密的默认实现。LUKS 对整个块设备进行加密,支持多密钥插槽,适合保护移动存储介质和磁盘驱动器中的数据。
警告
LUKS 仅在系统关闭时保护数据。系统启动并解密后,文件将处于明文状态。

LUKS 特性

对整个块设备进行加密,适合保护可移动存储介质。
提供密码增强,防止字典攻击。
支持多个密钥插槽,可添加备份密钥或密码。
默认加密算法为 aes-xts-plain64,默认密钥大小 512 位。

加密空白块设备

# 1. 格式化为 LUKS 分区
cryptsetup luksFormat /dev/vdb1

# 2. 打开加密分区
cryptsetup open /dev/vdb1 vdb1_encrypted

# 3. 创建文件系统
mkfs -t ext4 /dev/mapper/vdb1_encrypted

# 4. 挂载
mount /dev/mapper/vdb1_encrypted /mnt/encrypted

加密已有数据的块设备

警告:执行加密前请确保数据已备份。
# 卸载分区
umount /dev/vdb1

# 安装 cryptsetup
dnf install cryptsetup

# 启动加密(LUKS 标头存储在设备头部)
cryptsetup reencrypt --encrypt --init-only --reduce-device-size 32M /dev/vdb1 vdb1_encrypted
使用分离标头加密(标头存储在指定位置,安全性更高):
cryptsetup reencrypt --encrypt --init-only --header /path/to/header /dev/vdb1 vdb1_encrypted
加密后,分区不再允许直接挂载,必须通过 /dev/mapper/ 下的映射设备访问。

审计系统(auditd)

Linux 审计系统用于记录系统中的安全策略违规事件,对于生产环境至关重要。

审计系统功能

统计安全策略违规事件的时间、类型和结果
监控文件访问和系统调用
记录用户操作和身份验证事件
支持按条件搜索事件和生成报告

auditd 配置参数

主要配置文件为 /etc/audit/auditd.conf,常用参数:
参数
说明
log_file
审计日志路径,默认 /var/log/audit/audit.log
max_log_file
日志文件最大大小
max_log_file_action
日志达到上限时的动作,建议设为 keep_logs
space_left
磁盘剩余空间阈值
space_left_action
空间不足时的动作,建议设为 email
disk_full_action
磁盘满时的动作,设为 haltsingle
flush
日志刷新模式,建议设为 incremental_async

启动与管理

# 启动并设置开机自启
systemctl start auditd
systemctl enable auditd

# 查看状态
systemctl status auditd

# 重新加载配置
service auditd reload

定义审计规则

# 监控文件访问(记录对 /etc/passwd 的写操作)
auditctl -w /etc/passwd -p wa -k passwd_changes

# 监控目录(记录对 /etc/selinux/ 目录的写操作)
auditctl -w /etc/selinux/ -p wa -k selinux_changes

# 系统调用规则(记录时间相关系统调用)
auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change

# 记录用户删除文件操作
auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

# 记录可执行文件执行
auditctl -a always,exit -F exe=/bin/id -F arch=b64 -S execve -k execution_bin_id

持久化审计规则

将规则写入 /etc/audit/rules.d/ 目录下的 .rules 文件中,然后加载:
# 加载规则
augenrules --load

# 查看已加载规则
auditctl -l

查询审计日志

# 搜索特定事件类型
ausearch -m AVC,USER_AVC -ts recent

# 搜索登录失败记录
ausearch -m USER_LOGIN -ts '7/02/2022' '18:00:00' -sv no

# 生成登录报告
aureport --login -i

# 生成所有事件报告
aureport

USBGuard — 抵御 USB 设备攻击

USBGuard 是一个软件框架,基于内核 USB 设备授权功能,使用允许/禁止设备列表来保护系统免受恶意 USB 设备攻击。

安装与启用

警告:
usbguard generate-policy 生成的初始规则仅放行执行命令时已连接的 USB 设备。在物理服务器上启用 USBGuard 后,新接入的键盘、鼠标等设备默认会被拒绝,可能导致无法本地操作。建议您先确认规则集内容,并在保留带外管理通道(如 BMC/IPMI)的情况下再启用该服务;若被锁定,可通过带外通道执行 systemctl stop usbguard 恢复。
# 安装 USBGuard
dnf install usbguard

# 生成初始规则集(基于当前已连接设备)
usbguard generate-policy > /etc/usbguard/rules.conf

# 启动并设置开机自启
systemctl enable --now usbguard

# 查看服务状态
systemctl status usbguard

管理 USB 设备

# 列出识别的 USB 设备
usbguard list-devices

# 临时授权设备与系统交互
usbguard allow-device <device_id>

# 临时拒绝设备
usbguard reject-device <device_id>

# 永久授权设备(写入规则)
usbguard allow-device <device_id> -p

# 永久拒绝设备
usbguard block-device <device_id> -p

# 查看当前规则
usbguard list-rules

创建自定义策略

# 生成策略(不包含哈希)
usbguard generate-policy --no-hashes > ./rules.conf

# 编辑规则,例如只允许大容量存储设备
vim ./rules.conf
# 添加:allow with-interface equals { 08:*:* }

# 安装策略
install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf

# 重启生效
systemctl restart usbguard

将审计事件记录到 Linux 审计日志

编辑 /etc/usbguard/usbguard-daemon.conf,将 AuditBackend 改为 LinuxAudit
AuditBackend=LinuxAudit
systemctl restart usbguard

# 验证
ausearch -ts recent -m USER_DEVICE

SELinux 配置

SELinux(Security-Enhanced Linux)提供强制访问控制(MAC),为系统提供额外的安全层。TencentOS Server 默认启用 SELinux(enforcing 模式,targeted 策略)。

工作模式

模式
说明
enforcing
强制执行安全策略,违反规则的访问被拒绝并记录
permissive
宽容模式,违反规则仅记录日志,不拒绝
disabled
禁用 SELinux
# 查看当前模式
getenforce
sestatus

# 临时切换模式
setenforce 0 # 切换到 permissive
setenforce 1 # 切换到 enforcing
永久修改模式:编辑 /etc/selinux/config,设置 SELINUX=enforcing|permissive|disabled,然后重启。

管理限制用户

注意
semanage login -m -s user_u -r s0 __default__ 会修改默认用户映射,影响之后登录的所有非映射用户(root 等显式映射的用户除外)。请您先在测试环境验证影响,再用于生产环境;如需恢复,可执行 semanage login -m -s unconfined_u -r s0 __default__
# 查看 SELinux 用户映射
semanage login -l

# 将默认用户映射到 user_u(限制常规用户)
semanage login -m -s user_u -r s0 __default__

# 创建受限管理员用户
adduser -G wheel -Z sysadm_u <username>

SELinux 权限问题排查

注意
audit2allow 基于现有拒绝日志自动生成的策略可能过于宽泛,赋予超出必要的权限。建议您在生成后审查 mypolicy.te 中的规则内容,确认授权范围合理后再执行 semodule -i 安装。
# 1. 搜索 AVC 拒绝日志
ausearch -m AVC,USER_AVC,SELINUX_ERR -ts recent

# 2. 如果无日志,可能被 dontaudit 规则屏蔽
semodule -DB # 临时禁用 dontaudit

# 3. 使用 sealert 查看详细分析
sealert -l "*"

# 4. 用 audit2allow 自动生成策略
audit2allow -M mypolicy < /var/log/audit/audit.log
semodule -i mypolicy.pp

# 5. 恢复 dontaudit 规则
semodule -B