银河麒麟-三级现场测评命令单

银河麒麟高级服务器操作系统(麒麟V10)三级等保现场测评取证命令单:nkvers、/etc/os-release、/etc/kylin-release 版本核查,umask 默认权限核查,/etc/passwd、login.defs、pwquality.conf 与 faillock.conf(pam_faillock 替代 pam_tally2)账户口令策略核查,sudoers 与 SUID/SGID 访问控制核查,auditd 与 rsyslog 审计及日志留存核查,kysec 与 SELinux 安全增强、最小安装补丁、sshd 算法、LUKS 磁盘加密、备份恢复与剩余信息保护核查。

示例版本:银河麒麟高级服务器操作系统 V10 SP1/SP2/SP3(桌面版命令大同小异,版本文件与 kysec 等差异见文中提示)

说明:V10 系列基于 openEuler 社区构建(官方口径),内核 4.19 系、dnf/rpm 包管理,命令体系与 RHEL8/CentOS 8 高度一致;版本文件名、kysec 工具与默认启用状态随 SP 版本及桌面/服务器版不同,文中已逐处标注。

定位:三级等保现场测评取证命令单,按功能小节组织核查命令、预期现象与判定要点。

系统版本核查

nkvers
  • 预期现象:应输出麒麟版本信息块,包含 Release(发行版全名)、Kernel(内核版本)与 Build(构建号)。
示例输出(节选)
############## Kylin Linux Version #################
Release: Kylin Linux Advanced Server release V10 (Sword)
Kernel: 4.19.90-52.22.v2207.ky10.x86_64
Build: Kylin Advanced Server V10SP3-Release-Build03-20230630
####################################################
  • 提示:nkvers 为麒麟自带版本查询命令,个别小版本或精简环境可能未安装,此时以 /etc/os-release、/etc/kylin-release 等文件为准。
cat /etc/os-release
  • 预期现象:官方示例关键字段包括 NAME=“Kylin Linux Advanced Server”、VERSION=“V10 (Sword)";ID_LIKE 表明其 RHEL 系兼容技术路线。版本代号随 SP 版本不同。
示例输出(节选)
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
ID_LIKE="rhel,fedora,centos"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"
cat /etc/kylin-release
  • 预期现象:应输出发行版版本字符串,类似 RedHat 系的 redhat-release。
示例输出(节选)
Kylin Linux Advanced Server release V10 (Sword)
  • 提示:版本文件名可能随 SP 版本与桌面/服务器版不同(常见还有 /etc/.kyinfo、/etc/.productinfo,个别环境存在 /usr/share/kylin-* 元信息文件),现场应逐个尝试并记录实际文件名。
cat /etc/.kyinfo
  • 预期现象:应输出键值形式的版本元信息,关键字段包括 name、milestone(含 SP 与发布批次)、arch、beta。
示例输出(节选)
name=Kylin
milestone=Server-V10-SP3-General-Release-2212
arch=x86_64
beta=False
...
cat /etc/.productinfo
  • 预期现象:应输出产品名称与版本描述字符串(格式随版本而异)。
示例输出(节选)
Kylin Linux Advanced Server
V10 (Sword)
uname -a
  • 预期现象:应显示主机名、内核版本、架构等信息;V10 支持 x86_64 与 aarch64(飞腾、鲲鹏等国产平台)。
示例输出(节选)
Linux demo-web01 4.19.90-52.22.v2207.ky10.x86_64 #1 SMP Mon Jun 26 16:32:07 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
cat /proc/version
  • 预期现象:应显示内核版本与编译器信息。
示例输出(节选)
Linux version 4.19.90-52.22.v2207.ky10.x86_64 (gcc (GCC) 7.3.0, GNU ld version 2.31.1-23.0.1.ky10) #1 SMP Mon Jun 26 16:32:07 CST 2023
rpm -qa | grep -i kylin
  • 预期现象:应筛出麒麟品牌相关软件包(如 kylin-release 等),包名与版本随部署而异;可结合 rpm -qf /etc/kylin-release 反查版本文件所属包。
示例输出(节选)
kylin-release-1.3.5-3.ky10.noarch
kylin-background-upgrade-2.0.8-2.ky10.x86_64
(实际包名与版本随部署而异)
df -h
  • 预期现象:应显示磁盘分区、挂载点与容量,作为资产基线留存;如存在 LUKS 加密分区可在此初见端倪,进一步核查见数据完整性与保密性小节。
示例输出(节选)
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/klas-root     50G   12G   39G  24% /
/dev/sda1               1020M  201M  820M  20% /boot
tmpfs                    3.9G     0  3.9G   0% /dev/shm
  • 提示:麒麟授权(许可)状态由官方授权工具管理,命令与文件随版本不同,现场以随机《系统管理员指南》与官方知识库为准,本文不列具体命令。

  • 对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)——本小节用于确认被测主机版本与安装范围,为最小安装核查提供基线。

  • 判定要点:仅作资产与版本确认,不单独下结论,结合 8.1.4.4 的组件安装与补丁状态综合判定符合/部分符合;版本代号与 SP 级别应同资产台账、测评对象说明一致。

  • 取证要求:留存 nkvers、os-release、kylin-release、.kyinfo、uname 输出(截图或文本),标注资产编号与测评时间。

网络与默认权限掩码核查

ip addr
  • 预期现象:应显示网卡与 IP 信息。
示例输出(节选)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.10.23/24 brd 192.168.10.255 scope global noprefixroute eth0
umask
  • 预期现象:应输出当前 shell 的权限掩码值,实际值随系统配置而异。
示例输出(节选)
0022
  • 提示:RHEL8/CentOS 8 同源系统常见默认 umask 为 0022,加固实践建议 0027;全局取值来源包括 /etc/profile、/etc/bashrc、/etc/login.defs(UMASK)等,现场应逐处核对是否一致。

  • 对应控制点:GB/T 22239-2019 8.1.3 安全区域边界(就近条款,确认主机接入位置与隔离情况);umask 对应 8.1.4.2 访问控制(最小权限与默认权限)。

  • 判定要点:ip addr 用于确认接入位置,发现同一主机跨接内外网应转入安全通信网络/区域边界判定;umask 为 0027 及更严为符合,0022 结合重要文件权限抽查综合判定。

  • 取证要求:留存 ip addr、umask 输出,注明 umask 生效来源(/etc/profile、/etc/bashrc、/etc/login.defs)。

账户与口令策略核查

cat /etc/passwd
  • 预期现象:应列出本地账户。
示例输出(节选)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
appuser:x:1000:1000::/home/appuser:/bin/bash
cat /etc/shadow
  • 预期现象:应列出口令散列和口令状态。
示例输出(节选)
root:$6$rounds=4096$AbCdEf$XyZ1234567890abcdef…::0:99999:7:::
bin:*:19375:0:99999:7:::
...
appuser:$6$rounds=4096$GhIjKl$0987654321fedcba…:19876:0:90:7:30:::
  • 提示:shadow(5) 明确口令字段为空即可无口令登录,!* 表示口令锁定/不可用口令登录。
cat /etc/login.defs
  • 预期现象:应显示口令老化参数。
示例输出(节选)
PASS_MAX_DAYS	90
PASS_MIN_DAYS	7
PASS_MIN_LEN	12
PASS_WARN_AGE	14
...
UMASK		027
  • 提示:PASS_MIN_LEN 已由 PAM 模块(pam_pwquality 的 minlen)取代,口令长度以 PAM 生效配置为准;PASS_MAX_DAYS 等仅在创建账户时写入 /etc/shadow,存量账户应结合 chage -l 逐户核对。
cat /etc/pam.d/system-auth
  • 预期现象:应显示口令复杂度与登录失败锁定相关模块配置;V10 的 PAM 体系与 RHEL8 一致,登录失败锁定已由 pam_faillock 取代旧版 pam_tally2(pam_tally2 已废弃)。
示例输出(节选)
auth        required      pam_faillock.so preauth audit silent deny=5 unlock_time=600
...
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
...
cat /etc/pam.d/password-auth
  • 预期现象:应显示另一套认证栈中的失败锁定或认证策略配置(与 system-auth 对应)。
示例输出(节选)
auth        required      pam_faillock.so preauth audit silent deny=5 unlock_time=600
...
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
...
session     required      pam_loginuid.so
grep -E '^(minlen|minclass|dcredit|ucredit|lcredit|ocredit)' /etc/security/pwquality.conf
  • 预期现象:应显示口令复杂度参数;未显式配置时各项为注释,实际生效值以 PAM 行参数为准(pwquality.conf(5) 由 libpwquality 包提供,可用 man 5 pwquality.conf 在被测机上查看)。
示例输出(节选)
minlen = 12
minclass = 3
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
grep -E '^(deny|unlock_time|root_unlock_time|fail_interval)' /etc/security/faillock.conf
  • 预期现象:应显示登录失败锁定参数;faillock.conf(5) 默认 deny=3、unlock_time=600(10 分钟)、fail_interval=900,root_unlock_time 未设置时沿用 unlock_time,且隐含对 root 生效(even_deny_root)。现场以被测机实际配置为准。
示例输出(节选)
deny = 5
unlock_time = 600
root_unlock_time = 600
  • 提示:锁定参数还可直接写在 PAM 行上(如示例中 pam_faillock 行的 deny=5 unlock_time=600),/etc/security/faillock.conf 与 PAM 行参数应结合核查,取实际生效值。
faillock --user appuser
  • 预期现象:应显示该用户的失败认证记录(When、Type、Source);不带 --reset 时仅为查看,不改动任何数据。核验失败锁定功能是否实际生效可用抽查口令触发(变更类操作,须履行审批并控制影响)。
示例输出(节选)
appuser:
When                Type  Source
2026-09-03 09:12:41 FAIL  203.0.113.77
2026-09-03 09:13:02 FAIL  203.0.113.77
chage -l root
  • 预期现象:应显示 root 账户口令期限信息。
示例输出(节选)
最近一次密码修改时间:3月 15, 2026
密码过期时间:6月 13, 2026
密码失效时间:从不
...
最少数量的天数:密码修改之间间隔的天数:7
最多数量的天数:密码修改之间间隔的最大天数:90
cat /etc/ssh/sshd_config
  • 预期现象:应显示 SSH 登录控制参数。
示例输出(节选)
PermitRootLogin no
PermitEmptyPasswords no
MaxAuthTries 4
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers appuser opsadmin
...
sshd -T | grep -E 'ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyacceptedalgorithms'
  • 预期现象:应输出 SSH 服务端当前生效的算法配置。
示例输出(节选)
ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr
macs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
kexalgorithms curve25519-sha256,diffie-hellman-group14-sha256
hostkeyalgorithms rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256
pubkeyacceptedalgorithms rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256
  • 提示:sshd -T 为扩展测试模式,仅校验配置并输出生效配置后退出、不改变服务状态,需 root 执行;ssh -Q 列出的是本机支持的算法全集,不代表已启用,启用值以 sshd -T 输出为准。
ssh -V
  • 预期现象:应输出 OpenSSH 版本号;V10 系列自带 OpenSSH 8.x 系,仅支持 SSH2 协议(传输保密性核查见数据完整性与保密性小节)。
示例输出(节选)
OpenSSH_8.2p1, OpenSSL 1.1.1g  21 Apr 2020
(实际版本随 SP 版本与补丁而异)
cat /etc/profile
  • 预期现象:应能核查 TMOUT 等会话控制参数。
示例输出(节选)
HISTSIZE=1000
...
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
...
export TMOUT=600
readonly TMOUT
  • 提示:加固实践建议在 /etc/profile 末尾增加 export TMOUT=300(示例值)并配合 readonly TMOUT;如部署了双因子认证(USB-Key、OTP、堡垒机+动态口令等),多为带外/第三方组件,OS 命令通常无法直接取证,应以现场演示、PAM 配置链与带外平台记录为准。

  • 对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)b)c)(身份标识唯一、口令复杂度并定期更换,登录失败处理与超时退出,远程管理防窃听);账户分配与清理对应 8.1.4.2 访问控制 a)c)。

  • 判定要点:口令复杂度(minlen、minclass)与有效期(PASS_MAX_DAYS≤90)按策略核对;未配置任何登录失败处理、存在空口令或弱口令判不符合,PermitRootLogin no 为倾向符合;faillock 配置存在但未实际生效(如 PAM 链缺失)应现场实测确认。

  • 取证要求:留存 passwd/shadow(口令字段脱敏)、login.defs、pwquality 与 faillock 生效配置、PAM 文件、sshd_config、sshd -T、chage、faillock 查询输出,必要时报文验证口令复杂度。

  • 高风险提示:空口令/默认口令/弱口令,或使用 Telnet、FTP 等明文协议远程管理,可判高风险,见 22、高风险判定指引与加固对照表

访问控制核查

ls -l /etc/passwd /etc/shadow
  • 预期现象:应显示账户文件权限;RHEL8 系下 /etc/shadow 常见 000(root 经 capabilities 读取),600 亦常见,关键是确认非 root 账户不可读写。
示例输出(节选)
-rw-r--r--. 1 root root 1453 Aug 24 08:30 /etc/passwd
----------. 1 root root  892 Aug 24 08:30 /etc/shadow
awk -F: '($2=="") {print $1}' /etc/shadow
  • 预期现象:若存在空口令账户应输出账号名;无空口令时无输出。
示例输出(节选)
(无空口令账户时无输出;存在时应仅输出账号名,例如)
svcbackup
awk -F: '($3==0 && $1!="root") {print $1}' /etc/passwd
  • 预期现象:排查非 root 的 UID 0 账户;正常时应无输出。
示例输出(节选)
(无异常时无输出;存在时应仅输出账号名,例如)
tools
  • 提示:三权分立核查——V10 依据 GB/T 20272(结构化保护级)提供三权分立机制,划分为系统管理员、安全管理员、审计管理员三类角色;实际账户划分与命名以现场部署文档为准,结合 /etc/passwd、sudoers 与审计权限分配核对三类权限是否相互制约(如审计权限独占)。
visudo -c
  • 预期现象:应以只读方式校验 sudoers 语法并输出解析结果,不修改文件。
示例输出(节选)
/etc/sudoers: parsed OK
/etc/sudoers.d/ops: parsed OK
grep -rnE 'NOPASSWD|%wheel|%sudo' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
  • 预期现象:应列出 sudo 授权规则;重点关注 NOPASSWD 过量授权与 wheel 组范围是否收敛。
示例输出(节选)
/etc/sudoers:110:%wheel	ALL=(ALL)	ALL
/etc/sudoers:111:# %wheel	ALL=(ALL)	NOPASSWD: ALL
find / -xdev -type f -perm -4000 2>/dev/null
  • 预期现象:应输出全盘 SUID 文件清单(只读查找);SGID 可另用 -perm -2000 查询。清单应与系统基线比对,无多余 SUID/SGID 程序。
示例输出(节选)
/usr/bin/passwd
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/sudo
/usr/sbin/unix_chkpwd
...
  • 对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)b)c)d)e)(账户分配、默认账户与多余账户处置、权限分离与最小权限、授权主体配置访问控制策略)。
  • 判定要点:存在空口令账户或多余/停用账户未清理、非 root 的 UID 0 账户、sudo NOPASSWD 过量授权判不符合或部分符合;已删除/禁用默认多余账户、按角色划分三权、SUID/SGID 清单与基线一致为符合。
  • 取证要求:留存 shadow/passwd 权限、空口令与 UID 0 检查输出(无输出也须截屏留证)、三权分立账户划分说明、visudo -c 与 sudoers 规则、SUID/SGID 清单。

安全审计核查

service auditd status
  • 预期现象:应显示审计服务状态。
示例输出(节选)
Redirecting to /bin/systemctl status auditd.service
● auditd.service - Security Auditing Service
   Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2026-09-03 08:30:10 CST; 2h ago
service rsyslog status
  • 预期现象:应显示日志服务状态。
示例输出(节选)
Redirecting to /bin/systemctl status rsyslog.service
● rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2026-09-03 08:30:11 CST; 2h ago
 Main PID: 1088 (rsyslogd)
auditctl -l
  • 预期现象:应逐条列出当前生效的审计规则。
示例输出(节选)
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-a always,exit -F arch=b64 -S execve -k exec_monitor
cat /etc/audit/rules.d/audit.rules
  • 预期现象:应显示审计规则文件内容(持久化规则)。
示例输出(节选)
## First rule - delete all
-D
...
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-a always,exit -F arch=b64 -S execve -k exec_monitor
-e 2
grep -E '^(max_log_file|max_log_file_action|num_logs)' /etc/audit/auditd.conf
  • 预期现象:应显示审计日志轮转与留存参数;auditd.conf(5) 说明 max_log_file_action 可取 ignore/syslog/exec/suspend/rotate/keep_logs,num_logs 仅在 rotate 时生效(小于 2 不轮转、上限 999),keep_logs 不受 num_logs 限制。
示例输出(节选)
max_log_file = 8
max_log_file_action = ROTATE
num_logs = 5
  • 提示:日志留存不少于 6 个月的口径需结合单文件上限、轮转数量与外送集中存储统一核算(如 keep_logs 或 rotate+日志服务器外送),仅本机 rotate 而数量不足以覆盖 6 个月时应判部分符合。
cat /etc/rsyslog.conf
  • 预期现象:应显示日志规则和转发配置。
示例输出(节选)
#### RULES ####
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
...
# 远程转发示例(如已配置)
*.* @@192.168.20.10:514
ls -l /var/log/messages /var/log/secure /var/log/audit/audit.log
  • 预期现象:应显示主要日志文件权限、属主、大小、时间。
示例输出(节选)
-rw-------. 1 root root 1048576 Sep  3 10:20 /var/log/messages
-rw-------. 1 root root 262144 Sep  3 09:58 /var/log/secure
-rw-------. 1 root root 2097152 Sep  3 10:22 /var/log/audit/audit.log
tail -n 20 /var/log/audit/audit.log
  • 预期现象:应输出最近 20 条审计日志,字段包含日期时间、事件类型、账户、结果等要素。
示例输出(节选)
type=USER_AUTH msg=audit(1771893601.231:8812): pid=456789 uid=0 auid=1000 msg='op=PAM:authentication acct="appuser" exe="/usr/sbin/sshd" hostname=203.0.113.50 addr=203.0.113.50 terminal=ssh res=success'
type=CRED_ACQ msg=audit(1771893601.240:8813): pid=456789 uid=0 auid=1000 msg='op=PAM:setcred acct="appuser" exe="/usr/sbin/sshd" hostname=? addr=? terminal=ssh res=success'
...
journalctl -n 20 --no-pager
  • 预期现象:应输出最近 20 条 systemd 日志,可与 rsyslog 文件交叉验证日志连续性。
示例输出(节选)
Sep 03 10:18:02 demo-web01 systemd[1]: Started Session 342 of user root.
Sep 03 10:18:35 demo-web01 kernel: TCP: request_sock_TCP: Possible SYN flooding on port 80. Sending cookies.
...
last
  • 预期现象:应显示成功登录记录。
示例输出(节选)
opsadmin pts/0        203.0.113.50     Thu Sep  3 10:02   still logged in
root     pts/1        192.168.10.5     Wed Sep  2 17:44 - 19:02  (01:17)
reboot   system boot  4.19.90-52.22.v2 Thu Sep  3 08:29 - 10:25  (01:55)
...
wtmp begins Tue Jan  6 09:00:01 2026
lastb
  • 预期现象:应显示失败登录记录。
示例输出(节选)
root     ssh:notty    203.0.113.77     Thu Sep  3 04:12 - 04:12  (00:00)
admin    ssh:notty    203.0.113.77     Thu Sep  3 04:11 - 04:11  (00:00)

btmp begins Fri Jul 31 00:01:02 2026
  • 对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)–d)(审计覆盖每个用户与重要事件,记录含日期时间/用户/事件类型/结果,审计记录保护并定期备份,审计进程防未经授权中止)。
  • 判定要点:auditd/rsyslog 运行、审计规则覆盖用户与重要安全事件、日志留存不少于 6 个月并外发集中存储为符合;审计未启用或覆盖缺失判不符合,留存周期不足或无保护判部分符合;审计进程保护可结合规则文件 -e 2(不可修改模式)与权限核查说明。
  • 取证要求:留存服务状态、auditctl -l 与 audit.rules、auditd.conf 留存参数、rsyslog.conf(含远程转发配置)、日志文件权限、tail/journalctl 输出及留存周期策略说明。
  • 高风险提示:设备无安全审计功能或审计数据不完整、无法满足事件追溯要求,可判高风险,见 22、高风险判定指引与加固对照表

边界防护与端口核查

systemctl status firewalld
  • 预期现象:应显示 firewalld 状态;如以 iptables/nftables 或上层安全设备实现边界控制,应改查对应配置并说明。
示例输出(节选)
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2026-09-03 08:30:12 CST; 2h ago
firewall-cmd --list-all
  • 预期现象:应显示 zone、services、ports 等规则。
示例输出(节选)
public (active)
  target: default
  interfaces: eth0
  services: dhcpv6-client ssh
  ports: 80/tcp 443/tcp
  protocols:
  masquerade: no
  forward-ports:
  rich rules:
iptables -nvL
  • 预期现象:应按链输出规则和计数器(只读查看)。
示例输出(节选)
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 120K   12M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
  350 24560 ACCEPT     tcp  --  *      *       192.168.10.0/24      0.0.0.0/0           tcp dpt:22
...
Chain OUTPUT (policy ACCEPT 98765 packets, 45M bytes)
ss -lntp
  • 预期现象:应显示监听端口及进程信息;netstat 由 net-tools 包提供、V10 默认可能未安装,iproute2 的 ss 为等效替代。
示例输出(节选)
State  Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
LISTEN 0      128          0.0.0.0:22           0.0.0.0:*      users:(("sshd",pid=1123,fd=3))
LISTEN 0      80         127.0.0.1:3306         0.0.0.0:*      users:(("mysqld",pid=2101,fd=32))
LISTEN 0      511                *:80                 *:*      users:(("nginx",pid=2205,fd=6),("nginx",pid=2206,fd=6))
  • 对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 b)(关闭不必要的服务和端口、限制管理端口接入源);主机防火墙访问控制就近对应 8.1.3.2 访问控制。
  • 判定要点:防火墙按业务最小化开放且管理端口限制源地址为符合;SSH 等管理端口对全网开放判部分符合;23/21/445 等高危端口在监听清单出现时应结合用途与边界措施说明。
  • 取证要求:留存 firewalld 状态与 firewall-cmd –list-all 或 iptables -nvL、ss -lntp 监听端口输出,并与业务用途比对确认无多余端口。

最小安装、补丁与入侵防范核查

rpm -qa | wc -l
  • 预期现象:应输出已安装软件包总数,与同版本最小安装基线比对(服务器版最小安装通常为数百包,示例值仅示意)。
示例输出(节选)
346
dnf list installed
  • 预期现象:应列出软件包清单(rpm -qa 等效,均为只读查询)。
示例输出(节选)
Installed Packages
NetworkManager.x86_64            1:1.22.10-5.ky10       @anaconda
audit.x86_64                     3.0.7-3.ky10           @System
...
zlib.x86_64                      1.2.11-26.ky10         @System
rpm -q kernel
  • 预期现象:应输出内核包版本,结合官方安全公告核对是否为已修复版本。
示例输出(节选)
kernel-4.19.90-52.22.v2207.ky10.x86_64
  • 提示:漏洞与补丁口径以麒麟官方安全公告/补丁页面与现场补丁记录为准,不在本文列出具体 CVE 编号;涉及历史安全事件(如火焰病毒等)的核查同样以官方公告与漏扫报告为依据。
systemctl list-unit-files --type=service --state=enabled
  • 预期现象:应列出全部开机自启服务,逐项确认与业务相关。
示例输出(节选)
UNIT FILE                    STATE           VENDOR PRESET
auditd.service               enabled         enabled
crond.service                enabled         enabled
firewalld.service            enabled         enabled
rsyslog.service              enabled         enabled
sshd.service                 enabled         enabled
...
rpm -qa | grep -Ei 'telnet-server|rsh-server|tftp-server|ypserv|talk-server'
  • 预期现象:不应出现 telnet、rsh、tftp 等遗留明文/高危服务的服务端软件包;有输出应进一步核查其用途与防火墙控制。
示例输出(节选)
(合规时无输出)
grep -E '^(MaxAuthTries|LoginGraceTime|PermitRootLogin|AllowUsers|DenyUsers|AllowGroups|DenyGroups)' /etc/ssh/sshd_config
  • 预期现象:应能看到 SSH 暴力破解防护与访问控制相关参数。
示例输出(节选)
PermitRootLogin no
MaxAuthTries 4
LoginGraceTime 30
AllowUsers appuser opsadmin
sshd -T | grep -E 'maxauthtries|logingracetime|permitrootlogin|allowusers|denyusers|allowgroups|denygroups'
  • 预期现象:应输出 SSH 服务端当前生效的对应参数值。
示例输出(节选)
allowgroups none
allowusers appuser opsadmin
denygroups none
denyusers none
logingracetime 30
maxauthtries 4
permitrootlogin no
rpm -qa | grep -Ei 'fail2ban|aide|ossec|wazuh|snort|suricata'
  • 预期现象:若部署入侵防范/主机入侵检测软件,应出现对应包名;未部署则无输出。
示例输出(节选)
aide-0.16.2-3.ky10.x86_64
fail2ban-0.11.2-3.ky10.noarch
  • 对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)c)(最小安装、仅安装必要组件,能发现可能存在的安全漏洞并及时修补,关闭不必要服务与端口);SSH 防暴力破解与访问控制同样对应本条与 8.1.4.2。
  • 判定要点:安装与业务无关的组件/中间件、遗留明文服务未关闭、存在高危漏洞长期未修补判部分符合或不符合;MaxAuthTries/LoginGraceTime 收紧(常见加固建议 3/60)、PermitRootLogin no、AllowUsers 白名单及 fail2ban 生效为符合,仅依赖默认值(MaxAuthTries 6、LoginGraceTime 120)判部分符合。
  • 取证要求:留存 rpm 包数与清单、内核补丁版本与官方安全公告比对记录、enabled 服务清单、遗留服务核查输出(无输出也须截屏留证)、sshd -T 生效参数、入侵检测软件运行状态。
  • 高风险提示:使用 telnet 等明文协议承载远程管理、存在可被利用且无补丁的高危漏洞,可判高风险,见 22、高风险判定指引与加固对照表

恶意代码防范与安全增强核查

sestatus
  • 预期现象:应显示 SELinux status、Current mode 等字段。
示例输出(节选)
SELinux status:                 enforcing
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Memory protection checking:     actual (secure)
getenforce
  • 预期现象:通常为 Enforcing、Permissive 或 Disabled。
示例输出(节选)
Enforcing
getstatus
  • 预期现象:KYSEC(麒麟安全框架)启用时应显示安全状态与各控制模块开关;服务器版默认一般未启用 kysec,桌面版多经图形化「安全中心」配置。
示例输出(节选)
KySec status: enabled
...
(输出格式随版本而异)
  • 提示:kysec 状态查看/设置工具名与模式取值(如 enable/softmode/disable,softmode 俗称"上帝模式”,仅审计不拦截)随 SP 版本与桌面/服务器版不同,部分版本未集成,现场以随机《系统管理员指南》与官方知识库为准;核查时仅查看状态,不得执行 setstatus 等变更类命令。生产环境长期处于关闭或软模式应在报告中说明原因。
ps -ef | grep -Ei 'clamd|kesl|esets|hips'
  • 预期现象:部署第三方防恶意代码软件时应出现对应引擎守护进程(clamd、kesl 等仅为常见示例,进程/服务名以所用产品手册为准);同时可用 systemctl list-unit-files --type=service --state=enabled 核查其服务是否开机自启。仅依赖 kysec/SELinux 而无防恶意代码措施时应结合可信验证机制说明。
示例输出(节选)
clamav    2101      1  0 08:30 ?        00:00:12 clamd --config-file=/etc/clamd.d/scan.conf
...
  • 对应控制点:GB/T 22239-2019 8.1.4.5 恶意代码防范、8.1.4.6 可信验证;SELinux/kysec 强制访问控制就近对应 8.1.4.2 访问控制。
  • 判定要点:部署防恶意代码软件且病毒库/规则正常更新、或采用可信验证机制及时识别并阻断为符合;SELinux/kysec 处于 Disabled 或软模式不单独判不符合,但应在报告中说明原因与补偿措施。
  • 取证要求:留存 sestatus/getenforce、getstatus 输出(如适用)、防恶意代码软件名称/版本/进程与病毒库更新记录、可信验证机制说明。
  • 高风险提示:主机无恶意代码防范措施又无可信验证机制,可判高风险,见 22、高风险判定指引与加固对照表

数据完整性与保密性核查

lsblk -f
  • 预期现象:应显示块设备与文件系统类型;系统盘或数据盘采用 LUKS 加密时应看到 crypto_LUKS 类型及加密分区映射。
示例输出(节选)
NAME                  FSTYPE      LABEL UUID                                 MOUNTPOINT
sda
├─sda1                ext4              8f3c...-...                          /boot
└─sda2                crypto_LUKS       5a9d...-...
  └─luks-5a9d...      ext4              b21e...-...                          /
  • 提示:存储保密性以 LUKS 等磁盘加密或应用层加密实现为准,未启用磁盘加密不直接判不符合,应结合鉴别数据、重要数据的存储加密措施综合判定;传输保密性以 SSH(见账户与口令策略小节 ssh -Vsshd -T 算法输出,OpenSSH 8.x 仅支持 SSH2)与 TLS 等密码协议核查。
lsattr /etc/passwd /etc/shadow /etc/group
  • 预期现象:应显示关键账户文件的隐藏属性(i 为不可修改位);加固常用 chattr +i 锁定关键文件,属变更类操作,现场只核查不执行。
示例输出(节选)
---------------- /etc/passwd
---------------- /etc/shadow
---------------- /etc/group
grep -rn 'password_pbkdf2' /boot/grub2/grub.cfg /boot/grub2/user.cfg 2>/dev/null
  • 预期现象:已配置 GRUB 口令时应输出 password_pbkdf2 行及散列;未配置则无输出(作为增强项说明,不单独判不符合)。
示例输出(节选)
/boot/grub2/grub.cfg:118:password_pbkdf2 root grub.pbkdf2.sha512.10000.A1B2C3...
  • 提示:UEFI 机型引导配置通常位于 /boot/efi/EFI/kylin/,以实际引导方式为准,可另核 /etc/grub.d/ 下相关片段。

  • 对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性(校验技术/密码技术保证重要数据传输与存储完整性)、8.1.4.8 数据保密性(密码技术保证重要数据传输与存储保密性)。

  • 判定要点:远程管理通道均为 SSH/HTTPS 等加密协议、鉴别数据以散列存储为符合;存储保密性按磁盘加密或应用层加密实际情况判定;关键文件 chattr 锁定、GRUB 口令为增强佐证。

  • 取证要求:留存 lsblk -f(含 crypto_LUKS 分区或未加密说明)、ssh -V/sshd -T 算法输出、lsattr 与 GRUB 口令核查输出、加密实现方式说明。

备份恢复核查

ls -l /etc/cron.daily /etc/cron.weekly /etc/cron.d
  • 预期现象:应列出周期计划任务目录内容,确认是否存在备份/归档类脚本及其调度安排。
示例输出(节选)
/etc/cron.daily:
total 12
-rwxr-xr-x. 1 root root  618 ... logrotate
-rwxr-xr-x. 1 root root  351 ... backup-etc.sh

/etc/cron.weekly:
total 0

/etc/cron.d:
total 8
-rw-r--r--. 1 root root 128 ... sysstat
crontab -l
  • 预期现象:应列出 root 用户计划任务(只读查看),可与 /var/spool/cron/ 下文件互证。
示例输出(节选)
# 每日 02:00 备份 /etc 配置(示例)
0 2 * * * /usr/local/sbin/backup-etc.sh >> /var/log/backup-etc.log 2>&1
  • 提示:重要数据的本地/异地备份、热冗余与恢复演练以运维管理制度、备份系统记录与演练报告取证;OS 命令仅核查配置备份脚本是否存在及调度正常。/etc 等关键配置的备份内容应现场抽样验证可恢复性(属于变更/演练操作,须履行审批)。

  • 对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)b)(本地备份恢复、异地实时备份与热冗余)。

  • 判定要点:主机作为测评对象时,本控制点通常结合所承载数据库/应用系统的备份策略综合判定;仅有配置备份脚本而无重要数据备份与恢复演练记录判部分符合。

  • 取证要求:留存 cron 目录与 crontab 输出、备份脚本内容、备份系统策略与恢复演练记录。

剩余信息保护核查

grep -nE 'HISTSIZE|HISTFILESIZE' /etc/profile
  • 预期现象:应显示命令历史记录条数设置(RHEL8 系默认 HISTSIZE=1000);加固实践建议减小或结合 TMOUT 控制会话驻留。
示例输出(节选)
HISTSIZE=1000
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
grep -rn 'pam_lastlog' /etc/pam.d/ 2>/dev/null
  • 预期现象:应显示上次登录信息提示相关 PAM 配置(RHEL8 系通常在 postlogin 文件中,showfailed 显示上次失败登录);该文件存在性随版本不同,如不存在则跳过并记录。
示例输出(节选)
/etc/pam.d/postlogin:session     optional     pam_lastlog.so silent noupdate showfailed
grep -vE '^#|^$' /usr/lib/tmpfiles.d/tmp.conf
  • 预期现象:应显示 /tmp、/var/tmp 的清理规则与老化时间(示例为 systemd tmpfiles 机制,行内末尾数字为老化天数,随版本而异)。
示例输出(节选)
q /tmp 1777 root root 10d
x /tmp/systemd-private-*
...
  • 对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)(鉴别信息所在存储空间释放或重新分配前完全清除,敏感数据存储空间同样处理)。
  • 判定要点:本控制点以系统默认内存/存储释放机制说明为主,命令历史(HISTSIZE)、会话超时(TMOUT)、上次登录提示与临时文件老化策略作为常见佐证;单纯缺省值不直接判不符合,结合整体保护措施判定。
  • 取证要求:留存 HISTSIZE/TMOUT 相关输出、pam_lastlog 配置、tmpfiles 清理规则输出及系统剩余信息保护机制说明。

个人信息保护判定说明

  • 适用性说明:操作系统作为通用软件平台,自身一般不采集、存储业务层面的用户个人信息(如手机号、身份证号),个人信息通常由其承载的业务应用系统、数据库处理。对操作系统测评对象,本控制点一般记录"不适用",并注明理由:个人信息处理活动由业务应用系统与数据库测评对象覆盖。
  • 例外情形:如现场发现系统日志、账户备注字段(GECOS)、运维脚本中确有个人信息存储或展示,应转入访问控制与安全审计判定其保护与最小化情况,并在报告中说明,必要时改判部分适用。
  • 取证要求:留存适用性判定说明与现场核查记录(如 /etc/passwd GECOS 字段无个人敏感信息的抽查输出)。
  • 对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)(仅采集和保存业务必需的用户个人信息,禁止未授权访问和非法使用)。

参考依据

关联文章