在Ubuntu系统上配置Oracle数据库安全需从操作系统层、数据库层、网络层三个维度综合防护,覆盖权限管理、加密传输、审计监控等关键环节,以下是具体实施步骤:
定期更新Ubuntu系统和Oracle数据库,修复已知安全漏洞。执行以下命令更新系统:
sudo apt-get update && sudo apt-get upgrade -y
对于Oracle数据库,需通过Oracle官方补丁门户下载并应用最新安全补丁,确保数据库版本无已知高危漏洞。
oracle用户并加入oinstall(安装组)、dba(数据库管理员组)等必要组:sudo groupadd oinstall dba
sudo useradd -g oinstall -G dba -s /bin/bash oracle
sudo passwd oracle # 设置强密码
/etc/login.defs文件,设置密码有效期(如90天)、最小长度(如12位)、锁定时间(如1天)等参数;使用chage命令为用户设置密码过期提醒:sudo chage -M 90 -m 7 -W 3 oracle # 密码有效期90天,提前7天提醒,过期3天锁定
/etc/ssh/sshd_config文件:PermitRootLogin no
重启SSH服务使配置生效:sudo systemctl restart sshd。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.ora、tnsnames.ora)权限设置为640,仅允许Oracle用户和dba组读取:
sudo chmod 640 $ORACLE_HOME/network/admin/*.ora
sudo chown oracle:dba $ORACLE_HOME/network/admin/*.ora
```。
## 二、Oracle数据库级安全配置
### 1. 用户角色与权限管理
- **最小权限原则**:仅为用户分配完成工作所需的最小权限,避免授予`DBA`等高权限角色。例如,创建普通用户时仅授权`SELECT`、`INSERT`权限:
```sql
CREATE USER app_user IDENTIFIED BY StrongPassword;
GRANT CONNECT, RESOURCE TO app_user;
SYS、SYSTEM),修改其密码并限制登录方式:ALTER USER SYS IDENTIFIED BY NewStrongPassword ACCOUNT LOCK;
ALTER USER SYSTEM IDENTIFIED BY NewStrongPassword ACCOUNT LOCK;
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LENGTH 12
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION ORACLE_VERIFY_FUNCTION;
```。
$ORACLE_HOME/network/admin/listener.ora文件,限制监听器端口(默认1521)仅允许受信任IP访问,禁用动态注册:LISTENER =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
SECURE_REGISTER = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
重启监听器使配置生效:lsnrctl stop && lsnrctl start。sqlnet.ora文件:SQLNET.AUTHENTICATION_SERVICES = (TCPS)
SSL_CLIENT_AUTHENTICATION = TRUE
SSL_VERSION = 1.2
将证书导入Oracle钱包,确保客户端连接时使用TCPS协议。SELECT * FROM sensitive_table、DROP TABLE、用户登录/注销),便于追溯异常行为:AUDIT SELECT TABLE, INSERT TABLE, UPDATE TABLE, DELETE TABLE BY ACCESS;
AUDIT CREATE SESSION, DROP TABLE, ALTER SYSTEM BY SYS, SYSTEM;
查看审计日志:SELECT * FROM DBA_AUDIT_TRAIL WHERE TIMESTAMP > SYSDATE - 7;使用Ubuntu自带的ufw(Uncomplicated Firewall)限制对Oracle数据库端口的访问,仅允许受信任IP(如应用服务器IP)访问1521端口:
sudo ufw allow from 192.168.1.0/24 to any port 1521 proto tcp
sudo ufw enable
禁止其他不必要的端口(如FTP、Telnet),减少攻击面。
通过systemctl命令禁用Ubuntu系统中未使用的服务(如Apache、MySQL、CUPS),降低系统被攻击的风险:
sudo systemctl stop apache2 mysql cups
sudo systemctl disable apache2 mysql cups
```。
## 四、持续维护与优化
- **定期备份**:使用Oracle RMAN(Recovery Manager)工具定期备份数据库(全备+增量备),备份文件存储在安全位置(如异地服务器、云存储),并测试备份的可恢复性。
- **日志审查**:每日检查系统日志(`/var/log/syslog`、`/var/log/auth.log`)和Oracle审计日志,分析异常行为(如大量失败登录、未授权访问),及时响应安全事件。
- **安全评估**:每季度进行一次安全评估,使用漏洞扫描工具(如Nessus、OpenVAS)检测系统和数据库漏洞,根据评估结果调整安全策略。
以上配置需根据Ubuntu和Oracle的具体版本(如Ubuntu 22.04 LTS、Oracle 19c/21c)进行调整,执行前请参考官方文档并备份重要数据。安全性是持续过程,需定期更新策略以应对新威胁。