centos oracle配置中安全策略
小樊
35
2026-01-02 02:57:39
CentOS 上 Oracle 安全策略清单
一 操作系统层安全基线
身份鉴别与口令策略
启用强口令与定期更换:在 /etc/login.defs 设置 PASS_MAX_DAYS 90 ;对存量用户执行 chage -M 90 用户名 。
PAM 复杂度与锁定:在 /etc/pam.d/system-auth 增加或调整
口令复杂度:pam_pwquality 示例参数 minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1 retry=3
登录失败锁定:pam_tally2/pam_faillock 示例 deny=3 unlock_time=900 even_deny_root (锁定次数不大于 20 )
会话超时:在 /etc/profile 设置 TMOUT=600 (不大于 1800 秒)
访问控制与最小权限
仅 root 属组包含系统管理员;sudoers 禁止非必要 ALL=(ALL) ALL ;按“系统管理员/审计管理员/安全管理员”三权分立分配账号与权限
文件与目录权限:常规配置不大于 644 ,可执行文件不大于 755 ;日志与敏感配置不大于 640
服务与端口最小化
关闭不必要服务与端口;仅开放必要访问(如 SSH 22 、数据库 1521 )
防火墙与主机加固
启用 firewalld 并仅放行必要端口;远程管理仅走 SSH
保持系统与安全补丁更新(yum/dnf 更新与内核/glibc 等关键修复)
资源与内核参数
limits.conf 示例(按实际内存与负载调整):
oracle soft nofile 10240 ;oracle hard nofile 65536
oracle soft nproc 20470 ;oracle hard nproc 16384
oracle soft stack 10240
sysctl.conf 示例:
fs.file-max 6815744 ;fs.aio-max-nr 1048576
kernel.shmall 2097152 ;kernel.shmmax 2147483648 ;kernel.shmmni 4096
kernel.sem 250 32000 100 128
net.ipv4.ip_local_port_range 9000 65500
net.core.rmem_default 4194304 ;net.core.rmem_max 4194304
net.core.wmem_default 262144 ;net.core.wmem_max 1048576
使配置生效:执行 sysctl -p ;PAM 会话限制需在 /etc/pam.d/login 加入 session required pam_limits.so
二 数据库层安全策略
网络访问控制
白名单控制:在 $ORACLE_HOME/network/admin/sqlnet.ora 设置
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.31.71,192.168.31.77 或 192.168.31.0/24 )
注意:白名单必须包含数据库服务器本机地址(不可用 localhost/127.0.0.1 替代)
使生效:lsnrctl stop/start
主机层补充:如需限制 SSH 来源,可配合 /etc/hosts.allow / etc/hosts.deny 或 iptables 仅放行管理网段
监听器安全
设置监听密码并关闭本地 OS 认证(防恶意 stop)
lsnrctl > change_password > set password > save_config
在 listener.ora 增加:LOCAL_OS_AUTHENTICATION_LISTENER=OFF
登录审计与空闲超时
登录审计示例:创建表与触发器记录登录用户与时间
CREATE TABLE LOGON_TABLE(SESSION_USER VARCHAR2(256), CREATE_TIME DATE);
CREATE OR REPLACE TRIGGER TRI_LOGON AFTER LOGON ON DATABASE
BEGIN INSERT INTO LOGON_TABLE VALUES (SYS_CONTEXT(‘USERENV’,‘SESSION_USER’), SYSDATE); END; /
空闲探测(防半开连接):在 sqlnet.ora 设置 SQLNET.EXPIRE_TIME=15 (单位:分钟)
口令复杂度与账户锁定
运行 @?/rdbms/admin/utlpwdmg.sql 生成 VERIFY_FUNCTION_11G 校验函数
调整默认 PROFILE :
alter profile DEFAULT limit PASSWORD_LIFE_TIME 90 ;
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 6 ;
alter profile DEFAULT limit PASSWORD_REUSE_MAX 5 ;
alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G ;
针对特定用户:
CREATE PROFILE zhangsan_lock LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2 ;
ALTER USER zhangsan PROFILE zhangsan_lock;
解锁:ALTER USER zhangsan ACCOUNT UNLOCK;
远程 SYSDBA 鉴别
如非必要,可将 REMOTE_LOGIN_PASSWORDFILE=NONE 并重启实例,禁用远程 SYSDBA 口令文件登录(需评估维护影响)
三 等保 2.0 对照要点
身份鉴别:口令复杂度与 90 天 更换、登录失败锁定、会话超时、远程管理仅 SSH 、双因素鉴别(如堡垒机 + 短信/令牌)
访问控制:三权分立、最小权限、账户与权限定期审计、默认账户禁用/重命名
安全审计:开启数据库审计(登录/关键操作)、集中日志采集与留存
入侵防范:端口与服务最小化、补丁更新、边界与主机防火墙联动
可信验证与资源控制:内核与资源限制、重要客体标记与访问控制粒度到用户/进程、文件/表级控制
四 快速实施命令示例
防火墙仅放行数据库端口(示例为 1521 )
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload
sqlnet.ora 白名单与空闲探测
编辑 $ORACLE_HOME/network/admin/sqlnet.ora
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.31.0/24 )
SQLNET.EXPIRE_TIME=15
使生效:lsnrctl stop ;lsnrctl start
监听器密码与本地 OS 认证关闭
lsnrctl
change_password
set password
save_config
在 listener.ora 增加:LOCAL_OS_AUTHENTICATION_LISTENER=OFF
口令复杂度与账户锁定
以 SYS 登录:@?/rdbms/admin/utlpwdmg.sql
alter profile DEFAULT limit PASSWORD_LIFE_TIME 90 ;
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 6 ;
alter profile DEFAULT limit PASSWORD_REUSE_MAX 5 ;
alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G ;
登录审计触发器
CREATE TABLE LOGON_TABLE(SESSION_USER VARCHAR2(256), CREATE_TIME DATE);
CREATE OR REPLACE TRIGGER TRI_LOGON AFTER LOGON ON DATABASE
BEGIN INSERT INTO LOGON_TABLE VALUES (SYS_CONTEXT(‘USERENV’,‘SESSION_USER’), SYSDATE); END; /;