温馨提示×

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 等场景时,需结合测评项逐条落实(身份鉴别、访问控制、加密传输、审计留痕、剩余信息保护等),并保留配置与审计记录以备查。

0