当前位置:首页>Linux>等保测评命令——Oracle Linux

等保测评命令——Oracle Linux

  • 2026-10-11 09:17:50
等保测评命令——Oracle Linux

依据 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# 确认未开放Telnetss -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 oracleid 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.confsystemctl 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 --statesudo firewall-cmd --list-all# 合规配置示例sudo firewall-cmd --set-default-zone=dropsudo 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-updatednf check-update  # Oracle Linux 8+# 查看已安装的安全更新rpm-qa--last|grep-i"security"# 检查主机入侵检测工具rpm-qa|grep-E"ossec|aide|tripwire"# 使用Oracle Ksplice(零停机补丁)uptrack-showuptrack-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 Advisoryyum --security update

⚠️ 高风险项:未部署实时防病毒工具,直接判定不符合三级要求。


六、Oracle数据库专项检查

6.1 身份鉴别与密码策略

-- 检查数据库密码策略SELECT profile, resource_name,limitFROM 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、OSSHOW PARAMETER AUDIT_SYS_OPERATIONS;-- 合规值:TRUE
# 检查网络加密配置cat$ORACLE_HOME/network/admin/sqlnet.ora |grep-i"encryption"# 合规配置SQLNET.ENCRYPTION_SERVER=REQUIREDSQLNET.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# 执行用户:rootecho"===== 1 身份鉴别 ====="echo"--- 空口令检查 ---"awk -F: '$2==""{print "空口令用户: "$1}' /etc/shadowecho"--- 密码有效期 ---"grep-E'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defsecho"--- 密码复杂度 ---"grep-E'pam_pwquality|pam_cracklib' /etc/pam.d/system-auth |head-5echo"--- 登录失败锁定 ---"grep pam_faillock /etc/pam.d/system-authecho"--- SSH配置 ---"grep-E'PermitRootLogin|Protocol|ClientAlive' /etc/ssh/sshd_config |head-5echo""echo"===== 2 访问控制 ====="echo"--- 默认账户状态 ---"grep-E'adm|lp|sync|shutdown|halt|mail|news|uucp|operator|games|gopher' /etc/shadow |head-5echo"--- 关键文件权限 ---"stat-c'%a %n' /etc/passwd /etc/shadow 2>/dev/nullecho"--- SELinux状态 ---"getenforcecat /etc/selinux/config |grep SELINUX |head-2echo""echo"===== 3 安全审计 ====="echo"--- auditd状态 ---"systemctl is-active auditd && systemctl is-enabled auditdecho"--- 审计规则数量 ---"auditctl -l2>/dev/null |wc-lecho"--- 日志权限 ---"stat-c'%a %U:%G' /var/log/audit/audit.log 2>/dev/nullecho"--- 远程日志配置 ---"grep-E'@\w+.*514' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null |head-3echo""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-lecho"--- 防火墙状态 ---"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/nullsystemctl is-enabled clamd 2>/dev/nullecho"--- 病毒库版本 ---"freshclam --version2>/dev/null ||echo"未安装freshclam"echo""echo"===== 6 Oracle数据库检查(如存在) ====="# 检查Oracle环境if[-n"$ORACLE_HOME"];thenecho"--- Oracle版本 ---"    sqlplus -v2>/dev/null |head-3echo"--- 密码策略 ---"    sqlplus -s / as sysdba <<EOFSET PAGES 0 LINES 200SELECT resource_name, limit FROM dba_profiles WHERE profile='DEFAULT' AND resource_name LIKE 'PASSWORD%';EXIT;EOFecho"--- 审计配置 ---"    sqlplus -s / as sysdba <<EOFSET PAGES 0 LINES 200SHOW PARAMETER AUDIT_TRAIL;SHOW PARAMETER AUDIT_SYS_OPERATIONS;EXIT;EOFelseecho"未检测到Oracle环境变量"fiecho""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  # 备份/etcrsync-avz /backup/ remote:/backup/          # 异地同步

参考标准:GB/T 22239-2019、GB/T 28448-2019、Oracle Linux安全指南适用版本:Oracle Linux 7/8/9(含UEK内核)验证环境:x86_64 / ARM64 架构


最新文章

随机文章