Oracle数据库在Linux系统上的安全防护需从操作系统层、数据库层、网络层及运维管理等多维度综合实施,以下是关键策略:
最小化软件与服务
仅安装Oracle数据库运行必需的软件包(如oracle-database-server
、ksh
等),卸载无关组件(如X-Windows、CUPS打印服务);禁用未使用的系统服务(如sendmail
、cupsd
),减少攻击面。
用户与权限管理
oinstall
用于安装、dba
用于数据库管理)及专用用户(oracle
),禁止将oracle
用户加入root
组;/etc/security/limits.conf
限制用户资源使用,例如:oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
root
远程登录(修改/etc/ssh/sshd_config
中PermitRootLogin no
),强制使用普通用户SSH登录后切换至oracle
。内核参数优化
修改/etc/sysctl.conf
调整内核安全参数,例如:
fs.file-max=6815744 # 最大文件句柄数
kernel.shmmax=2147483648 # 共享内存最大大小
net.ipv4.ip_local_port_range=9000-65500 # 应用程序端口范围
net.ipv4.tcp_syncookies=1 # 防SYN Flood攻击
执行sysctl -p
使配置生效。
文件系统权限控制
$ORACLE_HOME
、$ORACLE_BASE/oradata
)设置严格权限:chown -R oracle:oinstall $ORACLE_HOME
chmod -R 750 $ORACLE_HOME
chown -R oracle:oinstall $ORACLE_BASE/oradata
chmod -R 750 $ORACLE_BASE/oradata
/etc/passwd
、/etc/shadow
、/etc/hosts
)设置不可更改标志(chattr +i
),防止非法篡改。数据字典保护
启用数据字典保护,限制仅SYSDBA
用户访问核心数据表,执行:
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;
重启数据库使配置生效。
口令策略强化
PROFILE
(如DEFAULT
)设置密码复杂度,要求长度≥6位且包含数字、小写字母、大写字母、特殊符号中的至少2类:ALTER PROFILE DEFAULT LIMIT
PASSWORD_VERIFY_FUNCTION verify_function_11G
PASSWORD_LIFE_TIME 90 -- 密码有效期≤90天
PASSWORD_REUSE_TIME 30 -- 密码重复使用间隔≥30天
PASSWORD_LOCK_TIME 1/24 -- 失败5次锁定1小时
FAILED_LOGIN_ATTEMPTS 5; -- 最大失败次数
SYSDBA
用户远程登录,修改SPFILE
参数:ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=NONE SCOPE=SPFILE;
重启数据库。数据库审计开启
启用审计功能记录所有数据库访问行为(如SELECT
、INSERT
、DELETE
),执行:
ALTER SYSTEM SET AUDIT_TRAIL='DB,EXTENDED' SCOPE=SPFILE;
重启数据库后,可通过DBA_AUDIT_TRAIL
视图查询审计记录。
监听器安全设置
lsnrctl
LSNRCTL> SET CURRENT_LISTENER LISTENER
LSNRCTL> CHANGE_PASSWORD
(输入旧密码→新密码→确认新密码)
LSNRCTL> SAVE_CONFIG
$ORACLE_HOME/network/admin/sqlnet.ora
中添加:tcp.validnode_checking=YES
tcp.invited_nodes=(192.168.1.10,192.168.1.11) -- 仅允许信任IP连接
重启监听器(lsnrctl stop; lsnrctl start
)。防火墙规则配置
使用firewalld
或iptables
仅开放必要端口(如Oracle监听端口1521
、SSH端口22
),例如:
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload
或通过iptables
添加规则:
iptables -A INPUT -p tcp --dport 1521 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.5 -j ACCEPT
iptables -A INPUT -j DROP
保存规则(service iptables save
)。
网络传输加密
使用Oracle高级安全选件(Oracle Advanced Security)加密客户端与数据库之间的通信,修改$ORACLE_HOME/network/admin/sqlnet.ora
:
SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256)
SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA256)
客户端需配置相同参数以实现双向加密。
补丁与更新管理
定期检查Oracle Linux系统及Oracle数据库补丁,通过yum update
更新系统,通过Oracle Support下载并安装数据库补丁(如PSU、CPU),修复已知漏洞。
日志监控与分析
/var/log/secure
)监控异常登录(如多次失败登录);DBA_AUDIT_TRAIL
)发现未授权操作;ELK Stack
、Splunk
)实现日志集中分析与实时告警。备份与恢复策略
制定定期备份计划(全备+增量备),使用RMAN
工具备份数据库至异地存储(如NAS、云存储),定期测试备份恢复流程(如模拟磁盘故障恢复),确保数据可恢复。
以上策略需根据实际业务需求调整,实施前应在测试环境验证兼容性,避免影响数据库正常运行。