温馨提示×

centos下sqlplus安全防护

小樊
39
2025-10-26 00:02:22
栏目: 云计算

CentOS下SQL*Plus安全防护实践

一、操作系统级权限控制

1. 用户与组权限管理

通过/etc/passwd/etc/shadow/etc/group三个核心文件管理用户身份及权限。使用passwd -S username命令查看用户状态(如PS表示密码已设置、LK表示锁定),chage命令管理密码有效期(如chage -M 90 -m 7 -W 10 username设置密码最大使用90天、修改后7天内不可再改、过期前10天提醒)。避免将SQL*Plus用户加入root组或其他高权限组,降低越权风险。

2. 文件与目录权限设置

确保SQLPlus相关文件(如配置文件、脚本)的权限合理。例如,用户家目录权限设为750chmod 750 /home/username),避免其他用户读取敏感信息;SQLPlus配置文件(如.sqlplus)权限设为600chmod 600 /home/username/.sqlplus),防止未授权修改。

二、SQL*Plus自身安全配置

1. 强制密码提示

编辑SQL*Plus配置文件(通常位于用户家目录),将默认的“Enter user-name:”提示保留,避免自动填充用户名。例如,修改文件中的SQL*Plus: Release...行为Enter user-name:,强制用户手动输入用户名,减少密码泄露风险。

2. 限制SQL*Plus命令执行

通过sqlnet.ora文件配置SQLNET.ALLOWED_LOGON_VERSION_SERVER参数,限制SQL*Plus客户端版本(如设置为12,仅允许12及以上版本的客户端连接),防止低版本客户端带来的安全漏洞。同时,使用REVOKE命令回收不必要的权限(如REVOKE DROP ANY TABLE FROM username),避免用户执行高危操作。

三、操作系统密码安全策略

1. 密码复杂度要求

修改/etc/pam.d/system-auth/etc/pam.d/password-auth文件,添加密码复杂度规则。例如,使用pam_pwquality.so模块设置minlen=12(最小长度12位)、dcredit=-1(至少1位数字)、ucredit=-1(至少1位大写字母)、lcredit=-1(至少1位小写字母)、ocredit=-1(至少1位特殊符号),并使用pam_unix.so模块记住最近5次密码(remember=5),防止重复使用旧密码。

2. 密码有效期与锁定

通过/etc/login.defs文件设置全局密码策略(如PASS_MAX_DAYS 90PASS_MIN_DAYS 7PASS_WARN_AGE 10),并结合chage命令应用到具体用户。当用户输错密码5次时,使用pam_tally2.so模块锁定账户300秒(deny=5 unlock_time=300),防止暴力破解。

四、网络安全防护

1. 防火墙端口控制

使用firewall-cmd命令开放Oracle数据库端口(默认1521),并限制访问源IP。例如:

firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload

仅允许可信IP(如运维人员IP)访问1521端口,减少非法连接风险。

2. SELinux配置

若SELinux处于Enforcing模式,需调整策略允许SQLPlus访问网络。例如,执行setsebool -P oracle_sqlplus_can_network_connect 1开启SQLPlus网络连接权限,或在/etc/selinux/config中将SELINUX设为permissive模式(测试环境使用),避免SELinux阻止SQL*Plus正常运行。

五、Oracle数据库级安全增强

1. 用户权限最小化

为用户分配仅满足业务需求的最小权限,避免使用GRANT DBA TO username等高危命令。例如,仅为报表用户分配SELECT权限:

GRANT SELECT ON schema.table TO report_user;

使用角色管理权限(如创建report_role角色,分配SELECT权限,再将角色授予用户),简化权限管理并降低误操作风险。

2. 审计功能开启

通过AUDIT命令开启关键操作审计,例如审计用户登录、数据修改:

AUDIT CREATE SESSION BY ACCESS;
AUDIT INSERT, UPDATE, DELETE ON schema.table BY ACCESS;

审计日志存储在SYS.AUD$表中,可通过查询该表追踪异常操作,及时发现安全威胁。

0