温馨提示×

Oracle在Ubuntu上如何进行安全加固

小樊
50
2025-10-12 09:30:58
栏目: 云计算

Oracle在Ubuntu上的安全加固指南
Oracle数据库在Ubuntu上的安全加固需从操作系统层、数据库层、网络层、监控层四大维度综合施策,以下是具体实施步骤:

一、操作系统级安全加固

1. 系统更新与补丁管理

定期更新Ubuntu系统和Oracle数据库,修复已知安全漏洞。执行sudo apt update && sudo apt upgrade更新系统;安装unattended-upgrades包(sudo apt install unattended-upgrades),通过编辑/etc/apt/apt.conf.d/50unattended-upgrades文件开启自动安全更新(如设置Unattended-Upgrade::Allowed-Origins包含"${distro_id}:${distro_codename}-security")。

2. 用户与权限管理

  • 禁用root远程登录:修改/etc/ssh/sshd_config文件,设置PermitRootLogin no,重启SSH服务(sudo systemctl restart sshd)。
  • 创建专用Oracle用户:新建oracle用户(sudo useradd -m -s /bin/bash oracle),将其加入oinstall(软件安装)、dba(数据库管理)组(sudo usermod -aG oinstall,dba oracle),并设置强密码(包含大小写字母、数字、特殊字符,长度≥12位)。
  • 密码策略强化:编辑/etc/login.defs文件,设置密码有效期(PASS_MAX_DAYS 90)、密码失效前警告天数(PASS_WARN_AGE 7);使用chage命令强制用户定期修改密码(sudo chage -M 90 oracle)。

3. 文件与目录权限

Oracle安装目录(如/u01/app/oracle/product/19.0.0/dbhome_1)和数据目录(如/u01/oradata)需严格限制权限:

sudo chown -R oracle:oinstall /u01/app/oracle /u01/oradata
sudo chmod -R 750 /u01/app/oracle /u01/oradata

确保敏感文件(如listener.orasqlnet.ora)仅能被Oracle用户读取(sudo chmod 640 /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/*.ora)。

二、Oracle数据库级安全加固

1. 用户角色与权限控制

  • 禁用默认弱账户:锁定SYS、SYSTEM以外的默认账户(如SCOTT),执行ALTER USER scott ACCOUNT LOCK
  • 最小权限分配:避免直接授予DBA角色,按需分配细粒度权限(如GRANT SELECT, INSERT ON emp TO emp_user);使用角色封装权限(如创建app_role角色,分配业务权限后授予用户)。
  • 密码策略强化:修改默认PROFILE,设置密码复杂度(PASSWORD_STRENGTH MEDIUM)、长度(PASSWORD_LENGTH 12)、有效期(PASSWORD_LIFE_TIME 90)、锁定时间(PASSWORD_LOCK_TIME 1):
ALTER PROFILE DEFAULT LIMIT 
PASSWORD_VERIFY_FUNCTION verify_function_11G
PASSWORD_LENGTH 12
PASSWORD_LIFE_TIME 90
PASSWORD_LOCK_TIME 1
PASSWORD_REUSE_MAX 5;
  • 启用密码历史:防止密码重复使用(ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX 5; PASSWORD_REUSE_TIME 365)。

2. 数据加密

  • 传输层加密(SSL/TLS):生成SSL证书(可使用OpenSSL),配置sqlnet.oraSQLNET.AUTHENTICATION_SERVICES=(TCPS))、listener.oraLISTENER = (ADDRESS = (PROTOCOL = TCPS)(HOST = your_host)(PORT = 2484))),强制客户端使用SSL连接(ALTER SYSTEM SET sqlnet.authentication_services=(TCPS) SCOPE=SPFILE)。
  • 存储层加密(TDE):启用透明数据加密(TDE),加密敏感表空间(如USERS),执行:
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/keystore' IDENTIFIED BY "keystore_pwd";
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "keystore_pwd";
ADMINISTER KEY MANAGEMENT CREATE MASTER KEY;
ALTER TABLESPACE users ENCRYPTION USING 'AES256' ONLINE;
```。  

#### 3. 审计与监控  
- **启用审计功能**:设置审计策略,记录DDL操作(如`CREATE TABLE`)、数据修改(如`INSERT/UPDATE/DELETE`)和敏感操作(如`GRANT DBA`),执行:  
```sql
AUDIT CREATE TABLE, INSERT TABLE, UPDATE TABLE, DELETE TABLE, GRANT DBA BY ACCESS;
AUDIT SYSOPER, SYSDBA BY ACCESS;
  • 查看审计日志:审计日志默认存储在$ORACLE_BASE/admin/$ORACLE_SID/adump目录下,定期检查(SELECT * FROM DBA_AUDIT_TRAIL WHERE TIMESTAMP > SYSDATE-7;)。
  • 启用数据库防火墙:使用Oracle Database Firewall监控异常SQL语句(如SQL注入),阻断恶意请求。

三、网络安全加固

1. 防火墙配置

使用UFW(Uncomplicated Firewall)限制访问,仅开放必要端口:

sudo ufw allow ssh  # 允许SSH(默认22端口)
sudo ufw allow 1521/tcp  # 允许Oracle监听端口(默认1521)
sudo ufw allow 2484/tcp  # 允许Oracle SSL监听端口(若启用SSL)
sudo ufw enable  # 启用防火墙

通过sudo ufw status验证规则。

2. SSH安全加固

  • 修改默认端口:编辑/etc/ssh/sshd_config,设置Port 2222(或其他非标准端口),重启SSH服务。
  • 禁用密码认证:设置PasswordAuthentication no,仅允许密钥认证(需提前将公钥添加至~/.ssh/authorized_keys)。
  • 设置空闲超时:添加ClientAliveInterval 300(5分钟无操作断开连接),防止会话劫持。

3. 限制网络访问

  • Oracle监听器配置:修改listener.ora,绑定特定IP地址(而非0.0.0.0),限制访问源IP(如LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))。
  • TCP参数优化:修改/etc/sysctl.conf,禁用TCP SACK(防止DoS攻击)、限制本地端口范围、调整TCP超时:
net.ipv4.tcp_sack = 0
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_fin_timeout = 30

执行sudo sysctl -p使配置生效。

四、监控与维护

1. 安全监控

  • 启用SELinux/AppArmor:Ubuntu默认使用AppArmor,通过sudo aa-status查看状态,编辑/etc/apparmor.d/usr.sbin.oracle限制Oracle进程权限(如禁止访问/tmp目录)。
  • 日志分析:定期检查系统日志(/var/log/syslog/var/log/auth.log)和Oracle审计日志,使用fail2ban自动封禁频繁失败的登录尝试。

2. 备份与恢复

  • 定期备份:采用RMAN(Recovery Manager)进行物理备份(全备+增量备份),设置自动化备份脚本(如每天凌晨2点执行全备);同时进行逻辑备份(如expdp导出关键表)。
  • 备份测试:每月测试备份恢复流程,确保备份可用性(如恢复至测试环境验证数据完整性)。

五、其他安全措施

  • 修改默认配置:修改Oracle监听器端口(默认1521)、服务名(默认ORCL),减少扫描攻击风险;禁用不必要的Oracle服务(如自动工作负载存储库AWR、Enterprise Manager OEM,若无需使用)。
  • 关闭自动启动服务:通过systemctl disable命令关闭不需要的系统服务(如Apache、MySQL),减少攻击面。

以上措施需根据Oracle版本(如19c、21c)和Ubuntu发行版(如22.04、24.04)调整,实施后需定期复查(如每季度)以应对新威胁。

0