centos sqlplus安全设置建议
导读:CentOS环境下SQL*Plus安全设置建议 1. 用户权限精细化管理 最小权限原则分配权限:创建用户时,仅授予完成工作所需的最低权限(如CREATE SESSION用于连接数据库,SELECT/INSERT/UPDATE用于数据操作,...
CentOS环境下SQL*Plus安全设置建议
1. 用户权限精细化管理
- 最小权限原则分配权限:创建用户时,仅授予完成工作所需的最低权限(如
CREATE SESSION用于连接数据库,SELECT/INSERT/UPDATE用于数据操作,避免直接授予DBA等高权限角色)。例如:CREATE USER app_user IDENTIFIED BY StrongPassword123; GRANT CREATE SESSION, SELECT ON schema.table TO app_user; FLUSH PRIVILEGES; - 限制默认角色:避免为用户设置默认角色(如
DBA),如需使用角色,应在连接时显式启用(如SET ROLE admin_role;),防止用户默认拥有过高权限。 - 定期审计用户权限:通过
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER';查询用户权限,及时回收不必要的权限(如REVOKE DROP ANY TABLE FROM app_user;)。
2. 密码策略强化
- 设置密码有效期:通过
chage命令配置密码有效期(如90天)、修改间隔(如7天)、过期提醒(如10天):chage -M 90 -m 7 -W 10 app_user - 强制密码复杂度:修改PAM配置文件(
/etc/pam.d/system-auth和/etc/pam.d/password-auth),要求密码包含大小写字母、数字、特殊字符(如dcredit=-1要求至少1个数字,ucredit=-1要求至少1个大写字母),并禁止使用最近5次密码:sed -i '/pam_pwquality.so/s/^/#/; s/$/ dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 minlen=12 remember=5/' /etc/pam.d/system-auth - 定期更换密码:通过
passwd -x 90 app_user设置密码最大使用天数,提醒用户主动更换密码。
3. 网络与连接安全
- 限制远程访问IP:通过CentOS防火墙(
firewalld)仅开放SQL*Plus使用的端口(默认1521)给特定IP段:firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="1521" accept' --permanent firewall-cmd --reload - 禁用不必要协议:修改Oracle监听器配置文件(
$ORACLE_HOME/network/admin/listener.ora),移除TCP以外的协议(如IPC、SDP),仅保留TCP:LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_server_ip)(PORT = 1521)) ) ) - 启用连接加密:在
sqlnet.ora中配置SQLNET.ENCRYPTION_SERVER=REQUIRED和SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED,强制加密客户端与服务器之间的通信,防止数据泄露。
4. 审计与监控
- 开启数据库审计:通过Oracle审计功能记录用户操作(如登录、数据修改),便于追溯异常行为。例如,审计所有用户的
SELECT操作:AUDIT SELECT TABLE BY ACCESS; - 监控登录日志:定期检查Oracle审计日志(
$ORACLE_HOME/rdbms/audit/)和CentOS系统日志(/var/log/secure),关注异常登录(如频繁失败、非工作时间登录)。 - 使用Shell脚本自动化审计:编写脚本定期查询审计表(如
DBA_AUDIT_TRAIL),生成审计报告(如每日用户操作汇总),并通过邮件发送给管理员。
5. 系统与环境安全
- 锁定无用账户:禁用或删除系统中无用的账户(如
games、nobody),防止非法使用:usermod -L games # 锁定账户 userdel nobody # 删除账户 - 保护敏感文件权限:确保Oracle相关文件(如
$ORACLE_HOME/bin/sqlplus、$ORACLE_HOME/network/admin/tnsnames.ora)的权限正确,仅允许Oracle用户和dba组访问:chmod 750 $ORACLE_HOME/bin/sqlplus chown oracle:dba $ORACLE_HOME/network/admin/tnsnames.ora - 使用SSH反向隧道:若需远程访问SQL*Plus,通过SSH反向隧道将本地端口映射到远程服务器,避免直接暴露1521端口:
此时,本地可通过ssh -N -R 1521:localhost:1521 remote_user@remote_server_ipsqlplus user/password@localhost:1521/service_name连接远程数据库。
6. SQL*Plus配置安全
- 避免明文存储密码:不要在命令行中直接输入密码(如
sqlplus user/password),而是通过交互式提示输入(默认行为),或使用加密工具(如Oracle Wallet)存储密码。 - 配置SQL*Plus提示符:修改
$ORACLE_HOME/sqlplus/admin/glogin.sql文件,添加自定义提示符(如显示当前用户和数据库),提醒用户当前环境:SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER> " - 禁用自动连接:编辑SQL*Plus配置文件(如
~/.sqlplusrc),移除自动连接的配置(如CONNECT user/password@service_name),避免未经授权的自动连接。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos sqlplus安全设置建议
本文地址: https://pptw.com/jishu/736471.html
