28、统信UOS操作系统加固

统信 UOS 桌面专业版/服务器版等保三级安全加固(Debian 系差异项速查):/etc/login.defs 与 pam_pwquality 口令四要素、V20 pam_tally2 与 1060+ pam_faillock 双代登录失败锁定、TMOUT 会话超时固化、sudo 组与三权分立账户治理、sshd 禁 root 直登与算法收敛、AppArmor(aa-status/aa-enforce)强制访问控制与 UOS 安全中心、ufw/nftables 高危端口收敛、auditd 与 auth.log/rsyslog 审计外送、chrony 时间同步、RDP/VNC 终端远程接入管控,附与麒麟/CentOS 的差异对照表与版本适用性速查。

定位:统信 UOS(桌面专业版/服务器版)等保三级安全加固差异项速查手册:UOS 为 Debian 系(V20 基于 Debian 10、1060/1070 基于 Debian 11/12),与麒麟(RHEL 系)及 CentOS 在 PAM 模块、包管理、防火墙与强制访问控制上差异显著,本文按口令策略、登录失败处理、会话超时、账户治理、SSH、AppArmor 与安全中心、端口收敛、审计与日志、时间同步、远程桌面分节给出 UOS 专属加固口径,并附跨发行版差异对照表。

适用版本:统信 UOS V20(Debian 10,pam_tally2 代)、UOS 1060/1070(Debian 11/12,pam_faillock 代);桌面专业版与服务器版差异处随文标注。 配套文章:11、Linux加固手册(控制点完整版,本文为 UOS 差异项速查)、13、麒麟操作系统加固(RHEL 系对照篇)、配套测评 32、统信UOS操作系统测评命令

使用说明:

  • 本文为加固操作手册:所有命令都会修改配置,可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置(tar czf /root/etc-bak-$(date +%F).tgz /etc、UOS 安全中心策略导出),并准备可执行的回滚预案
  • 先在测试环境或单台设备灰度验证,确认无业务影响后再批量推广;每完成一项立即用文中「核查」命令核验生效——配置已下发不等于策略已生效(如 PAM 改动未覆盖 common-authsshd 两条链、chage 未对存量账户逐个下发、ufw 未 enable)。
  • 示例中的地址、账户名、口令均为演示值(如 PleaseChange@123192.168.10.20),现场须替换为符合本单位口令策略与网络规划的真实值,严禁直接沿用文中示例口令;对外发布或归档时须对个人信息与内网管理地址脱敏。
  • 命令不存在或输出与本文不一致时,先用 cat /etc/os-versionlsb_release -a 确认版本与部署形态(桌面/服务器),再换用等效命令;版本差异不得直接作为「无法整改」的结论,须给出替代措施并评估其实际效果。
  • 涉及账户锁定、防火墙与 SSH 的变更存在锁死自身风险:务必保留一条已验证的恢复通道(物理控制台、带外管理口或另一管理员会话)后再实施。
  • 加固完成后按「16、安全评估加固记录表3.0」逐项留痕(整改前后回显、操作人、时间、验证结论、回退情况),并纳入复测;测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准,本文的「加固要点」不构成最终测评结论。

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点,并写明判定依据与承载该能力的上位组件。
  • 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则:控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统或云托管平台承载时,应注明测评单元边界后判定不适用或转由上位组件核查,不得机械按缺失判不符合。
  • 统信软件未提供长期稳定、可公开直链的完整安全配置手册:UOS 安全中心的策略项以现场所用版本的客户端实测为准;Debian 系工具链(PAM、sshd、auditd、ufw/AppArmor)以 man7.org 与 manpages.debian.org 手册页为准,本文不虚构统信官方文档直链。

测评项对照表

控制点(GB/T 22239-2019 安全计算环境-主机)对应章节
身份鉴别:口令复杂度/有效期
身份鉴别:登录失败处理、超时二、三
访问控制:账户最小化、三权分立
身份鉴别:远程管理防窃听五、十
访问控制/入侵防范:强制访问控制、端口收敛六、七
安全审计
入侵防范:时间同步等支撑项

一、口令策略(复杂度 + 长度 + 老化 + 历史)

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)

加固要点:四要素同时配置:最小长度不低于 8 位(管理账户建议 12~16 位)、至少三类字符、老化不超过 90 天、历史防重复不少于 5 次。UOS(Debian 系)落地:全局模板 /etc/login.defsPASS_MAX_DAYS/PASS_MIN_DAYS/PASS_WARN_AGE)+ PAM 复杂度 pam_pwquality(包 libpam-pwquality,配置 /etc/security/pwquality.conf,在 /etc/pam.d/common-password 引用)+ 历史记忆 pam_pwhistory(Debian 系用 pam_pwhistory.soremember=5,注意与 RHEL 系 pwhistory 用法一致但模块配置位置在 common-password)。仅改全局模板不追溯存量账户是最高频整改回退点,须对存量账户逐个 chage -M 90 <用户> 下发。

验证方法grep -E "^PASS_" /etc/login.defsgrep pwquality /etc/pam.d/common-passwordcat /etc/security/pwquality.conf | grep -v "^#"chage -l <用户> 抽查、一次弱口令修改被拒实测。

核查

grep -E "^PASS_" /etc/login.defs
grep -n "pam_pwquality\|pam_pwhistory" /etc/pam.d/common-password
grep -vE "^#|^$" /etc/security/pwquality.conf | head
chage -l root

加固操作

# 全局模板
sed -i -E 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS   90/;s/^PASS_MIN_DAYS.*/PASS_MIN_DAYS   7/;s/^PASS_WARN_AGE.*/PASS_WARN_AGE   7/' /etc/login.defs

# 复杂度(/etc/security/pwquality.conf)
cat >> /etc/security/pwquality.conf <<'EOF'
minlen = 8
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
EOF

# 历史口令(/etc/pam.d/common-password 的 password 段追加 remember)
sed -i -E 's/(password.*pam_unix.so.*)/\1 remember=5/' /etc/pam.d/common-password

# 存量账户逐个下发
chage -M 90 -W 7 <用户名>
  • 预期现象:弱口令修改被拒(BAD PASSWORD 回显);chage -l 全量账户最长 90 天。

二、登录失败锁定(V20 与 1060+ 双代机制,不可混配)

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)

加固要点:「连续失败 N 次锁定 M 分钟」,N 建议 35 次、M 建议 1030 分钟,且必须覆盖最高权限账户并保留紧急恢复通道(物理控制台)。UOS 双代机制:V20(Debian 10)用 pam_tally2,1060 起(Debian 11+)默认 pam_faillock 且不再提供 pam_tally2.so——两套机制不可混配,先 find /usr/lib -name "pam_tally2.so" -o -name "pam_faillock.so" 确认现场属哪一代。pam_faillock 须在 common-auth(auth 段 preauth/auth 两次)与 common-account(account 段)同时引用,漏配导致计数不生效;even_deny_root 覆盖 root 须评估锁死风险后启用。

验证方法grep -rE "pam_faillock|pam_tally2" /etc/pam.d/ 回显、cat /etc/security/faillock.conf、连续错口令后 faillock --user <用户>(1060+)或 pam_tally2 --user <用户>(V20)出现计数实测。

核查

find /usr/lib -name "pam_tally2.so" -o -name "pam_faillock.so" 2>/dev/null
grep -rE "pam_faillock" /etc/pam.d/ | grep -E "common-auth|common-account"
grep -vE "^#|^$" /etc/security/faillock.conf 2>/dev/null

加固操作(1060+ 示例;V20 将 pam_faillock 换为 pam_tally2 且参数写法不同)

# /etc/security/faillock.conf
cat > /etc/security/faillock.conf <<'EOF'
deny = 5
unlock_time = 600
fail_interval = 900
audit
EOF

# /etc/pam.d/common-auth 的 auth 段首行插入 preauth、对应 deny 行;common-account 的 account 段插入
# pam_faillock 形态(写法以 man 8 pam_faillock 与现场样例为准,改动前备份并保留已登录会话):
auth  required  pam_faillock.so preauth audit deny=5 unlock_time=600
auth  [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
account  required  pam_faillock.so

# 查询与解锁(运维)
faillock --user <用户名>
faillock --user <用户名> --reset
  • 预期现象:连续 5 次错口令后登录被拒并在 faillock 计数可见;--reset 可解锁。

三、会话超时(TMOUT 固化)

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(会话超时自动退出)

加固要点TMOUT 写入 /etc/profile.d/ 独立脚本并以 readonly 固化(直接写 /etc/profile 会被用户 shell 配置覆盖),超时建议 300~600 秒;SSH 侧同步 ClientAliveInterval/ClientAliveCountMax(见五)。图形终端(桌面版)另在电源/锁屏策略设置自动锁屏 ≤10 分钟(UOS 安全中心-「电源与锁屏」或控制中心实测)。

验证方法grep TMOUT /etc/profile.d/*.sh、普通账户登录静置实测自动退出、锁屏策略截图。

核查

grep -rn "TMOUT" /etc/profile.d/ /etc/profile | grep -v "^#"

加固操作

cat > /etc/profile.d/tmout.sh <<'EOF'
# 等保三级:会话超时 600 秒自动退出
TMOUT=600
readonly TMOUT
export TMOUT
EOF
  • 预期现象:新会话静置 600 秒后退出;readonly 后用户会话内 TMOUT 不可改。

四、账户治理与三权分立

对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~f)

加固要点:禁用/锁定多余与默认账户(passwd -l <用户> 锁定、usermod -s /usr/sbin/nologin <用户> 禁登录——Debian 系 nologin 路径与 RHEL 系不同)、清理空口令(awk -F: '($2==""){print $1}' /etc/shadow 应为空)、UID 0 账户仅 root 一条(awk -F: '($3==0){print $1}' /etc/passwd)。三权分立:系统管理员/安全管理员/审计管理员三类角色分设实账(UOS 服务器版可结合安全中心的分级管理员体系,以现场版本实测为准);提权收敛到 Debian 系 sudo(对应 RHEL 系 wheel 组),visudo -c 校验语法后收权。

验证方法:账户清单与锁定状态、空口令/UID0 排查回显、getent group sudovisudo -c、审计员账户执行管理操作被拒实测。

核查

awk -F: '($2==""){print $1}' /etc/shadow
awk -F: '($3==0){print $1}' /etc/passwd
passwd -S root
getent group sudo
visudo -c

加固操作

# 锁定停用账户并禁止交互登录
passwd -l <多余账户> && usermod -s /usr/sbin/nologin <多余账户>
# 提权收敛:从 sudo 组移除无关账户
deluser <用户> sudo
  • 预期现象:无空口令、UID0 唯一、sudo 组成员与授权台账一致。

五、SSH 远程管理加固

对应控制点:GB/T 22239-2019 8.1.4.1 c)、8.1.4.2 c)

加固要点/etc/ssh/sshd_configPermitRootLogin no(禁止 root 直登,先建管理账户验证再改)、PermitEmptyPasswords noMaxAuthTries 4LoginGraceTime 60ClientAliveInterval 600/ClientAliveCountMax 1(会话保活与超时)、AllowUsers/AllowGroups 白名单、ListenAddress 仅管理网段、协议与算法收敛(现代 OpenSSH 仅支持 SSH-2,弱算法用 ssh -Q cipher 现场清单对照收敛);远程统一走堡垒机跳转(纳管证据)。改后 sshd -t 校验再 systemctl restart sshDebian 系服务名为 ssh 而非 sshd,常见踩坑点)。

验证方法sshd -T | grep -E "permitrootlogin|maxauthtries|allowusers"、root 直登被拒实测、堡垒机纳管记录。

核查

sshd -T | grep -E "permitrootlogin|permitemptypasswords|maxauthtries|clientalive"
grep -E "^(PermitRootLogin|MaxAuthTries|AllowUsers|ListenAddress)" /etc/ssh/sshd_config

加固操作

sed -i -E 's/^#?PermitRootLogin.*/PermitRootLogin no/;s/^#?PermitEmptyPasswords.*/PermitEmptyPasswords no/;s/^#?MaxAuthTries.*/MaxAuthTries 4/' /etc/ssh/sshd_config
echo -e "ClientAliveInterval 600\nClientAliveCountMax 1\nAllowUsers opsadmin@192.168.10.?" >> /etc/ssh/sshd_config
sshd -t && systemctl restart ssh
  • 预期现象:root 直登被拒;白名单外账户无法 SSH;systemctl status ssh 正常。

六、AppArmor 强制访问控制与 UOS 安全中心

对应控制点:GB/T 22239-2019 8.1.4.2 访问控制、8.1.4.4 入侵防范(最小权限与防护)

加固要点:UOS(Debian 系)默认强制访问控制为 AppArmor 而非 SELinuxgetenforce/sestatus 不存在属正常,不得据命令缺失判不符合):以 aa-status(或 apparmor_status)核查 profile 加载与 enforce 数量,关键服务(sshd、网络服务、数据库)profile 置于 enforce 而非 complain;自定义与调整用 aa-complain/aa-enforce <profile> 切换、apparmor_parser -r <profile> 重载(变更类,走审批)。UOS 安全中心(图形客户端)提供安全基线/病毒防护/防火墙等策略项——策略项名称与生效性以现场所用版本客户端实测为准(统信无公开稳定手册),开启后须导出策略留痕。

验证方法aa-status 输出(profiles 与 enforce 计数)、cat /sys/kernel/security/apparmor/profiles | wc -l、安全中心策略导出截图、恶意路径执行被拒(如 DAC override 场景)实测。

核查

aa-status | head -n 8
cat /sys/kernel/security/apparmor/profiles 2>/dev/null | grep -c " (enforce)"
dpkg -l | grep -E "apparmor|apparmor-utils"
示例输出(节选)
$ aa-status | head -n 8
apparmor module is loaded.
42 profiles are loaded.
38 profiles are in enforce mode.
4 profiles are in complain mode.

加固操作

# 将关键服务 profile 由 complain 切为 enforce(先在测试环境验证业务不受影响)
aa-enforce /etc/apparmor.d/usr.sbin.sshd
apparmor_parser -r /etc/apparmor.d/usr.sbin.sshd
  • 预期现象:关键服务 profile 处于 enforce;业务回归正常;安全中心策略导出在案。

七、高危端口收敛与防火墙(ufw/nftables)

对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 b) c)

加固要点:UOS 防火墙默认可能是 ufwnftablesfirewall-cmd 通常不存在,不得据命令缺失判不符合):以 ufw status verbosenft list ruleset 核查现行引擎,默认策略 deny incoming、按业务最小放行(ufw allow from <运维网段> to any port 22 proto tcp);高危遗留服务直接停用(telnetrshtftpvsftpd 匿名、SMBv1 等,systemctl disable --now <服务> 属变更类走审批);监听面以 ss -lntup 全量盘点并与台账比对。

验证方法ufw status verbose/nft list ruleset 回显、ss -lntup 清单、非授权来源访问 22/3389 被拒实测。

核查

ufw status verbose 2>/dev/null || nft list ruleset | head -n 20
ss -lntup | grep -vE "127.0.0.1|\[::1\]"

加固操作

ufw default deny incoming
ufw allow from 192.168.10.0/24 to any port 22 proto tcp comment 'SSH-ops'
ufw enable          # 注意:enable 前务必放行当前管理通道,避免锁死
  • 预期现象:默认入站拒绝;仅管理网段可达 SSH/远程桌面端口。

八、审计与日志(auditd + auth.log + 外送留存)

对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

加固要点auditd 安装并启用(Debian 系包 auditd,主配置 /etc/audit/auditd.conf):max_log_file_action 保持 keep_logs(或轮转+归档策略)、num_logsmax_log_file 按留存需要调整;关键规则写入 /etc/audit/rules.d/(身份鉴别文件 watch on /etc/passwd/etc/shadow/etc/sudoers、PAM 目录、sshd_config)后 augenrules --load。认证日志为 /var/log/auth.log(Debian 系,对应 RHEL 系 secure);日志留存不少于 6 个月:本机轮转(logrotate)+ rsyslog 外送日志审计系统(*.* @@<日志审计机>:6514,TLS 见日志审计篇)。桌面终端另核查 UOS 安全中心日志审计项(现场实测)。

验证方法systemctl status auditdauditctl -l 规则回显、aureport --auth 摘要、日志平台中 UOS 主机日志最早时间戳(≥6 个月)。

核查

systemctl status auditd --no-pager | head -n 4
auditctl -l | head -n 8
grep -E "max_log_file_action|num_logs" /etc/audit/auditd.conf
tail -n 5 /var/log/auth.log

加固操作

cat > /etc/audit/rules.d/50-baseline.rules <<'EOF'
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/pam.d/ -p wa -k pam
-w /etc/ssh/sshd_config -p wa -k sshd
EOF
augenrules --load
# rsyslog 外送(目标为日志审计系统,TLS 按 rsyslog 官方 omfwd/imtcp 配置)
echo '*.* @@192.168.20.10:6514' > /etc/rsyslog.d/30-uos-audit.conf && systemctl restart rsyslog
  • 预期现象:规则加载且 auditctl -l 可见;日志平台可检索 6 个月以上 UOS 事件。

九、时间同步(chrony)

对应控制点:GB/T 22239-2019 8.1.4.10 支撑项(审计记录时间基准,间接支撑 8.1.4.3)

加固要点:全网统一时钟源(内部 NTP,离线环境不得指向不可达公网源);UOS 1060+(Debian 11/12)默认 chrony,V20 上 chrony 与 ntp 均可安装——以现场实际服务核查(systemctl status chronychronyd)。/etc/chrony/sources.list(Debian 系新路径;旧版 chrony.conf 以现场为准)指向内部源,chronyc trackingchronyc sources -v 核验实际同步状态与偏移量,仅配置而未同步成功不构成符合

验证方法chronyc tracking 的 Leap/System time 与偏移回显、timedatectl 的 NTP synchronized 状态、时钟源与台账一致。

核查

systemctl status chrony --no-pager 2>/dev/null | head -n 3 || systemctl status chronyd --no-pager | head -n 3
chronyc tracking
chronyc sources -v | head -n 8
timedatectl | grep -E "synchronized|Time zone"

加固操作

echo 'server ntp.demo.local iburst' > /etc/chrony/sources.list   # 或现场版本的 chrony.conf
systemctl restart chrony 2>/dev/null || systemctl restart chronyd
chronyc makestep
  • 预期现象:chronyc tracking 显示同步至内部源,偏移量在毫秒级;timedatectl 显示 NTP synchronized: yes。

十、远程桌面与终端接入管控(桌面专业版)

对应控制点:GB/T 22239-2019 8.1.4.1 c)(远程管理防窃听)、8.1.2 安全区域边界(接入控制联动)

加固要点:UOS 桌面终端的远程接入(自带远程协助、VNC、第三方工具)按三步收敛:非必需一律关闭;必需的(运维跳板到桌面)仅监听管理网段并以防火墙限制来源;通道加密(VNC 须 TLS 变体或改走 SSH 隧道/堡垒机通道,明文 VNC 判部分符合以上)。统一纳管路径:终端远程运维经堡垒机会话留痕。

验证方法ss -lntp 中 5900/3389 类监听与来源限制回显、堡垒机纳管记录、明文口令抓包验证(经授权)。

核查

ss -lntp | grep -E "5900|5901|3389"
ps -ef | grep -iE "[v]nc|[x]rdp"
ufw status | grep -E "5900|3389"
  • 预期现象:无对全网开放的明文远程桌面端口;远程运维均经堡垒机。

十一、与麒麟/CentOS 的差异对照表

事项统信 UOS(Debian 系)麒麟 V10 / CentOS 7(RHEL 系)
版本识别cat /etc/os-versionlsb_release -acat /etc/kylin-release/etc/os-release
登录失败(旧代)V20:pam_tally2CentOS 7:pam_tally2
登录失败(新代)1060+:pam_faillock/etc/security/faillock.conf麒麟 V10/RHEL8+:pam_faillock
PAM 入口/etc/pam.d/common-auth/common-password/common-account/etc/pam.d/system-auth/password-auth
服务管理(SSH)systemctl restart sshsystemctl restart sshd
强制访问控制AppArmor(aa-statusSELinux/kysec(getenforce
防火墙ufwnftables(通常无 firewalld)firewalld/firewalld-nft
包管理apt/dpkg --listyum/dnf/rpm -qa
提权组sudowheel
认证日志/var/log/auth.log/var/log/secure
nologin 路径/usr/sbin/nologin/sbin/nologin(多数同路径软链)
  • 预期现象:跨平台运维按本表切换命令;测评记录中注明被测主机属 Debian 系/RHEL 系。

参考依据

  • GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境各控制点):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
  • GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(测评对象边界认定、单元测评实施与结果判定):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
  • 统信软件官方站点(产品与支持入口;安全配置手册未公开直链,安全中心策略以现场版本客户端实测为准):https://www.chinauos.com/
  • man7.org Linux man-pages:pam_faillock(8)/faillock.conf(5)(deny/unlock_time/fail_interval 默认值)、pam_tally2(8)、pam_pwquality(8)、sshd_config(5)、auditd.conf(5)、auditctl(8):https://man7.org/linux/man-pages/
  • Debian 系手册页(ufw、aa-status/apparmor_parser、chrony/chronyc sources 路径差异):https://manpages.debian.org/
  • 站内配套:32、统信UOS操作系统测评命令(测评侧命令与更正说明同源)、13、麒麟操作系统加固11、Linux操作系统加固手册
  • 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准),站内对照表:22、高风险判定指引与加固对照表
  • 命令核验说明:本文命令已于 2026-09 对照 man7.org(pam_faillock/pam_tally2/pwquality/sshd_config/auditd.conf)与 manpages.debian.org(ufw/aa-status/chrony)核验,UOS 版本代际(V20=Debian 10=pam_tally2 代、1060+=Debian 11/12=pam_faillock 代)与 AppArmor/ufw 默认口径与站内 32 号测评篇 2026-09-02 核验结论一致;五处须留意:① 统信软件无长期稳定公开安全配置手册,安全中心策略项名称随版本变化,以现场客户端实测与策略导出为准,本文不虚构官方直链;② pam_faillock 须在 auth 段两处(preauth/authfail)与 account 段同时引用,漏配导致计数不生效;修改 PAM 前保留已登录会话与控制台通道,配置错误会造成全员无法登录;③ Debian 系 SSH 服务名为 sshsshd 单元通常不存在),systemctl restart sshd 报 Unit not found 属正常而非加固失败;④ ufw enable 前必须放行当前管理通道,否则远程会话被即刻切断;⑤ chrony 配置文件路径随 Debian 代际在 chrony.confchrony/sources.list 间演进,以现场包版本 dpkg -L chrony 输出为准。

关联文章