依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等保2.0三级 标准,针对 SUSE Linux Enterprise Server (SLES) 操作系统给出可直接落地的测评命令清单。
覆盖身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、资源控制等核心控制点,已在 SLES 12 SP5 / SLES 15 SP3 环境验证通过。
一、身份鉴别(8.1.4.1)
1.1 用户身份唯一性与密码复杂度
| | |
|---|
awk -F: '$2==""{print $1}' /etc/shadow | | |
awk -F: '{print $3}' /etc/passwd | sort | uniq -d | | 系统账户UID通常为0-499,普通用户≥1000 |
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS' /etc/login.defs | | |
cat /etc/security/pwquality.conf | 密码复杂度策略 | SUSE特有路径 |
SLES特有配置:
# 查看SUSE默认密码复杂度配置
cat /etc/security/pwquality.conf
# 合规配置示例
minlen =8
minclass =4
dcredit =-1
ucredit =-1
lcredit =-1
ocredit =-1
maxrepeat =2
gecoscheck =1
1.2 登录失败处理与会话超时
| | |
|---|
grep pam_tally2 /etc/pam.d/common-auth | | |
grep TMOUT /etc/profile | | |
grep -E 'ClientAliveInterval|ClientAliveCountMax' /etc/ssh/sshd_config | | |
1.3 远程管理安全(SSH配置)
# 检查SSH安全配置
grep-E'PermitRootLogin|Protocol' /etc/ssh/sshd_config
# 合规要求
PermitRootLogin no
Protocol 2
PasswordAuthentication no # 建议启用密钥认证
PubkeyAuthentication yes
⚠️ 高风险项:使用Telnet或允许root远程登录,直接判定不符合三级要求。
1.4 双因子认证(高风险项)
测评方法:
# 检查SSH公钥认证配置
grep"PubkeyAuthentication yes" /etc/ssh/sshd_config
# 检查PAM模块是否集成双因子
cat /etc/pam.d/sshd |grep-E"pam_pkcs11|pam_google_authenticator"
# SUSE特有:检查PAM配置文件结构
cat /etc/pam.d/common-auth |grep-E"pam_tally2|pam_faillock"
二、访问控制(8.1.4.2)
2.1 账户与权限管理
| | |
|---|
stat -c '%a %n' /etc/passwd /etc/shadow | | |
grep -v '^#' /etc/sudoers | grep -v '^$' | | |
awk -F: '$3==0 && $1!="root"{print $1}' /etc/passwd | | |
2.2 默认账户清理
# 确认默认账户禁用或删除
grep-E'adm|lp|sync|shutdown|halt|mail|news|uucp|operator|games|gopher' /etc/shadow
# 预期结果:第二列为!!(锁定)或*(禁用),或账户不存在
2.3 强制访问控制(AppArmor)
SUSE默认使用 AppArmor 替代SELinux:
# 检查AppArmor状态
aa-status
# 查看已加载的配置文件
aa-status |grep enforce
# 查看AppArmor日志
dmesg|grep-i apparmor
journalctl |grep-i apparmor
# 检查关键进程策略
ls /etc/apparmor.d/ |grep-E'sshd|mysql|nginx'
达标判据:关键进程应配置AppArmor策略并处于enforce模式。
三、安全审计(8.1.4.3)
3.1 审计服务启用与日志保护
| | |
|---|
systemctl is-active auditd && systemctl is-enabled auditd | | |
auditctl -l | wc -l | | 规则文件位于/etc/audit/rules.d/ |
aureport -i | head -20 | | |
stat -c '%a %U:%G' /var/log/audit/audit.log | | |
3.2 日志备份与防篡改
# 检查远程日志转发配置
grep-E'@\w+.*514' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
# SUSE特有:检查syslog-ng配置(如使用syslog-ng替代rsyslog)
cat /etc/syslog-ng/syslog-ng.conf |grep-E'destination|log'
# 合规配置示例(rsyslog)
echo"*.info;mail.none;authpriv.none;cron.none @192.168.1.100:514">> /etc/rsyslog.conf
systemctl restart rsyslog
3.3 审计进程保护(高风险项)
测试方法:
# 使用非审计管理员账户执行,应失败
sudo-u testuser systemctl stop auditd
# 预期结果:Failed to stop auditd.service: Operation not permitted
# 检查auditd是否受systemd保护
systemctl show auditd |grep-i"refuse\|protect"
四、入侵防范(8.1.4.4)
4.1 最小化安装与漏洞修复
| | |
|---|
zypper list-installed | wc -l | | zypper替代yum |
zypper patch-check | | SUSE特有 |
zypper list-patches | | SUSE特有 |
systemctl list-unit-files --state=enabled | grep -vE 'ssh|audit|cron|rsyslog' | | |
SUSE补丁管理:
# 检查补丁状态(详细)
zypper patch-check --with-optional
# 安装所有安全补丁
zypper patch --category security
# 查看已安装补丁历史
rpm-qa--last|grep patch
# 使用SUSE Manager(企业环境)
systemctl status salt-minion
4.2 端口与服务管控
| | |
|---|
ss -tunlp | grep -E '0.0.0.0:23|0.0.0.0:111|0.0.0.0:513' | | |
firewall-cmd --list-rich-rules | | |
cat /etc/hosts.allow /etc/hosts.deny | | |
SUSE防火墙配置:
# SUSE默认使用firewalld(SLES 15+)
sudo firewall-cmd --state
sudo firewall-cmd --list-all
# 或使用SuSEfirewall2(旧版本)
sudo systemctl status SuSEfirewall2
sudocat /etc/sysconfig/SuSEfirewall2 |grep FW_SERVICES_EXT_TCP
# 合规配置示例(firewalld)
sudo firewall-cmd --set-default-zone=drop
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.1.1.0/24" service name="ssh" accept'
sudo firewall-cmd --reload
五、恶意代码防范(8.1.4.5)
| | |
|---|
systemctl is-active clamd && systemctl is-enabled clamd | | |
freshclam --version | | |
ps -ef | grep clamd | | |
SUSE特有:
# 检查SUSE官方安全仓库
zypper repos |grep-E"security|update"
# 使用SUSE内置安全模块(如有订阅)
systemctl status sapconf # SAP优化,含安全增强
systemctl status tuned # 系统调优,含安全参数
高风险项:未部署实时防病毒工具,直接判定不符合三级要求。
六、资源控制(8.1.4.8)
| | |
|---|
grep HISTSIZE /etc/profile /etc/bash.bashrc | | |
grep -E 'ClientAliveInterval|ClientAliveCountMax' /etc/ssh/sshd_config | | |
grep -E 'soft|hard' /etc/security/limits.conf | | |
SUSE特有资源控制:
# 检查systemd资源限制
systemctl show sshd |grep-E'MemoryLimit|CPUQuota|TasksMax'
# 查看控制组(cgroups)配置
cat /etc/systemd/system/sshd.service.d/limits.conf 2>/dev/null ||echo"未配置自定义限制"
# 配置示例
sudomkdir-p /etc/systemd/system/sshd.service.d/
sudotee /etc/systemd/system/sshd.service.d/limits.conf <<EOF
[Service]
MemoryLimit=512M
CPUQuota=50%
TasksMax=100
EOF
sudo systemctl daemon-reload
sudo systemctl restart sshd
一键巡检脚本(Bash)
#!/bin/bash
# SUSE Linux Enterprise Server 等保三级一键巡检脚本
# 适用:SLES 12 SP5 / SLES 15 SP3
# 执行用户:root
echo"===== 1 身份鉴别 ====="
echo"--- 空口令检查 ---"
awk -F: '$2==""{print "空口令用户: "$1}' /etc/shadow
echo"--- 密码有效期 ---"
grep-E'PASS_MAX_DAYS|PASS_MIN_DAYS' /etc/login.defs
echo"--- 密码复杂度(SUSE特有路径) ---"
cat /etc/security/pwquality.conf |grep-E'minlen|minclass|credit'|head-5
echo"--- 登录失败锁定 ---"
grep pam_tally2 /etc/pam.d/common-auth 2>/dev/null ||grep pam_faillock /etc/pam.d/common-auth 2>/dev/null
echo"--- SSH配置 ---"
grep-E'PermitRootLogin|Protocol|ClientAlive' /etc/ssh/sshd_config |head-5
echo""
echo"===== 2 访问控制 ====="
echo"--- 关键文件权限 ---"
stat-c'%a %n' /etc/passwd /etc/shadow 2>/dev/null
echo"--- 默认账户状态 ---"
grep-E'adm|lp|sync|shutdown|halt|mail|news|uucp|operator|games|gopher' /etc/shadow |head-5
echo"--- AppArmor状态(SUSE默认MAC) ---"
aa-status 2>/dev/null |head-10||echo"AppArmor未安装或异常"
echo""
echo"===== 3 安全审计 ====="
echo"--- auditd状态 ---"
systemctl is-active auditd && systemctl is-enabled auditd
echo"--- 审计规则数量 ---"
auditctl -l2>/dev/null |wc-l
echo"--- 日志权限 ---"
stat-c'%a %U:%G' /var/log/audit/audit.log 2>/dev/null
echo"--- 远程日志配置 ---"
grep-E'@\w+.*514' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null |head-3
echo""
echo"===== 4 入侵防范 ====="
echo"--- 高危端口 ---"
ss -tunlp|grep-E'0.0.0.0:23|0.0.0.0:111|0.0.0.0:513'
echo"--- 待安装补丁(SUSE特有) ---"
zypper patch-check 2>/dev/null |tail-5
echo"--- 启用服务 ---"
systemctl list-unit-files --state=enabled |grep-vE'ssh|audit|cron|rsyslog|syslog'|head-10
echo"--- 防火墙状态 ---"
firewall-cmd --state2>/dev/null || SuSEfirewall2 status 2>/dev/null ||echo"防火墙未运行"
echo""
echo"===== 5 恶意代码防范 ====="
echo"--- ClamAV状态 ---"
systemctl is-active clamd 2>/dev/null
systemctl is-enabled clamd 2>/dev/null
echo"--- 病毒库版本 ---"
freshclam --version2>/dev/null ||echo"未安装freshclam"
echo""
echo"===== 6 资源控制 ====="
echo"--- 历史命令限制 ---"
grepHISTSIZE /etc/profile /etc/bash.bashrc 2>/dev/null
echo"--- 系统资源限制 ---"
cat /etc/security/limits.conf |grep-v'^#'|grep-v'^$'|head-5
echo""
echo"===== 巡检完成 ====="
高风险项重点核查清单
| | | |
|---|
| 空口令账户 | awk -F: '$2==""{print $1}' /etc/shadow | | |
| 密码复杂度未启用 | cat /etc/security/pwquality.conf | | |
| 无登录失败锁定 | grep -E 'pam_tally2|pam_faillock' /etc/pam.d/common-auth | | |
| root远程登录 | grep ^PermitRootLogin /etc/ssh/sshd_config | | |
| AppArmor未启用 | aa-status | | |
| 审计未启用 | systemctl is-active auditd | | |
| 审计进程无保护 | sudo -u testuser systemctl stop auditd | | |
| 无杀毒软件 | systemctl is-active clamd | | |
| 补丁更新滞后 | zypper patch-check | | |
SUSE特有配置注意事项
1. 密码策略路径差异
| | |
|---|
| /etc/pam.d/system-auth | /etc/security/pwquality.conf |
| /etc/pam.d/password-auth | /etc/pam.d/common-auth |
| /etc/pam.d/system-auth | /etc/pam.d/common-password |
2. 软件包管理差异
| | |
|---|
| yum install | zypper install |
| yum update | zypper update |
| yum --security update | zypper patch --category security |
| yum list installed | zypper list-installed |
| yum search | zypper search |
| yum list updates | zypper list-patches |
3. 防火墙差异
# SuSEfirewall2配置示例(旧版本)
sudovi /etc/sysconfig/SuSEfirewall2
# 修改:
FW_SERVICES_EXT_TCP="22 443"
FW_ALLOW_PING_EXT="no"
sudo systemctl restart SuSEfirewall2
SUSE版本差异说明(SLES 12 vs SLES 15)
测评执行要点
1. 权限要求
所有命令需 root 权限执行
建议创建专用审计账户,加入 audit 组
2. 现场核查重点
密码策略:SUSE使用pwquality.conf,非PAM直接配置,需特别注意
AppArmor状态:检查关键业务进程是否有专属配置文件
补丁管理:使用zypper patch-check检查,关注category security
日志转发:SUSE可能使用syslog-ng替代rsyslog,需确认实际配置
3. 与RHEL对比
常用命令速查
# 用户与权限
cat /etc/passwd # 查看所有用户
cat /etc/shadow # 查看密码状态
lastlog # 查看最后登录
getent passwd username # 查看特定用户
# 网络与安全
ss -tunlp# 查看监听端口
firewall-cmd --list-all # 查看firewalld规则
aa-status # 查看AppArmor状态
# 系统与日志
uname-a# 内核版本
cat /etc/SuSE-release # SUSE版本(旧版)
cat /etc/os-release # 通用版本信息
zypper--version# zypper版本
journalctl |grep-i audit # 查看审计日志
# 补丁与更新
zypper patch-check # 检查补丁
zypper list-patches # 列出补丁
zypper patch --category security # 安装安全补丁
rpm-qa--last|head-10# 最近安装包
# 备份与恢复
tar czf /backup/etc-$(date +%F).tar.gz /etc # 备份/etc
systemctl status snapper # SUSE快照工具
snapper list # 查看系统快照
参考标准:GB/T 22239-2019、GB/T 28448-2019、SUSE安全指南
适用版本:SUSE Linux Enterprise Server 12 SP5 / 15 SP3
验证环境:x86_64 / ARM64 / IBM Z 架构