本文介绍 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 = 3072hash = 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)通过创建文件数据库快照,检测系统文件是否被篡改。
安装与初始化
# 安装 AIDEdnf 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 --updatemv /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# 安装 cryptsetupdnf 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 | 磁盘满时的动作,设为 halt 或 single |
flush | 日志刷新模式,建议设为 incremental_async |
启动与管理
# 启动并设置开机自启systemctl start auditdsystemctl 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 恢复。# 安装 USBGuarddnf 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 |
# 查看当前模式getenforcesestatus# 临时切换模式setenforce 0 # 切换到 permissivesetenforce 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.logsemodule -i mypolicy.pp# 5. 恢复 dontaudit 规则semodule -B