一、操作系统层安全策略
oracle)及组(如oinstall、dba),清理不再使用的账号;通过usermod -a -G oinstall,dba oracle将Oracle用户加入对应组,限制DBA组成员数量(如用userdel删除多余用户,仅保留安装专用账户)。$ORACLE_HOME、数据文件目录)设置严格权限(如oracle:oinstall拥有所有权,750权限);使用chattr +i命令设置关键系统文件(如/etc/passwd、Oracle配置文件)为不可更改,防止非法篡改。iptables或firewalld配置规则,仅开放Oracle必要端口(如1521/TNS监听、1158/企业管理器),限制非必需网络连接;修改SSH默认端口(如至10000以上),降低端口扫描风险。二、Oracle数据库层安全策略
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;关闭数据字典访问权限,仅允许SYSDBA用户访问数据字典基础表(如SYS.USER$),防止普通用户通过数据字典获取敏感系统信息。PROFILE(如DEFAULT)设置密码复杂度:PASSWORD_VERIFY_FUNCTION=verify_function(要求密码长度≥6位,包含数字、小写字母、大写字母、特殊字符中的至少2类);设置密码有效期(PASSWORD_LIFE_TIME=90天)、失败登录次数(FAILED_LOGIN_ATTEMPTS=5次锁定账户)、锁定时间(PASSWORD_LOCK_TIME=1/24天)及宽限期(PASSWORD_GRACE_TIME=10天),强制用户定期更换密码。ALTER SYSTEM SET AUDIT_TRAIL='DB OR OS' SCOPE=SPFILE;开启审计,记录所有数据库操作(如SELECT * FROM sensitive_table、DROP USER);重启数据库使配置生效,定期检查审计日志(如DBA_AUDIT_TRAIL视图),追踪异常行为。lsnrctl为监听器设置密码(LSNRCTL> CHANGE_PASSWORD),防止未授权修改监听器配置;编辑$ORACLE_HOME/network/admin/listener.ora,限制监听器仅接受本地或可信IP的连接请求(如INBOUND_CONNECT_TIMEOUT_LISTENER=5秒)。$ORACLE_HOME/network/admin/sqlnet.ora,启用传输层加密(SQLNET.ENCRYPTION_SERVER=REQUIRED、SQLNET.ENCRYPTION_TYPES_SERVER=(AES256));若需更高安全性,可使用Oracle高级安全选项(如Oracle Advanced Security)配置SSL/TLS加密,保护客户端与数据库之间的数据传输(如密码、查询结果)。$ORACLE_HOME/network/admin/sqlnet.ora,开启IP过滤(TCP.VALIDNODE_CHECKING=YES),指定允许访问的IP列表(TCP.INVITED_NODES=(192.168.1.10,10.0.0.5));重启监听器使配置生效,拒绝非可信IP的连接请求。ALTER SYSTEM SET PROCESSES=200 SCOPE=SPFILE;(PROCESSES包含会话数+后台进程数);重启数据库,避免过多连接导致资源耗尽(如ORA-12516: TNS:listener could not find available handler)。三、附加安全措施
/etc/ssh/sshd_config,设置PermitRootLogin no);启用SSH密钥认证(PubkeyAuthentication yes、PasswordAuthentication no),替代密码登录;限制Oracle用户仅能通过专用账号登录,避免共享账号。/var/log/secure)中的异常登录记录(如多次失败的ssh尝试);配置实时监控工具(如Zabbix、Prometheus+Granafa),监控Oracle数据库的关键指标(如CPU使用率、内存占用、会话数、锁等待),及时预警安全事件(如大量SELECT *查询)。RMAN(Recovery Manager)工具备份数据文件、控制文件、归档日志(如BACKUP DATABASE PLUS ARCHIVELOG;);定期测试备份恢复流程(如模拟磁盘故障恢复),确保数据可恢复性,防止数据丢失。