28、统信UOS操作系统加固
Categories:
6 分钟阅读
定位:统信 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-auth与sshd两条链、chage未对存量账户逐个下发、ufw 未enable)。- 示例中的地址、账户名、口令均为演示值(如
PleaseChange@123、192.168.10.20),现场须替换为符合本单位口令策略与网络规划的真实值,严禁直接沿用文中示例口令;对外发布或归档时须对个人信息与内网管理地址脱敏。- 命令不存在或输出与本文不一致时,先用
cat /etc/os-version、lsb_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.defs(PASS_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.so的remember=5,注意与 RHEL 系pwhistory用法一致但模块配置位置在 common-password)。仅改全局模板不追溯存量账户是最高频整改回退点,须对存量账户逐个chage -M 90 <用户>下发。验证方法:
grep -E "^PASS_" /etc/login.defs、grep pwquality /etc/pam.d/common-password、cat /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 建议 3
5 次、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 sudo、visudo -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_config:PermitRootLogin no(禁止 root 直登,先建管理账户验证再改)、PermitEmptyPasswords no、MaxAuthTries 4、LoginGraceTime 60、ClientAliveInterval 600/ClientAliveCountMax 1(会话保活与超时)、AllowUsers/AllowGroups白名单、ListenAddress仅管理网段、协议与算法收敛(现代 OpenSSH 仅支持 SSH-2,弱算法用ssh -Q cipher现场清单对照收敛);远程统一走堡垒机跳转(纳管证据)。改后sshd -t校验再systemctl restart ssh(Debian 系服务名为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 而非 SELinux(
getenforce/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 防火墙默认可能是
ufw或nftables(firewall-cmd通常不存在,不得据命令缺失判不符合):以ufw status verbose或nft list ruleset核查现行引擎,默认策略 deny incoming、按业务最小放行(ufw allow from <运维网段> to any port 22 proto tcp);高危遗留服务直接停用(telnet、rsh、tftp、vsftpd匿名、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_logs与max_log_file按留存需要调整;关键规则写入/etc/audit/rules.d/(身份鉴别文件watchon/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 auditd、auditctl -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 chrony或chronyd)。/etc/chrony/sources.list(Debian 系新路径;旧版chrony.conf以现场为准)指向内部源,chronyc tracking与chronyc 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-version、lsb_release -a | cat /etc/kylin-release、/etc/os-release |
| 登录失败(旧代) | V20:pam_tally2 | CentOS 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 ssh | systemctl restart sshd |
| 强制访问控制 | AppArmor(aa-status) | SELinux/kysec(getenforce) |
| 防火墙 | ufw 或 nftables(通常无 firewalld) | firewalld/firewalld-nft |
| 包管理 | apt/dpkg --list | yum/dnf/rpm -qa |
| 提权组 | sudo 组 | wheel 组 |
| 认证日志 | /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 服务名为ssh(sshd单元通常不存在),systemctl restart sshd报 Unit not found 属正常而非加固失败;④ ufwenable前必须放行当前管理通道,否则远程会话被即刻切断;⑤ chrony 配置文件路径随 Debian 代际在chrony.conf与chrony/sources.list间演进,以现场包版本dpkg -L chrony输出为准。
关联文章
- 配套测评:32、统信UOS操作系统测评命令、银河麒麟-三级等保现场测评命令单
- 姊妹篇(RHEL 系):13、麒麟操作系统加固
- 控制点完整版:11、Linux操作系统加固手册、4、Linux主机加固操作手册
- 通用加固方案:17、加固方案总纲
- 取证记录:16、安全评估加固记录表3.0
- 高风险口径:22、高风险判定指引与加固对照表
- 板块目录:终端