13、麒麟操作系统加固

银河麒麟 V10 等保三级安全加固:/etc/login.defs 与 PAM 的 PASS_MIN_LEN/PASS_MAX_DAYS/PASS_WARN_AGE、pam_pwquality 的 minlen/dcredit/ucredit/lcredit/ocredit、pam_faillock 登录失败锁定(deny/unlock_time/fail_interval,替代已废弃的 pam_tally2)、TMOUT 与 sshd ClientAliveInterval/ClientAliveCountMax 会话超时、三权分立账户(系统管理员/安全保密管理员/安全审计员)与 wheel 组收敛、kysec 与 SELinux 强制模式核查及策略排障、sshd 禁止 root 直登与空口令、优先密钥认证、协议与算法收敛、AllowUsers/AllowGroups 与 ListenAddress、高危端口(23/21/135/139/445/3389 等)收敛与 firewalld/nftables 策略、auditd 规则与 rsyslog 外送、日志留存不少于 6 个月、chrony 时间同步与认证。

定位:银河麒麟桌面/服务器操作系统 V10 等保三级安全加固手册:按口令策略、登录失败处理、会话超时、账户三权分立、麒麟安全机制与 SELinux、远程访问与 SSH 加固、高危端口收敛、审计与日志、时间同步分节,并附与 CentOS 7 的主要差异对照。

适用版本:银河麒麟(Kylin)V10 服务器版/桌面版;统信 UOS、openEuler 可参考。V10 基于 RHEL8/openEuler 体系,登录失败处理用 pam_faillock、时间同步用 chrony,与老 CentOS 7 的 pam_tally2/ntp 不同。 配套文章:11、Linux操作系统加固手册(控制点完整版,本文为麒麟差异项速查)。

使用说明:

  • 本文为加固操作手册:所有命令都会修改配置,可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置(设备 savecopy running-configbackup startup-configuration,主机备份 /etc、注册表与关键业务数据),并准备可执行的回滚预案
  • 先在测试环境或单台设备灰度验证,确认无业务影响后再批量推广;每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效(如 H3C 未 password-control enable、Linux 未对存量账户 chage、Windows 未 gpupdate /force)。
  • 示例中的地址、账户名、口令、路径均为演示值(如 PleaseChange@123192.168.10.20admin123),现场须替换为符合本单位口令策略与网络规划的真实值,严禁直接沿用文中示例口令;对外发布或归档时须对个人信息与内网管理地址脱敏。
  • 命令不存在、视图名或参数与本文不一致时,先用 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_rootpassword policy administrator)。

验证方法:策略配置回显(设备 display password-control / display current-configuration | include password;Linux grep -E "^PASS_" /etc/login.defsgrep pwquality /etc/pam.d/system-auth*;Windows secedit /exportnet accounts)+ 存量账户抽查(chage -l 用户名、设备 display local-user)+ 一次弱口令修改实测记录,证明策略真的拦截而非仅配置存在。

核查方法

grep -vE "^#|^$" /etc/security/pwquality.conf
chage -l 用户名

加固操作

  1. /etc/security/pwquality.conf
minlen = 8
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1
  1. 口令有效期(对存量账户逐个生效):
chage -m 1 -M 90 -W 7 用户名     # 最小间隔 1 天 / 最长 90 天 / 过期前 7 天提示

二、登录失败处理(pam_faillock)

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(提供登录失败处理功能,限制非法登录次数)

加固要点:配置并启用「连续失败 N 次锁定 M 分钟」,N 建议 35 次、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-passwordsecpol.msc 账户锁定策略截图)+ 一次真实失败登录实测:连续输错至阈值后确认账户被锁定、锁定计时生效、pam_tally2 -u / faillock --user / display password-control blacklist 能查到计数,并验证解锁命令可用;实测记录须含时间、操作人与被锁账户。

核查方法

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 vtydisplay current-configuration configuration user-interface、组策略或注册表 ScreenSaveTimeOut 截图)+ 实测:登录后静置至阈值确认会话被自动断开且需重新鉴别;核查普通用户能否 unset TMOUT 绕过。

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)、默认账户处置记录、强制访问控制状态与策略输出、访问控制策略文档与授权审批记录、安全标记配置截图。

核查方法

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/configSELINUX=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 监听,Windows Get-ItemProperty 核查 RDP 的 NLA(UserAuthentication)与端口;从非管理网段发起连接实测被拒;必要时抓包确认无明文口令。

# /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 部署与本主机告警截图。

核查方法

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.confweekly + rotate 26

九、时间同步(chrony)

对应控制点:非独立控制点;支撑 8.1.4.3 安全审计 b)(审计记录应包含事件的日期和时间)与全网日志时间可关联

加固要点:全网设备与主机指向同一时钟源(内部 NTP 服务器,无外网出口时自建 stratum 源),并启用 NTP 认证防止时间被伪造;偏差控制在秒级、时区统一。设备不具备 NTP 能力或现场无法部署时,须在报告中写明并说明日志时间不可关联的影响,不得以手工设置时钟(clock datetime)替代长期方案。

验证方法show ntp status / show ntp associationsdisplay ntp-service statuschronyc tracking / ntpq -p、Windows w32tm /query /status;比对设备日志时间戳与真实时间、与上位日志审计系统的接收时间是否一致;核查 NTP 认证密钥配置。

核查方法

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_tally2pam_faillock(/etc/security/faillock.conf)
时间同步ntp / ntpqchrony / chronyc
包管理yumdnf(yum 兼容别名)
强制访问控制SELinuxSELinux + kysec
防火墙firewalld/iptablesfirewalld(推荐 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 段的前后各配置一次preauthfaillock)并在 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 的实际偏移量,仅配置而未同步成功不构成符合。

关联文章