在Ubuntu系统上部署Oracle数据库时,需通过操作系统加固、Oracle数据库配置、网络安全防护、数据加密、监控审计等多层措施,全面提升系统安全性,防范未授权访问、数据泄露及恶意攻击。
定期更新Ubuntu系统和Oracle数据库软件包,修复已知安全漏洞。执行以下命令更新系统:
sudo apt-get update && sudo apt-get upgrade -y
建议安装unattended-upgrades包,配置自动更新策略,确保系统及时获取安全补丁。
/etc/ssh/sshd_config文件,设置PermitRootLogin no,禁止root账户通过SSH远程登录。oracle用户并加入oinstall、dba等组,限制其操作范围:sudo groupadd oinstall dba
sudo useradd -g oinstall -G dba -s /bin/bash oracle
sudo passwd oracle  # 设置强密码
/etc/login.defs文件设置密码有效期(如PASS_MAX_DAYS 90)、最小长度(如PASS_MIN_LEN 12),并使用chage命令强制用户定期修改密码。Oracle安装目录(如/u01/app/oracle/product/19.3.0/dbhome_1)和数据目录(如/u01/oradata)需严格限制访问权限:
sudo chown -R oracle:oinstall /u01/app/oracle
sudo chmod -R 750 /u01/app/oracle  # 确保只有owner和group可读写执行
配置文件(如/etc/hosts.allow、/etc/passwd)权限设为644,避免非法修改。
SELECT、INSERT),避免授予DBA等高权限角色。SYS、SYSTEM账户的默认密码(默认为change_on_install),禁用未使用的默认账户(如SCOTT)。ALTER PROFILE命令设置密码复杂度、有效期及锁定策略:ALTER PROFILE DEFAULT LIMIT 
  PASSWORD_LENGTH 12 
  PASSWORD_LIFE_TIME 90 
  PASSWORD_LOCK_TIME 1 
  PASSWORD_REUSE_MAX 5 
  PASSWORD_STRENGTH MEDIUM;
expdp/impdp)与物理备份(RMAN)相结合的方式,备份数据至加密存储介质,并定期测试备份可恢复性。激活Oracle审计功能,记录用户操作(如登录、数据修改、权限变更),便于追溯异常行为:
ALTER SYSTEM SET audit_trail = DB, EXTENDED SCOPE=SPFILE;  -- 开启数据库审计
ALTER SYSTEM SET audit_sys_operations = TRUE SCOPE=SPFILE;  # 审计SYS账户操作
重启数据库使配置生效,通过DBA_AUDIT_TRAIL视图查看审计日志。
使用UFW(Uncomplicated Firewall)限制系统访问,仅开放必要端口(如SSH的22端口、Oracle监听端口1521):
sudo apt-get install ufw -y
sudo ufw allow 22/tcp  # SSH
sudo ufw allow 1521/tcp  # Oracle监听端口
sudo ufw enable  # 启用防火墙
通过iptables进一步限制对Oracle端口的访问,仅允许受信任IP地址连接。
修改SSH默认端口(如65534),禁用密码认证,仅允许密钥认证,降低SSH暴力破解风险:
sudo nano /etc/ssh/sshd_config
修改以下参数:
Port 65534
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
重启SSH服务使配置生效:sudo systemctl restart sshd。
通过sysctl配置限制本地端口范围、禁用TCP SACK机制(防范DoS攻击):
echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
echo "net.ipv4.tcp_sack = 0" >> /etc/sysctl.conf
sysctl -p  # 应用配置
减少攻击面,提升网络安全性。
定期检查Ubuntu系统日志(/var/log/syslog、/var/log/auth.log)和Oracle告警日志($ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log),监控异常登录、权限变更等行为。使用journalctl命令实时查看系统日志:
sudo tail -f /var/log/syslog
sudo journalctl -u sshd -f  # 实时监控SSH日志
部署Zabbix、Nagios等监控工具,实时监控Oracle数据库的性能指标(如CPU使用率、内存占用、连接数)和系统资源状态,及时预警异常情况。
systemctl disable命令关闭不需要的系统服务(如Apache、MySQL),减少潜在攻击面。以上安全设置需根据实际业务需求和环境调整,定期复查并更新安全策略,确保Oracle数据库在Ubuntu环境中的安全性。