13、麒麟操作系统加固
Categories:
5 分钟阅读
定位:银河麒麟桌面/服务器操作系统 V10 等保三级安全加固手册:按口令策略、登录失败处理、会话超时、账户三权分立、麒麟安全机制与 SELinux、远程访问与 SSH 加固、高危端口收敛、审计与日志、时间同步分节,并附与 CentOS 7 的主要差异对照。
适用版本:银河麒麟(Kylin)V10 服务器版/桌面版;统信 UOS、openEuler 可参考。V10 基于 RHEL8/openEuler 体系,登录失败处理用 pam_faillock、时间同步用 chrony,与老 CentOS 7 的 pam_tally2/ntp 不同。 配套文章:11、Linux操作系统加固手册(控制点完整版,本文为麒麟差异项速查)。
使用说明:
- 本文为加固操作手册:所有命令都会修改配置,可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置(设备
save与copy running-config/backup startup-configuration,主机备份/etc、注册表与关键业务数据),并准备可执行的回滚预案。- 先在测试环境或单台设备灰度验证,确认无业务影响后再批量推广;每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效(如 H3C 未
password-control enable、Linux 未对存量账户chage、Windows 未gpupdate /force)。- 示例中的地址、账户名、口令、路径均为演示值(如
PleaseChange@123、192.168.10.20、admin123),现场须替换为符合本单位口令策略与网络规划的真实值,严禁直接沿用文中示例口令;对外发布或归档时须对个人信息与内网管理地址脱敏。- 命令不存在、视图名或参数与本文不一致时,先用
display version/show version/winver确认版本与部署形态,再查阅对应版本官方文档换用等效命令;版本差异不得直接作为「无法整改」的结论,须给出替代措施并评估其实际效果。- 涉及账户、锁定、超时、防火墙与端口收敛的变更存在锁死自身风险:务必保留一条已验证的恢复通道(Console 口、带外管理口、堡垒机会话或另一管理员账户)后再实施。
- 加固完成后按「16、安全评估加固记录表3.0」逐项留痕(整改前后回显、操作人、时间、验证结论、回退情况),并纳入复测;测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准,本文的「加固要点」不构成最终测评结论。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点,并写明判定依据与承载该能力的上位组件。- 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则:控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统、虚拟化平台或云托管平台承载时,应注明测评单元边界后判定不适用或转由上位组件核查,不得机械按缺失判不符合。
- 产品版本确实不提供该能力(如老旧设备无 SNMPv3、无可信根、社区版无审计模块、已停止官方支持的操作系统)时,须核查替代措施并按替代措施的实际效果定档,不得直接判不适用;已停止支持的版本应同时提出升级或补偿控制建议。
一、口令策略
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)(身份鉴别信息具有复杂度要求并定期更换)
加固要点:按「复杂度 + 长度 + 老化 + 历史」四要素同时配置:最小长度不低于 8 位(管理账户与三级系统建议 12~16 位)、至少包含大写字母/小写字母/数字/特殊字符中三类、老化时间不超过 90 天、历史口令防重复不少于 5 次;配置后须对存量账户逐个下发生效(Linux
chage -M 90 用户名、设备侧用户组或本地用户粒度策略),仅改全局模板不追溯存量账户是现场最高频的整改回退点。三级系统另需核查最高权限账户是否同受复杂度与老化约束(enforce_for_root、password policy administrator)。验证方法:策略配置回显(设备
display password-control/display current-configuration | include password;Linuxgrep -E "^PASS_" /etc/login.defs、grep pwquality /etc/pam.d/system-auth*;Windowssecedit /export或net accounts)+ 存量账户抽查(chage -l 用户名、设备display local-user)+ 一次弱口令修改实测记录,证明策略真的拦截而非仅配置存在。
设备或主机存在空口令、出厂默认口令(admin/admin、cisco/cisco、huawei、h3c)或弱口令管理账户,或口令策略仅在模板中配置而未对存量账户生效,按《高风险判定指引》可直接判高风险。H3C 设备未执行 password-control enable 时全部老化、长度、组合与失败锁定配置实际不生效,属高频「已整改但无效」情形,复测必须重新实测而非只看配置。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
grep -vE "^#|^$" /etc/security/pwquality.conf
chage -l 用户名
加固操作
/etc/security/pwquality.conf:
minlen = 8
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1
- 口令有效期(对存量账户逐个生效):
chage -m 1 -M 90 -W 7 用户名 # 最小间隔 1 天 / 最长 90 天 / 过期前 7 天提示
旧版文章的 pam_tally2 --deny=5 在麒麟 V10 上默认不可用——V10 使用 pam_faillock 体系,见下一节。
二、登录失败处理(pam_faillock)
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(提供登录失败处理功能,限制非法登录次数)
加固要点:配置并启用「连续失败 N 次锁定 M 分钟」,N 建议 3
5 次、M 建议 1030 分钟,且必须覆盖最高权限账户(root / Administrator / super / privilege 15);同时保留紧急恢复通道(Console 口本地登录或带外管理口),避免锁定策略把运维人员一并锁在门外。Linux 按版本选择 pam_tally2(CentOS/RHEL 7 及更早)或 pam_faillock(RHEL 8+/麒麟 V10/openEuler),两套机制不可混配;Windows 须同时设置「账户锁定阈值」「锁定时间」「重置计数器」三项,仅设阈值不设计时器不生效。验证方法:配置回显(
grep -E "tally2|faillock" /etc/pam.d/*、display current-configuration | include wrong-password、secpol.msc账户锁定策略截图)+ 一次真实失败登录实测:连续输错至阈值后确认账户被锁定、锁定计时生效、pam_tally2 -u/faillock --user/display password-control blacklist能查到计数,并验证解锁命令可用;实测记录须含时间、操作人与被锁账户。
管理入口未配置任何登录失败处理措施且管理面对全网或互联网开放,可被无限次口令猜测时,按高风险线索记录;锁定策略未覆盖最高权限账户(root/Administrator/super/level-15),或未保留 Console/带外恢复通道导致锁定即失联,同样记录为高风险线索。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
grep -vE "^#|^$" /etc/security/faillock.conf
faillock --user 用户名
加固操作:编辑 /etc/security/faillock.conf:
deny = 5
unlock_time = 600
root_unlock_time = 600
audit
system-auth/sshd 的 PAM 栈默认已包含 pam_faillock(V10 出厂即有),通常只需改配置文件;手工解锁:faillock --user 用户名 --reset。
老版本(无 faillock.conf)回退 pam_tally2 方案:在 /etc/pam.d/system-auth 中配置 auth required pam_tally2.so deny=5 unlock_time=600。
三、会话超时
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(配置并启用结束会话、登录连接超时自动退出)
加固要点:所有管理入口(Console、VTY、SSH、RDP、Web 管理台、数据库会话)统一配置空闲超时,建议 5~10 分钟自动断开,超时值不得设为 0 或 never。Linux 用
TMOUT写入/etc/profile(并防止被普通用户覆盖,必要时readonly TMOUT或在 sshd_config 配ClientAliveInterval/ClientAliveCountMax);Windows 用「屏幕保护程序 + 恢复时显示登录屏幕」或组策略「交互式登录空闲时间限制」,服务器另需设置 RDP 会话的空闲与断开时限;设备侧用exec-timeout/idle-timeout,Console 与 VTY 线路须分别配置。验证方法:配置回显(
grep -rn TMOUT /etc/profile /etc/profile.d/、sshd -T | grep -Ei "clientalive"、show running-config | section line vty、display current-configuration configuration user-interface、组策略或注册表ScreenSaveTimeOut截图)+ 实测:登录后静置至阈值确认会话被自动断开且需重新鉴别;核查普通用户能否unset TMOUT绕过。
管理会话无任何空闲超时(TMOUT 未设置或为 0、设备 exec-timeout 0 0、RDP 会话永不注销、屏幕保护未启用),运维人员离岗后他人可直接接管已鉴别的高权限会话,按高风险线索记录。
判定口径详见 22、高风险判定指引与加固对照表。
echo 'export TMOUT=1800' >> /etc/profile # 空闲 30 分钟自动退出
source /etc/profile
四、账户三权分立(勿共用 wheel)
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)
加固要点:账户与权限一一对应、默认与多余账户已删除或停用、无共享账户、系统/安全/审计三类管理职责分离、关键文件与目录权限最小化、启用了强制访问控制(SELinux/AppArmor/Windows 完整性级别与 SACL)并达到用户级与文件级粒度 → 符合;有权限划分但存在越权账户、粒度不足或强制访问控制未启用 → 部分符合;统一使用超级账户运维、关键配置文件任意用户可写 → 不符合。
验证方法:账户与组清单、权限查询输出(
ls -l/icacls/getfacl)、默认账户处置记录、强制访问控制状态与策略输出、访问控制策略文档与授权审批记录、安全标记配置截图。
统一使用超级账户(root/Administrator)进行日常运维、系统与安全与审计三类管理职责未分离、关键鉴别信息文件(/etc/shadow、SAM)任意用户可读,或存在未处置的默认与共享账户时,属高风险线索;虚拟化平台管理账户权限未按角色最小化同样记录为高风险线索。
判定口径详见 22、高风险判定指引与加固对照表。
旧版文章把 sysadmin/secadmin/audadmin 全部加入 wheel——这不是权限分离,等于三个人都是超管。正确做法见下。
核查方法
cat /etc/group | grep -E "wheel|audit|sec"
sudo grep -r "NOPASSWD" /etc/sudoers /etc/sudoers.d/
加固操作
useradd sysadmin && useradd secadmin && useradd audadmin
usermod -G wheel sysadmin # 仅系统管理员可全面提权
# 安全管理员:仅账户与口令管理
echo 'secadmin ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root' > /etc/sudoers.d/secadmin
# 审计管理员:仅日志与审计查询
echo 'audadmin ALL=(root) /usr/bin/less /var/log/*, /usr/bin/ausearch, /usr/bin/aureport, /bin/cat /var/log/*' > /etc/sudoers.d/audadmin
chmod 440 /etc/sudoers.d/secadmin /etc/sudoers.d/audadmin
usermod -s /sbin/nologin 无用账户 # 停用多余账户
五、麒麟安全机制(kysec)与 SELinux
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)
核查方法
getenforce # SELinux 状态
getstatus # kysec 安全状态(麒麟特有,若无此命令则未装 kysec)
加固操作
- SELinux:
/etc/selinux/config中SELINUX=enforcing,或临时setenforce 1; - kysec(麒麟安全框架,含执行控制/文件完整性保护/三权分离能力):
setstatus启用并按《麒麟 kysec 管理员指南》配置规则,三级系统建议开启 enforcing 级策略; - 判定标准:至少一种强制访问控制机制处于启用状态(SELinux enforcing 或 kysec enforcing)。
六、远程访问与 SSH 加固
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 c)(远程管理时防止鉴别信息在传输中被窃听)、8.1.2.2 通信传输 a)b)
加固要点:远程管理一律走加密通道:设备侧仅放行 SSHv2/HTTPS 并关闭 Telnet/HTTP,RSA 密钥长度不低于 2048 位、禁用 CBC 模式与 3DES 等弱算法;主机侧禁用 Telnet/FTP,SSH 关闭 root 直接登录、优先密钥认证并按需启用「口令 + 密钥」双因素,RDP 启用 NLA 与 TLS 并把来源限制到管理网段或堡垒机。管理通道加密后仍须用 ACL/防火墙收敛来源——加密只解决窃听,不解决越权访问。
验证方法:设备侧
show ip ssh/display ssh server status确认版本与算法,show running-config | section line vty确认transport input ssh;主机侧sshd -T | grep -Ei "permitrootlogin|ciphers|macs|kexs"、ss -tlnp确认无 23/21 监听,WindowsGet-ItemProperty核查 RDP 的 NLA(UserAuthentication)与端口;从非管理网段发起连接实测被拒;必要时抓包确认无明文口令。
仍启用 Telnet/HTTP 明文管理,或 SSH 允许 root/Administrator 直接远程登录且使用弱口令,导致鉴别信息可被嗅探还原或管理入口可被爆破,按《高风险判定指引》可直接判高风险;管理端口未经边界限制直接对互联网开放时同样按高风险处理。
判定口径详见 22、高风险判定指引与加固对照表。
# /etc/ssh/sshd_config
PermitRootLogin no
MaxAuthTries 4
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers sysadmin@192.168.10.*
sshd -t && systemctl restart sshd
管理源地址限制(V10 推荐用 firewalld rich 规则,替代老 iptables 写法):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" accept'
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
七、高危端口收敛
对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)
加固要点:遵循最小安装、非必要服务与默认共享已关闭、高危端口未对外开放、管理终端来源受限(防火墙规则/跳板机/堡垒机)、具备数据有效性检验、能发现已知漏洞并及时修补、重要节点部署入侵检测并可出示针对本主机的告警 → 符合;部分措施到位(如有主机防火墙但未限制管理来源、有漏扫无修补闭环)→ 部分符合;管理端口对全网开放、存在已知高危漏洞未修补、无任何入侵检测措施 → 不符合(高风险)。
验证方法:已安装组件/角色清单、服务与监听端口输出、主机防火墙规则与拒绝实测、管理来源限制配置截图、补丁与漏洞修补记录、漏扫报告与整改工单、HIDS/EDR/NDR 部署与本主机告警截图。
存在已知高危漏洞未修补(含已停止官方支持的版本,如 CentOS 6/7、Windows Server 2008/2012、ESXi 6.x 及更早),或 SSH/RDP/管理端口未经边界限制直接对互联网开放,属高风险;从未开展漏洞扫描与基线核查亦按高风险线索记录。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
ss -tlnup
加固操作:业务未用的 135、137、139、445、593 等端口,先停对应服务再由防火墙兜底:
firewall-cmd --permanent --add-port=80/tcp # 仅放行业务端口(白名单模式)
firewall-cmd --reload
八、审计与日志(auditd + rsyslog)
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)b)
systemctl enable --now auditd
auditctl -s
审计规则示例(/etc/audit/rules.d/audit.rules):
-w /etc/passwd -p wa -k identity
-w /etc/sudoers -p wa -k identity
-a always,exit -F arch=b64 -S execve -k exec
日志转发(/etc/rsyslog.conf 末尾追加,标准写法):
*.* @@192.168.10.20:514 # @@=TCP;@=UDP
systemctl restart rsyslog
日志留存 ≥6 个月:/etc/logrotate.conf 中 weekly + rotate 26。
九、时间同步(chrony)
对应控制点:非独立控制点;支撑 8.1.4.3 安全审计 b)(审计记录应包含事件的日期和时间)与全网日志时间可关联
加固要点:全网设备与主机指向同一时钟源(内部 NTP 服务器,无外网出口时自建 stratum 源),并启用 NTP 认证防止时间被伪造;偏差控制在秒级、时区统一。设备不具备 NTP 能力或现场无法部署时,须在报告中写明并说明日志时间不可关联的影响,不得以手工设置时钟(
clock datetime)替代长期方案。验证方法:
show ntp status/show ntp associations、display ntp-service status、chronyc tracking/ntpq -p、Windowsw32tm /query /status;比对设备日志时间戳与真实时间、与上位日志审计系统的接收时间是否一致;核查 NTP 认证密钥配置。
全网无统一时钟源导致日志时间戳不可信、无法与上位告警和审计记录关联,安全事件溯源链条断裂时,按高风险线索记录(多与安全审计不符合项合并判定)。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
systemctl status chronyd
chronyc sources -v
加固操作:/etc/chrony.conf 指向统一时钟源:
server 192.168.10.1 iburst
systemctl restart chronyd && chronyc sources # 预期 ^* 标记为同步源
V10 默认 chrony 而非 ntp/ntpq;核查日志时间是否准确以此为准。
十、与 CentOS 7 的主要差异对照
| 事项 | CentOS 7(04/11 号) | 麒麟 V10 |
|---|---|---|
| 登录失败锁定 | pam_tally2 | pam_faillock(/etc/security/faillock.conf) |
| 时间同步 | ntp / ntpq | chrony / chronyc |
| 包管理 | yum | dnf(yum 兼容别名) |
| 强制访问控制 | SELinux | SELinux + kysec |
| 防火墙 | firewalld/iptables | firewalld(推荐 rich 规则) |
参考依据
- 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
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》,可在全国标准信息公共服务平台检索:http://openstd.samr.gov.cn/bzgk/gb/
- 麒麟软件官方站点(银河麒麟桌面/服务器操作系统产品文档入口):https://www.kylinos.cn/
- Linux man-pages(man7.org,pam_faillock/sshd/auditctl/chronyd 手册页):https://man7.org/linux/man-pages/
- 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准)——高风险情形判定口径,站内对照表:22、高风险判定指引与加固对照表
- 命令核验说明:Linux 侧命令与 PAM 模块以 man7.org 手册页(pam_faillock/pam_pwquality/sshd_config/auditctl/chronyd)核验,麒麟专有安全机制以麒麟软件官方站点公开的产品文档口径核验(核验日期 2026-09-02)。五处须留意:①
pam_tally2在麒麟 V10 所基于的较新发行版中已废弃,须改用pam_faillock,且必须在auth段的前后各配置一次(preauth与faillock)并在account段配置,漏配会导致计数不生效;修改 PAM 前须保留一个已登录会话并准备好本地控制台通道,配置错误会造成全员无法登录;② kysec 与 SELinux 同时启用时策略叠加,出现应用被拒须先用ausearch -m avc与 kysec 日志区分拦截来源,不得直接setenforce 0了事——关闭强制模式在测评中即为不符合项;③TMOUT写入/etc/profile会被用户 shell 覆盖,须同时写入/etc/profile.d/下独立脚本并以readonly TMOUT固定,核查时以普通账户实测生效;④ 麒麟各小版本(V10 SP1/SP2/SP3、桌面版与服务器版)的 kysec 命令行工具名与参数存在差异,命令报错时以随系统安装的官方手册为准并在记录表中写明版本;⑤ chrony 时间同步在离线内网环境须指定内部 NTP 源并核查chronyc tracking的实际偏移量,仅配置而未同步成功不构成符合。