Ubuntu中Oracle数据库的安全设置
Ubuntu系统中Oracle数据库的安全设置
在Ubuntu上部署Oracle数据库时,需从操作系统加固、Oracle数据库配置、网络访问控制、数据保护、监控审计五大维度构建多层安全防线,以下是具体实施步骤:
一、操作系统级安全配置
1. 系统更新与补丁管理
定期更新Ubuntu系统和Oracle数据库软件包,修复已知安全漏洞。执行以下命令更新系统:
sudo apt update &
&
sudo apt upgrade -y
建议安装unattended-upgrades
包实现自动更新,降低未修补漏洞的风险。
2. 用户与权限管理
- 禁用root远程登录:编辑
/etc/ssh/sshd_config
,设置PermitRootLogin no
,并重启SSH服务:sudo systemctl restart sshd
- 设置密码策略:通过
/etc/login.defs
文件定义密码规则(如最长使用90天、最小长度12位),并结合chage
命令强制用户定期修改密码:sudo chage -M 90 -m 7 -W 14 oracle # 强制oracle用户90天内修改密码,提前7天警告,过期14天锁定
- 最小权限原则:为Oracle服务创建专用用户(如
oracle
),仅授予其运行数据库所需的权限,避免使用root账户运行数据库进程。
3. 文件与目录权限
Oracle安装目录(如/u01/app/oracle/product/19.0.0/dbhome_1
)和数据目录(如/u01/app/oracle/oradata
)需严格限制访问权限:
sudo chown -R oracle:oinstall /u01/app/oracle # 所属用户为oracle,所属组为oinstall
sudo chmod -R 750 /u01/app/oracle # 用户可读写执行,组可读执行,其他用户无权限
关键配置文件(如/etc/passwd
、/etc/shadow
)需设置为仅root可读:
sudo chmod 600 /etc/shadow
4. 内核参数优化
编辑/etc/sysctl.conf
,添加Oracle推荐的性能与安全参数(如限制本地端口范围、禁用IP转发):
fs.file-max = 6815744 # 最大文件描述符数
net.ipv4.ip_local_port_range = 1024 65000 # 本地端口范围
net.ipv4.tcp_fin_timeout = 30 # TCP连接超时时间(秒)
net.ipv4.ip_forward = 0 # 禁用IP转发
应用配置:
sudo sysctl -p
二、Oracle数据库自身安全配置
1. 用户角色与权限管理
- 禁用默认账户:锁定SYS、SYSTEM等默认账户(除非必要),避免使用默认密码:
ALTER USER SYS ACCOUNT LOCK; ALTER USER SYSTEM ACCOUNT LOCK;
- 最小权限分配:为用户分配仅满足业务需求的权限,避免授予
DBA
等高权限角色。例如,创建角色app_user
并授予基本权限:CREATE ROLE app_user; GRANT CONNECT, RESOURCE TO app_user; GRANT SELECT ON scott.emp TO app_user; # 仅授予特定表的查询权限
- 密码策略强化:修改默认profile,设置密码复杂度(如包含大小写字母、数字、特殊字符)、有效期(90天)、锁定时间(1天):
ALTER PROFILE DEFAULT LIMIT PASSWORD_LENGTH 12 PASSWORD_LIFE_TIME 90 PASSWORD_LOCK_TIME 1 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION verify_function_11G; -- 使用Oracle内置的密码验证函数
2. 数据加密
- 传输层加密(SSL/TLS):配置Oracle Net Services使用SSL加密客户端与服务器之间的通信,防止数据被窃听。需生成证书、配置
sqlnet.ora
(添加SQLNET.AUTHENTICATION_SERVICES=(TCPS)
)和listener.ora
(指定SSL端口,如8443)。 - 存储层加密(透明数据加密,TDE):对敏感表空间或列(如用户密码、银行卡号)进行加密,即使数据文件泄露也无法直接读取。需配置Wallet(钱包)并启用TDE:
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/keystore' IDENTIFIED BY "strong_password"; ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "strong_password"; ALTER TABLESPACE users ENCRYPTION USING 'AES256';
3. 审计功能启用
开启Oracle审计功能,记录用户操作(如登录、数据修改、权限变更),便于事后追溯。设置审计轨迹存储在数据库(DB
)和扩展格式(EXTENDED
)中:
ALTER SYSTEM SET audit_trail = DB, EXTENDED SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 示例:审计所有用户对EMP表的SELECT操作
AUDIT SELECT ON scott.emp BY ACCESS;
定期检查审计日志(位于DBA_AUDIT_TRAIL
视图),识别异常行为。
三、网络安全防护
1. 防火墙配置
使用Ubuntu自带的ufw
(Uncomplicated Firewall)限制对Oracle端口的访问,仅允许受信任的IP地址访问数据库端口(默认1521)和SSH端口(默认22):
sudo ufw allow from trusted_ip to any port 1521 # 替换trusted_ip为受信任的IP地址
sudo ufw allow 22/tcp
sudo ufw enable
通过sudo ufw status
验证规则是否生效。
2. SSH加固
修改SSH配置文件(/etc/ssh/sshd_config
),提升远程管理安全性:
- 修改默认端口(如2222):
Port 2222
- 禁用root登录:
PermitRootLogin no
- 仅允许密钥认证:
PasswordAuthentication no
- 设置空闲超时(如30分钟):
ClientAliveInterval 1800
重启SSH服务使配置生效:
sudo systemctl restart sshd
3. 限制网络访问
通过Oracle监听器配置限制可连接的IP地址,在listener.ora
中添加TCP.VALIDNODE_CHECKING=yes
和TCP.INVITED_NODES=(trusted_ip1,trusted_ip2)
,仅允许指定IP地址连接数据库:
# listener.ora示例
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
)
)
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES = (192.168.1.100, 10.0.0.5)
重启监听器使配置生效:
lsnrctl stop
lsnrctl start
四、监控与维护
1. 日志监控
定期检查Ubuntu系统日志(/var/log/syslog
、/var/log/auth.log
)和Oracle告警日志(位于$ORACLE_BASE/diag/rdbms/<
db_name>
/<
instance_name>
/trace/alert_<
instance_name>
.log
),监控异常登录、权限变更、数据库错误等信息。
2. 安全更新
定期检查Oracle官方安全公告(如My Oracle Support),及时应用数据库补丁,修复已知漏洞。建议设置自动补丁提醒,避免遗漏关键更新。
3. 备份与恢复
制定定期备份策略(如每日增量备份、每周全量备份),使用RMAN(Recovery Manager)工具备份数据库,并将备份文件存储在异地或云存储中。定期测试备份的可恢复性,确保在发生安全事件(如数据篡改、删除)时能够快速恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu中Oracle数据库的安全设置
本文地址: https://pptw.com/jishu/716573.html