type
Post
status
Published
date
May 21, 2026
slug
summary
服务器基线核查checklist
tags
服务器
等保
category
技术分享
icon
password
一、身份鉴别
1.1 账号管理
- 查看命令结果,第三字段不存在相同数字、用户名不存在相同名称(唯一性)。

1.2 登陆失败处理
登录失败的处理通常由
pam_faillock.so 模块管理,如果存在相关配置会出现如下的显示:
如果不存在,则可以去
/etc/security/faillock.conf中寻找,相关配置会出现在该文件中。1.3 远程管理通信的加密方法
当前使用SSH时使用的算法【不同网络环境中可能会有变化、如出现加密降级等】

- Cipher(加密算法):
[email protected]这是目前 SSH 中安全性和性能都非常出色的算法,采用流加密 + Poly1305 消息认证,是 OpenSSH 推荐的默认算法,安全性远高于传统的 AES-CBC。
- MAC(消息认证码):
<implicit>因为[email protected]是 AEAD(带关联数据的认证加密) 算法,它会在加密的同时自动完成消息认证,因此不需要额外配置 MAC,这是更安全的设计。
- KEX(密钥交换算法)
1.4 密码复杂度策略
密码复杂度策略通常是通过PAM集成配置中的
pam_pwquality.so模块进行实现,不做配置的话会出现如图所示的情况:
密码复杂度配置是由
libpwquality 库提供支持:
参数含义:
retry=3密码输入错误时,最多重试 3 次
minlen=8密码最小长度 8 位(等保要求,建议设为 12 位提升安全性)
lcredit=-1至少包含1 个小写字母(-n 表示至少 n 个,正数表示最多 n 个)
ucredit=-1至少包含1 个大写字母
dcredit=-1至少包含1 个数字
ocredit=-1至少包含1 个特殊符号(!@#$%^&* 等)
difok=3新密码与旧密码至少有3 个字符不同(防止仅改 1-2 位的弱修改)
enforce_for_root对 root 用户生效(默认 root 不受密码规则限制,等保必须开启)
remember=5禁止使用最近5 次的历史密码(防止循环使用弱密码)
reject_username禁止密码中包含用户名 / 主机名(如用户 test,密码不可为 Test123!)
maxrepeat=3禁止同一字符连续重复3 次(如 1111、aaaa,防止简单密码)
1.5 双因素认证
访谈客户,确认远程管理是否启用双因素认证(如 SSH+Google Authenticator),并现场验证
1.6 密码过期策略


参数含义:
- PASS_MAX_DAYS 90 # 密码最大有效期90天(等保要求)
- PASS_MIN_DAYS 1 # 密码最小修改间隔1天
- PASS_WARN_AGE 7 # 密码过期前7天提醒
- PASS_MIN_LEN 8 # 密码最小长度8位(与PAM配置联动)
1.7 登录超时

二、访问控制
2.1 账户权限审计
结合身份鉴别中检查的内容去判断服务器是否进行了特权分离,即:设置管理员、审计员、操作员等不同角色,进行分离权限。
2.2 匿名用户/默认账户
- 查看命令返回结果 第二字段为
(!*)表示该账户已锁定或禁用
- uucp、nuucp、lp、adm、shutdown均为默认账户
- 查看命令结果,红框内的乱码表示加密以后的账户口令

2.3 共享账户查询
查看日志,可以从同一
fuyuanzi账户在不同 IP(192.168.42.1、xxx.xxx.xxxx.xxx))同时 / 先后登录。
通过查看当前系统登录用户及用户活动状态,判断用户的使用是否存在共享状态。

TTY登录终端类型:tty1/ttyN——本地物理终端
pts/0/pts/N——远程虚拟终端(SSH/Xshell 等)
结合上述几种方式判断是否存在共享账户。
2.4 最小权限原则
结合身份鉴别中检查的内容去判断服务器是否进行了特权分离,即:设置管理员、审计员、操作员等不同角色,进行分离权限。
2.5 核查账户和权限情况

umask 值 | 核心用途 | 关键特点 |
0022 | 通用默认配置 | 平衡安全与可用性 |
0002 | 组内协作 | 同组可读写,外部只读 |
0077 | 个人敏感数据 | 仅自己可访问 |
0222 | 公共只读资源 | 所有人不可修改 |
0017 | 部门内部共享 | 仅组内可协作 |
0027 | 用于对安全性要求较高的场景 | 大幅限制其他用户的权限,避免敏感文件 / 目录被无关用户访问或修改 |
检查 sudo 权限配置(是否存在过度授权)

参数含义:
- Defaults 全局默认配置
!visiblepw:不允许在提示时显示密码(防止屏幕泄露)。always_set_home:总是设置用户的 HOME 环境变量。match_group_by_gid:使用 GID 匹配组权限(提升性能)。always_query_group_plugin:查询插件获取用户组信息。env_reset:登录时重置环境变量(防止提权)。env_keep:保留部分环境变量(如LANG,PS1),需注意不要保留危险变量。secure_path:设置安全路径(防止恶意 PATH 攻击)。
- 用户 / 组权限规则
root ALL=(ALL:ALL) ALL:root 用户可以在任何主机(ALL)上,以任何用户(ALL)和任何用户组(ALL)的身份,执行任何命令(ALL)。%wheel ALL=(ALL) ALL:允许wheel组成员使用 sudo 执行任意命令。
2.6 访问控制粒度审计
检查用户文件、系统文件、日志文件等文件的访问权限,确认符合最小权限原则。

2.7 强访问控制状态

三、安全审计
3.1 检查审计服务是否开启

3.2 审计记录核查

3.3 检查日志轮转配置(防止日志占满磁盘)



日志文件的操作权限审计
四、入侵防范
4.1 最小安装原则

bluetooth服务器无蓝牙硬件,开启后暴露蓝牙攻击面,易被本地 / 远程利用
cups服务器无打印需求,存在未授权访问漏洞,易被利用植入恶意程序
avahi-daemonDNS(mDNS)自动广播服务器信息,泄露主机名 / IP,易被局域网扫描 / 横向移动,存在远程漏洞
rpcbindRPC 绑定服务,配合 NFS/Samba无分布式文件系统需求时,开启后暴露 RPC 端口,易被利用进行端口映射 / 提权

4.2 高危端口查看

4.3 终端接入审计
TCP Wrappers 已过时(deprecated),推荐使用 firewalld 或 SELinux 进行访问控制。CentOS 7/8/9 中的 OpenSSH 已移除对 TCP Wrappers 的支持(从 OpenSSH 6.5+ 开始上游就默认禁用,RHEL/CentOS 跟进)。因此,即使你配置了
hosts.allow/deny,对 sshd 也不会起作用。- 如果有输出(如
hosts_access),则支持;
- 如果无输出,则忽略
/etc/hosts.*文件。

4.4 补丁查看

若输出为空,说明系统已是最新;否则列出可更新的包。

4.5 安全服务

五、恶意代码防范
5.1 第三方安全服务
存在安全服务的话就需要进一步根据安全位置去查看当前安全服务的版本、特征库和病毒库是否及时更新。

六、可信验证
6.1 检查是否将审计记录传送至安全管理中心
首先, 审计日志 ≠ rsyslog 日志。
- 审计日志(Audit Logs)由
auditd服务生成 - 来源:内核审计子系统(
audit) - 默认日志路径:
/var/log/audit/audit.log - 默认不通过
rsyslog转发!
rsyslog处理的是 系统日志(syslog)- 来源:应用程序、内核消息、SSH、sudo 等
- 路径:
/var/log/messages,/var/log/secure等
🚫 除非显式配置auditd将日志转发给rsyslog,否则rsyslog.conf中不会包含审计日志的转发规则!
检查方式:

参数说明:
LOG_ONLY:仅记录原始事件,信息较简略。
ENRICHED:在日志中添加额外上下文信息,如:- 用户名(即使无登录)
- 进程名、PID
- 文件路径(通过
auditctl配置的规则) - 命令行参数(部分场景)
dispatcher 是 audispd(audit dispatcher)的配置,如果使用 audispd 插件 转发,则需要检查 audispd 是否启用 syslog 插件。
再接着查看转发设置👇:
会有类似的显示:
*.* @192.168.1.200:514 # @表示UDP,@@表示TCP
七、数据完整性
7.1 传输过程中的完整性

✅ 安全的 MAC 算法(应保留):
hmac-sha2-256
hmac-sha2-512
[email protected](更安全,加密后认证)
❌ 应禁用的弱算法(不应出现):
hmac-md5
hmac-md5-96
hmac-sha1
hmac-sha1-96
7.2 存储过程中的完整性
fsck(File System Check)是 RHEL/Rocky/CentOS 系统中底层、核心的文件系统检测与修复工具,最终目的是恢复文件系统的正常结构,保障数据存储的完整性和可访问性。
查看文件系统检测(fsck)配置(确认定时检测是否生效)。

- 文件系统类型:
xfs→ ✅ 正确,RHEL/Rocky 默认使用 XFS
- 挂载点:
/→ 根分区
- 挂载选项:
defaults→ 包含rw,suid,dev,exec,auto,nouser,async
- dump:
0→ 不备份(合理)
- pass:
0→ 不进行 fsck 检查
八、数据保密性
8.1 传输保密性
获取 SSH 守护进程的实际生效配置,并过滤出加密算法(ciphers)列表。

不允许出现:
arcfour, des-cbc, 3des-cbc等弱加密算法。算法 | 类型 | 安全性 | 推荐 |
AES-256 + GCM 模式 | ✅ 最强,推荐优先使用 | ✅ 是 | |
ChaCha20 + Poly1305 | ✅ 高性能,无硬件加速依赖 | ✅ 是 | |
aes256-ctr | AES-256 + CTR 模式 | ✅ 强,但不带认证 | ✅ 可接受 |
AES-128 + GCM 模式 | ✅ 强,但密钥长度较短 | ✅ 可接受 | |
aes128-ctr | AES-128 + CTR 模式 | ⚠️ 较弱,仅用于兼容旧客户端 | ❌ 不推荐 |
8.2 存储保密性

加密存储的示例:
九、数据备份恢复
9.1 本地备份

9.2 异地备份
访谈,是否存在异地备份,且备份是否符合异地备份要求。
9.3 主备/热备
访谈,是否存在冗余配置,且配置是否符合冗余配置要求。
十、剩余信息保护
10.1 鉴别信息内存清除
用户的鉴别信息存储空间被释放后重新分配前得到完全清除,无论这些信息是存放在硬盘上还是内存中
Rocky 内核通过
sysctl参数限制内存页的访问、交换和缓存,防止鉴别信息在内存中残留,验证核心内核参数:
10.2 敏感数据内存清除
敏感数据的存储空间被释放后重新分配前得到完全清除,无论这些信息是存放在硬盘上还是内存中

10.3 剩余信息保护参数含义
kernel.randomize_va_space: 地址空间布局随机化(ASLR) 的级别,随机化进程的内存地址(栈、堆、共享库、可执行文件),防止攻击者精准定位内存中的敏感信息或执行代码。0:关闭 ASLR(高风险,内存地址固定,易被攻击);1:仅随机化共享库和栈(基础防护);2:最高级别,随机化所有内存区域(栈、堆、共享库、可执行文件、VDSO),是 Linux 默认的安全配置。
fs.suid_dumpable:控制SetUID/SetGID 进程(如sudo、sshd、su)的核心转储(core dump)行为。0:完全禁止SetUID 进程生成核心转储(最安全);1:仅允许 SetUID 进程生成权限受限的核心转储(仅 root 可读);2:默认值,允许 SetUID 进程生成核心转储,且转储文件权限为进程属主可读(存在风险,普通用户可见)。
vm.mmap_min_addr:限制进程可映射的最低内存地址(单位:字节),禁止进程映射0~65535的低地址内存区域。65536(64KB)是 Linux 推荐的安全值,覆盖了大部分低地址攻击的目标区域。
- kernel.kptr_restrict:控制 内核指针(kernel pointer) 在
/proc/kallsyms、/proc/modules等文件中的显示权限,防止攻击者通过内核指针定位内存地址,实施内存攻击。 0:无限制,普通用户可读取所有内核指针(高风险);1:默认值,普通用户无法读取内核指针,仅 root 可读(中等安全);2:最高安全,即使 root 也无法读取部分敏感内核指针(推荐)。
参数 | 推荐值 | 当前 Rocky 默认 | 安全等级 |
kernel.randomize_va_space | 2 | 2 | ✅ 强 |
fs.suid_dumpable | 0 | 2 | ⚠️ 需加固 |
vm.mmap_min_addr | 65536 | 65536 | ✅ 强 |
kernel.core_pattern | /var/crash/core.%e.%p 或 /dev/null | \|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h | ✅ 安全 |
kernel.kptr_restrict | 2 | 1 | ⚠️ 可增强 |
十一、个人信息保护
11.1 应仅采集和保存业务必需的用户个人信息;
根据GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》去判断目标是否适用于此项测评。
11.2 应禁止未授权访问和非法使用用户个人信息。
根据GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》去判断目标是否适用于此项测评。