- 首页 >
- 问答 >
-
云计算 >
- centos系统sqlplus安全设置指南
centos系统sqlplus安全设置指南
小樊
39
2026-01-02 03:48:33
CentOS 上 SQL*Plus 安全设置指南
一 适用场景与总体原则
- 面向在 CentOS 上使用 SQL*Plus 连接 Oracle 数据库 的运维与安全加固,覆盖数据库侧账户与权限、网络与加密、客户端环境与系统账户安全四个层面。
- 坚持最小权限、最小暴露面与可审计原则:仅开放必要端口与来源、强制加密与强口令、细粒度授权、开启审计与登录监控、定期补丁与凭据轮换。
二 数据库侧安全配置
- 账户与权限
- 创建业务用户并采用最小权限模型,避免使用 SYS/SYSTEM 进行日常操作;按需授予 CREATE SESSION 与对象/系统权限,并通过角色进行分组授权与回收,便于审计与治理。
- 示例:
- CREATE USER appuser IDENTIFIED BY ‘Str0ngP@ss!’;
- ALTER USER appuser DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
- GRANT CREATE SESSION, CREATE TABLE TO appuser;
- 密码策略与复杂度
- 使用 PROFILE 实施复杂度与生命周期管理,调用 Oracle 提供的 utlpwdmg.sql 建立强校验函数,并绑定到 DEFAULT 或业务 PROFILE。
- 建议将关键参数设置为:最大有效期 180 天、最小重用间隔 UNLIMITED(或按策略收紧)、失败登录锁定 10 次、锁定时间 1 天、宽限 7 天、启用密码复杂度校验函数。
- 示例:
- @?/rdbms/admin/utlpwdmg.sql
- ALTER PROFILE DEFAULT LIMIT
- FAILED_LOGIN_ATTEMPTS 10
- PASSWORD_LIFE_TIME 180
- PASSWORD_REUSE_TIME UNLIMITED
- PASSWORD_REUSE_MAX UNLIMITED
- PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G
- PASSWORD_LOCK_TIME 1
- PASSWORD_GRACE_TIME 7;
- 登录审计与连接监控
- 开启数据库审计,记录登录/关键 DML/DDL,便于合规与溯源。
- 示例:ALTER SYSTEM SET audit_trail=DB,EXTENDED SCOPE=SPFILE;(重启后生效)
- 建立登录触发器,记录 SYS_CONTEXT(‘USERENV’,‘SESSION_USER’) 与登录时间到专用表,用于实时监测异常登录。
- 远程登录与来源限制
- 如业务允许,关闭 SYSDBA 远程登录:ALTER SYSTEM SET remote_login_passwordfile=NONE SCOPE=SPFILE;(需重启实例)
- 通过 sqlnet.ora 限制可连接主机(白名单),仅允许受控网段访问数据库监听端口。
- 示例:
- tcp.validnode_checking = yes
- tcp.invited_nodes = (192.168.1.0/24,10.0.0.10)
- 执行 lsnrctl reload 使配置生效
- 会话保活与半开连接治理
- 在 sqlnet.ora 设置 SQLNET.EXPIRE_TIME=15(单位:分钟),由服务器主动探测死连接,缓解半开连接与资源占用。
三 传输加密与网络访问控制
- 强制加密传输
- 在 sqlnet.ora 启用服务器端加密与校验,优先使用 AES256 等高强度套件,防止明文/弱加密流量被窃听与篡改。
- 示例:
- SQLNET.ENCRYPTION_SERVER = required
- SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
- SQLNET.CRYPTO_CHECKSUM_SERVER = required
- 操作系统与防火墙层面
- 仅开放数据库监听端口(默认 1521/TCP),使用 firewalld/iptables 对来源网段做白名单控制,禁止公网直连数据库。
- 示例(firewalld):firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“1521” protocol=“tcp” accept’ && firewall-cmd --reload
- 监听与连接加固
- 避免使用默认监听名称与弱口令;按需启用 ADR 与日志轮转,确保告警与追踪信息完整留存。
四 客户端环境与凭据安全
- 客户端安装与最小权限
- 在 CentOS 客户端使用 Oracle Instant Client(Basic + SQL*Plus),按最小化原则安装,仅授予运行用户读取与执行权限。
- 示例:
- rpm -ivh oracle-instantclient19.9-basic-19.9.0.0.0-1.x86_64.rpm
- rpm -ivh oracle-instantclient19.9-sqlplus-19.9.0.0.0-1.x86_64.rpm
- 目录与文件权限
- 限制 Oracle 客户端目录与网络配置文件的访问权限,仅允许 oracle 用户与必要组读取,禁止其他用户访问敏感文件。
- 示例:
- chmod 750 $ORACLE_HOME
- chmod 600 $TNS_ADMIN/*
- 环境变量与连接串
- 通过 /etc/profile.d/oracle.sh 设置 ORACLE_HOME、PATH、LD_LIBRARY_PATH、TNS_ADMIN、NLS_LANG,避免明文密码出现在脚本与命令行历史中;优先使用 TNS 别名 或 EZConnect 直连串,避免在多处维护主机与端口。
- 示例:sqlplus user/“P@ssw0rd”@//dbhost.example.com:1521/orcl.example.com
- 凭据治理
- 禁止在脚本中硬编码口令;使用 Wallet(sqlnet.ora + cwallet.sso)、作业调度系统的凭据保险箱或 Vault 方案进行凭据托管与轮换;限制 .bash_history、ps 输出与进程环境变量中的可见性。
五 操作系统账户与会话安全
- 系统账户与登录安全
- 仅使用专用 oracle 系统账户运行客户端/脚本;锁定不必要的系统账户,设置 umask 027,分离开发与生产凭据与主机。
- 对 SSH 登录实施源地址限制、失败锁定与超时退出,降低暴力破解与横向移动风险。
- 示例(PAM + SSH):
- /etc/pam.d/sshd:auth required pam_tally2.so deny=5 unlock_time=1800
- /etc/ssh/sshd_config:PermitRootLogin no,AllowUsers oracle@10.0.0.0/8
- 会话空闲超时
- 设置 TMOUT=600(单位:秒)强制终端空闲断开,减少无人值守会话被滥用风险。
- 示例:echo “TMOUT=600” >> /etc/profile && source /etc/profile
- 合规提示
- 涉及等保 2.0、PCI-DSS 等场景时,需结合测评项逐条落实(身份鉴别、访问控制、加密传输、审计留痕、剩余信息保护等),并保留配置与审计记录以备查。