温馨提示×

Oracle Linux版如何进行安全加固

小樊
36
2025-11-08 23:03:18
栏目: 云计算

Oracle Linux版安全加固指南
Oracle Linux作为Oracle数据库的常用操作系统,其安全加固需从系统层数据库层网络层权限管理四大维度综合实施,以下是具体措施:

一、系统层安全加固

1. 系统更新与补丁管理

定期通过yum update命令更新Oracle Linux系统及内核,安装所有可用的安全补丁,修复已知漏洞,降低被攻击风险。更新前建议备份重要数据。

2. 禁用不必要的服务

使用systemctl list-units --type=service --state=running列出当前运行的服务,禁用不需要的服务(如telnetftpchronyd(若使用NTP替代)),减少攻击面。例如:systemctl disable telnet

3. 配置防火墙(firewalld)

Oracle Linux默认使用firewalld,需配置严格的访问规则:

  • 设置默认策略:firewall-cmd --set-default-zone=drop(拒绝所有未明确允许的流量);
  • 允许必要服务:firewall-cmd --permanent --add-service=ssh(允许SSH远程管理)、firewall-cmd --permanent --add-port=1521/tcp(允许Oracle数据库默认端口);
  • 限制访问源:通过--add-source--add-interface指定可信IP或网段,例如firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24
  • 重载配置:firewall-cmd --reload

4. 强化SSH安全

  • 更改SSH默认端口(如2222):编辑/etc/ssh/sshd_config,修改Port 2222,重启SSH服务;
  • 禁用root远程登录:设置PermitRootLogin no
  • 使用SSH密钥对替代密码登录:生成密钥对(ssh-keygen -t rsa),将公钥添加至~/.ssh/authorized_keys,设置PasswordAuthentication no

5. 禁用SELinux(可选)

若无需SELinux的强制访问控制,可临时禁用(setenforce 0)或永久禁用(编辑/etc/selinux/config,设置SELINUX=disabled)。但需注意,禁用SELinux可能降低系统安全性,建议仅在必要时使用。

二、数据库层安全加固

1. 更新Oracle数据库版本与补丁

确保Oracle Database运行在支持的版本(如19c及以上),并安装最新的安全补丁包(CPU、PSU),修复数据库漏洞。

2. 数据字典保护

设置O7_DICTIONARY_ACCESSIBILITY=FALSE(默认值),限制普通用户访问数据字典基础表(如SYS.USER$),仅允许SYSDBA用户访问敏感数据字典对象。

3. 限制DBA组用户数量

清理dba组中不必要的用户(如测试账号),仅保留需要数据库管理权限的运维人员。使用usermod -G dba username将用户添加至dba组,或gpasswd -d username dba移除用户。

4. 设置数据库口令复杂度

修改PROFILE(如DEFAULT),强制用户设置复杂密码:

ALTER PROFILE DEFAULT LIMIT 
PASSWORD_LIFE_TIME 90,          -- 密码有效期90天
PASSWORD_REUSE_TIME UNLIMITED,  -- 允许重复使用密码
PASSWORD_REUSE_MAX UNLIMITED,   -- 无重复次数限制
FAILED_LOGIN_ATTEMPTS 5,        -- 失败5次锁定账户
PASSWORD_LOCK_TIME 1/24,        -- 锁定1小时
PASSWORD_VERIFY_FUNCTION verify_function;  -- 使用Oracle内置的密码验证函数

需提前创建verify_function(Oracle自带,位于$ORACLE_HOME/rdbms/admin/utlpwdmg.sql)。

5. 启用数据库审计

开启审计功能,记录用户操作(如登录、数据修改):

ALTER SYSTEM SET audit_trail='DB' SCOPE=SPFILE;  -- 审计信息存入数据库
-- 或 AUDIT_TRAIL='OS'(存入操作系统日志)
SHUTDOWN IMMEDIATE;
STARTUP;

审计记录可通过DBA_AUDIT_TRAIL视图查询。

6. 配置监听器密码

为监听器(LISTENER)设置密码,防止未授权修改监听配置:

$ lsnrctl
LSNRCTL> SET CURRENT_LISTENER LISTENER
LSNRCTL> CHANGE_PASSWORD
Old password: 
New password: 
Reenter new password: 
Password changed for LISTENER
LSNRCTL> SAVE_CONFIG

需重启监听器使密码生效。

7. 限制远程操作系统认证

设置REMOTE_OS_AUTHENT=FALSE(默认值),禁止通过操作系统用户直接登录数据库(无需密码),避免未经授权的用户通过本地操作系统账户访问数据库。

8. 修改默认监听端口

将监听器默认端口1521更改为其他端口(如3521),降低被端口扫描攻击的风险:
编辑$ORACLE_HOME/network/admin/listener.ora,修改PORT值:

LISTENER =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 3521))

重启监听器使更改生效。

9. 关闭远程监听管理

listener.ora中添加ADMIN_RESTRICTIONS_listener=ON,禁止远程用户通过lsnrctl管理监听器(如启动、停止),仅允许本地管理。

三、网络层安全加固

1. 配置可信IP访问控制

通过数据库sqlnet.ora文件限制可访问数据库的IP地址,避免非法IP连接:

tcp.validnode_checking = YES
tcp.invited_nodes = (192.168.1.100, 192.168.1.101)  -- 只允许这两个IP访问

重启数据库使配置生效。

2. 网络传输数据加密

使用Oracle高级安全选件(Oracle Advanced Security, OAS)加密客户端与数据库之间的网络传输数据(如SSL/TLS),防止数据泄露:
编辑sqlnet.ora,设置:

SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256)

客户端需配置相同的参数。

四、权限与用户管理

1. 遵循最小权限原则

为用户分配完成任务所需的最小权限,避免过度授权。例如:

  • 普通用户仅需CONNECTRESOURCE角色;
  • 开发人员需CREATE TABLESELECT ANY TABLE权限,而非DBA角色;
  • 管理员需SYSDBA权限,但需通过GRANT SYSDBA TO username WITH ADMIN OPTION谨慎授权。

2. 定期审查权限

使用以下SQL语句定期检查用户权限,删除不再需要的权限或用户:

-- 查看用户系统权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'USERNAME';
-- 查看用户角色权限
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'USERNAME';
-- 查看用户对象权限
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'USERNAME';
-- 删除权限
REVOKE SELECT ON schema.table FROM username;
REVOKE CONNECT FROM username;
```。  


通过以上措施,可全面提升Oracle Linux系统及数据库的安全性,降低被攻击的风险。需根据实际业务需求调整配置,定期进行安全审计与漏洞扫描。

0