依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等保2.0三级 标准,针对 Oracle Linux 操作系统及 Oracle数据库 给出可直接落地的测评命令清单。
覆盖身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范等核心控制点,已在 Oracle Linux 7/8/9 及 Oracle 11g/12c/19c 环境验证通过。
一、身份鉴别(8.1.4.1)
1.1 账户唯一性与密码复杂度
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
awk -F: '$2==""{print $1}' /etc/shadow | 检查空口令账户 | 无输出 |
awk -F: '{print $3}' /etc/passwd | sort | uniq -d | 核查UID唯一性 | 无重复UID |
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs | 密码有效期 | ≤90天,≥7天预警 |
grep -E 'pam_pwquality|pam_cracklib' /etc/pam.d/system-auth | 密码复杂度 | minlen=8,minclass=4 |
Oracle Linux特有配置:
# 查看Oracle Linux默认密码策略
cat /etc/pam.d/system-auth |grep-E"pam_pwquality|pam_cracklib"
# 合规配置示例
password requisite pam_pwquality.so try_first_pass local_users_only retry=3minlen=8minclass=4dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
1.2 登录失败处理与会话超时
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
grep pam_faillock /etc/pam.d/system-auth | 登录失败锁定 | deny=5,unlock_time=300 |
grep TMOUT /etc/profile | 会话超时 | TMOUT=600(秒) |
grep -E 'ClientAliveInterval|ClientAliveCountMax' /etc/ssh/sshd_config | SSH超时 | 300秒无操作断开 |
1.3 远程管理安全
# 确认SSH服务运行
systemctl status sshd
# 检查SSH安全配置
grep-E'PermitRootLogin|Protocol' /etc/ssh/sshd_config
# 合规要求:PermitRootLogin no、Protocol 2
# 确认未开放Telnet
ss -tuln|grep':23'
高风险项:使用Telnet或允许root远程登录,直接判定不符合三级要求。
1.4 双因子认证(高风险项)
测评方法:
- 访谈确认:是否采用”口令+数字证书/Ukey”组合
- 技术核查:
# 检查SSH公钥认证配置
grep"PubkeyAuthentication yes" /etc/ssh/sshd_config
# 检查PAM模块是否集成双因子
cat /etc/pam.d/sshd |grep-E"pam_pkcs11|pam_google_authenticator"
# Oracle Linux特有:检查Oracle Advanced Security选项
cat$ORACLE_HOME/network/admin/sqlnet.ora |grep-i"authentication"
二、访问控制(8.1.4.2)
2.1 默认账户清理
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
grep -E 'adm|lp|sync|shutdown|halt|mail|news|uucp|operator|games|gopher' /etc/shadow | 确认默认账户禁用 | 已锁定(!!或*)或删除 |
stat -c '%a %n' /etc/passwd /etc/shadow | 关键文件权限 | 644/000 |
awk -F: '$3==0 && $1!="root"{print $1}' /etc/passwd | 检查UID=0的非root账户 | 无输出 |
2.2 权限最小化
# 检查sudo授权
grep-v'^#' /etc/sudoers |grep-v'^$'|head-10
# 检查Oracle用户权限(如存在Oracle数据库)
groups oracle
id oracle
2.3 强制访问控制(SELinux)
Oracle Linux 默认启用 SELinux(与RHEL相同):
# 检查SELinux状态
cat /etc/selinux/config |grep SELINUX
# 合规要求:SELINUX=enforcing
# 查看当前模式
getenforce
# 查看文件安全上下文
ls-Z /etc/passwd /etc/shadow
# 查看进程安全上下文
ps-eZ|grep sshd
# 检查是否有进程处于unconfined_t(应最小化)
ps-eZ|grep unconfined_t |wc-l
三、安全审计(8.1.4.3)
3.1 审计服务启用
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
systemctl is-active auditd && systemctl is-enabled auditd | 审计服务状态 | active & enabled |
auditctl -l | wc -l | 审计规则数量 | ≥30条 |
aureport -i | head -20 | 审计事件摘要 | 包含登录、权限变更、文件操作 |
stat -c '%a %U:%G' /var/log/audit/audit.log | 日志权限 | 600 root:root |
3.2 日志保护与备份
# 检查远程日志备份配置
grep-E'@\w+.*514' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
# 合规配置示例
echo"*.info;mail.none;authpriv.none;cron.none @192.168.1.100:514">> /etc/rsyslog.conf
systemctl restart rsyslog
# 查看日志加密传输(TLS)
grep-E'DefaultNetstreamDriverCAFile\|ActionSendStreamDriverMode' /etc/rsyslog.conf
3.3 审计进程保护(高风险项)
测试方法:
# 使用非审计管理员账户执行,应失败
sudo-u testuser systemctl stop auditd
# 预期结果:Failed to stop auditd.service: Operation not permitted
# 检查auditd是否受保护
cat /etc/systemd/system/auditd.service |grep-i"protect\|refuse"
四、入侵防范(8.1.4.4)
4.1 最小化安装与服务管控
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
yum list installed | grep -E 'telnet|rsh|rlogin|ypbind' | 检查非必要组件 | 未安装 |
rpm -qa --last | head -10 | 最近补丁 | ≤30天 |
systemctl list-unit-files --state=enabled | grep -vE 'ssh|audit|cron|rsyslog' | 启用服务 | 仅业务所需 |
4.2 端口与防火墙
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
ss -tunlp | grep -E '0.0.0.0:23|0.0.0.0:111|0.0.0.0:513|0.0.0.0:32768' | 高危端口检查 | 无监听 |
firewall-cmd --list-rich-rules | 防火墙规则 | 限制管理终端IP |
cat /etc/hosts.deny | TCP Wrappers | 包含ALL:ALL |
Oracle Linux防火墙配置:
# 查看默认防火墙(firewalld)
sudo firewall-cmd --state
sudo firewall-cmd --list-all
# 合规配置示例
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
4.3 漏洞与入侵检测
# 检查Oracle Linux补丁更新(使用yum或dnf)
yum check-update
dnf check-update # Oracle Linux 8+
# 查看已安装的安全更新
rpm-qa--last|grep-i"security"
# 检查主机入侵检测工具
rpm-qa|grep-E"ossec|aide|tripwire"
# 使用Oracle Ksplice(零停机补丁)
uptrack-show
uptrack-upgrade
五、恶意代码防范(8.1.4.5)
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
systemctl is-active clamd && systemctl is-enabled clamd | ClamAV状态 | active & enabled |
freshclam --version | 病毒库版本 | 24小时内更新 |
ps -ef | grep clamd | 实时扫描进程 | 常驻内存 |
Oracle Linux特有:
# 检查Oracle预装安全工具
rpm-qa|grep-E"oracle-validated|preinstall"
# 使用Oracle Linux Security Advisory
yum --security update
⚠️ 高风险项:未部署实时防病毒工具,直接判定不符合三级要求。
六、Oracle数据库专项检查
6.1 身份鉴别与密码策略
-- 检查数据库密码策略
SELECT profile, resource_name,limit
FROM DBA_PROFILES
WHERE profile='DEFAULT'AND resource_name LIKE'PASSWORD%';
-- 达标判据:
-- FAILED_LOGIN_ATTEMPTS ≤ 5
-- PASSWORD_LIFE_TIME ≤ 90
-- PASSWORD_VERIFY_FUNCTION ≠ NULL
-- PASSWORD_REUSE_TIME ≥ 365
6.2 操作系统认证禁用
# 检查sqlnet.ora配置
cat$ORACLE_HOME/network/admin/sqlnet.ora
# 合规配置
SQLNET.AUTHENTICATION_SERVICES=(NONE)
# 或
SQLNET.AUTHENTICATION_SERVICES=(TCPS)
6.3 审计与远程加密
-- 检查审计配置
SHOW PARAMETER AUDIT_TRAIL;
-- 合规值:DB、DB,EXTENDED、XML、OS
SHOW PARAMETER AUDIT_SYS_OPERATIONS;
-- 合规值:TRUE
# 检查网络加密配置
cat$ORACLE_HOME/network/admin/sqlnet.ora |grep-i"encryption"
# 合规配置
SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,AES128)
SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
6.4 数据库访问控制
-- 检查默认账户状态
SELECT username, account_status
FROM dba_users
WHERE username IN('SCOTT','OUTLN','ORDSYS','MDSYS','DBSNMP');
-- 合规状态:EXPIRED & LOCKED 或已删除
-- 检查SYSDBA权限分配
SELECT grantee, granted_role
FROM dba_role_privs
WHERE granted_role='SYSDBA'AND grantee NOTIN('SYS');
-- 应无返回行
一键巡检脚本(Bash)
#!/bin/bash
# Oracle Linux 等保三级一键巡检脚本
# 适用:Oracle Linux 7/8/9
# 执行用户:root
echo"===== 1 身份鉴别 ====="
echo"--- 空口令检查 ---"
awk -F: '$2==""{print "空口令用户: "$1}' /etc/shadow
echo"--- 密码有效期 ---"
grep-E'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs
echo"--- 密码复杂度 ---"
grep-E'pam_pwquality|pam_cracklib' /etc/pam.d/system-auth |head-5
echo"--- 登录失败锁定 ---"
grep pam_faillock /etc/pam.d/system-auth
echo"--- SSH配置 ---"
grep-E'PermitRootLogin|Protocol|ClientAlive' /etc/ssh/sshd_config |head-5
echo""
echo"===== 2 访问控制 ====="
echo"--- 默认账户状态 ---"
grep-E'adm|lp|sync|shutdown|halt|mail|news|uucp|operator|games|gopher' /etc/shadow |head-5
echo"--- 关键文件权限 ---"
stat-c'%a %n' /etc/passwd /etc/shadow 2>/dev/null
echo"--- SELinux状态 ---"
getenforce
cat /etc/selinux/config |grep SELINUX |head-2
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|0.0.0.0:32768'
echo"--- 待更新包 ---"
yum check-update 2>/dev/null |wc-l|| dnf check-update 2>/dev/null |wc-l
echo"--- 防火墙状态 ---"
firewall-cmd --state2>/dev/null ||echo"firewalld未运行"
echo"--- Ksplice状态 ---"
uptrack-show 2>/dev/null |head-5||echo"Ksplice未安装"
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 Oracle数据库检查(如存在) ====="
# 检查Oracle环境
if[-n"$ORACLE_HOME"];then
echo"--- Oracle版本 ---"
sqlplus -v2>/dev/null |head-3
echo"--- 密码策略 ---"
sqlplus -s / as sysdba <<EOF
SET PAGES 0 LINES 200
SELECT resource_name, limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name LIKE 'PASSWORD%';
EXIT;
EOF
echo"--- 审计配置 ---"
sqlplus -s / as sysdba <<EOF
SET PAGES 0 LINES 200
SHOW PARAMETER AUDIT_TRAIL;
SHOW PARAMETER AUDIT_SYS_OPERATIONS;
EXIT;
EOF
else
echo"未检测到Oracle环境变量"
fi
echo""
echo"===== 巡检完成 ====="
高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 空口令账户 | awk -F: '$2==""{print $1}' /etc/shadow | 存在输出 | 立即设置强口令或锁定 |
| 密码复杂度未启用 | grep -E 'pam_pwquality|pam_cracklib' /etc/pam.d/system-auth | 无输出 | 配置pam_pwquality模块 |
| 无登录失败锁定 | grep pam_faillock /etc/pam.d/system-auth | 无输出 | 配置pam_faillock策略 |
| root远程登录 | grep ^PermitRootLogin /etc/ssh/sshd_config | 值为yes | 修改为no |
| SELinux未启用 | getenforce | 返回Disabled或Permissive | 修改配置文件为enforcing |
| 审计未启用 | systemctl is-active auditd | 非active | 安装并启用auditd |
| 审计进程无保护 | sudo -u testuser systemctl stop auditd | 执行成功 | 配置权限限制 |
| 无杀毒软件 | systemctl is-active clamd | 非active | 安装ClamAV |
| Oracle SYS默认口令 | sqlplus sys/change_on_install as sysdba | 登录成功 | 修改默认口令 |
| Oracle OS认证未禁用 | cat $ORACLE_HOME/network/admin/sqlnet.ora | 无SQLNET.AUTHENTICATION_SERVICES配置 | 添加(NONE)或(TCPS) |
Oracle Linux版本差异说明(7 vs 8 vs 9)
| 功能项 | Oracle Linux 7 | Oracle Linux 8 | Oracle Linux 9 |
|---|---|---|---|
| 包管理 | yum | dnf(yum兼容) | dnf |
| 默认内核 | UEK R5 | UEK R6 | UEK R7 |
| Ksplice | 支持 | 支持 | 支持+增强 |
| SELinux | 基础 | 增强 | 增强+用户空间 |
| 国密支持 | 需手动 | 基础 | 完整 |
| 容器工具 | Docker | Podman | Podman+Kubernetes |
| 等保合规 | 需加固 | 预优化 | 预优化+安全启动 |
测评执行要点
1. 权限要求
- 操作系统命令需
root权限 - Oracle数据库命令需
SYSDBA权限
2. 现场核查重点
- Ksplice补丁:检查是否使用Oracle零停机补丁技术
- UEK内核:确认使用Oracle Unbreakable Enterprise Kernel
- Oracle预安装包:检查
oracle-validated或oracle-database-preinstall是否安装 - 数据库OS认证:确认
sqlnet.ora中已禁用操作系统认证
3. 与RHEL/CentOS对比
| 对比项 | RHEL | CentOS | Oracle Linux |
|---|---|---|---|
| 源代码 | 商业 | RHEL重新编译 | RHEL兼容 |
| 支持周期 | 10年 | 已停止 | 10年+ |
| 内核优化 | 通用 | 通用 | 数据库优化(UEK) |
| 零停机补丁 | 需订阅 | 不支持 | Ksplice免费 |
| 等保合规 | 官方指南 | 需自行加固 | 预优化+官方指南 |
| 成本 | 订阅制 | 免费 | 免费(含Ksplice) |
常用命令速查
# 用户与权限
cat /etc/passwd # 查看所有用户
cat /etc/shadow # 查看密码状态
lastlog # 查看最后登录
faillock --user username # 查看登录失败记录(OL8+)
# 网络与安全
ss -tunlp# 查看监听端口
firewall-cmd --list-all # 查看防火墙规则
getsebool -a|grep httpd # 查看SELinux布尔值
# 系统与日志
uname-r# 内核版本(检查UEK)
cat /etc/oracle-release # Oracle Linux版本
uptrack-show # 查看Ksplice补丁
ausearch -ts today -k identity_changes # 搜索今日审计日志
# Oracle数据库
sqlplus / as sysdba # 登录数据库
SELECT * FROM v$version;# 查看数据库版本
SELECT log_mode FROM v$database;# 查看归档模式
# 备份与恢复
tar czf /backup/etc-$(date +%F).tar.gz /etc # 备份/etc
rsync-avz /backup/ remote:/backup/ # 异地同步
参考标准:GB/T 22239-2019、GB/T 28448-2019、Oracle Linux安全指南
适用版本:Oracle Linux 7/8/9(含UEK内核)
验证环境:x86_64 / ARM64 架构
声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/6546.html