温馨提示×

centos里sqlplus安全设置指南

小樊
40
2025-12-31 04:47:30
栏目: 云计算

CentOS 上 SQL*Plus 安全设置指南

一 操作系统层安全

  • 密码复杂度与有效期
    • 编辑文件:/etc/login.defs,建议设置:PASS_MAX_DAYS 90、PASS_MIN_DAYS 2、PASS_MIN_LEN 8、PASS_WARN_AGE 7
    • 编辑文件:/etc/pam.d/system-auth,使用 pam_pwquality.so(或兼容的 pam_cracklib)启用复杂度,例如:
      password requisite pam_pwquality.so minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=5 enforce_for_root
      说明:负数表示“至少出现次数”,如 ucredit=-1 表示至少包含 1 个大写字母。上述复杂度对 root 同样生效。
  • 登录失败锁定
    • /etc/pam.d/system-auth/etc/pam.d/sshd 增加:
      auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 root_unlock_time=1800
      说明:连续失败 5 次锁定 1800 秒,root 同样受限;查看与解锁:pam_tally2、pam_tally2 -r -u 用户名。
  • 会话超时
    • /etc/profile 设置:TMOUT=600(单位秒),并执行 source /etc/profile 使生效,避免无人值守会话长期暴露。
  • 远程登录加固
    • 禁止 root 远程 SSH:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,重启 sshd。
    • 精细 IP 白名单:在 /etc/hosts.allow 配置允许的网段(如 sshd:192.168.1.0/24:allow),在 /etc/hosts.deny 设置 sshd:ALL。

二 Oracle 层安全

  • 登录认证与本地 OS 认证
    • 避免使用包含密码的命令行(如 sqlplus user/pass),防止密码出现在 pshistory 中;推荐:
      sqlplus /nolog
      conn username/password
      或本地管理登录使用:sqlplus / as sysdba(属于操作系统认证,仅限本机高权限账户)。
  • 远程登录与来源限制
    • $ORACLE_HOME/network/admin/sqlnet.ora 启用白名单:
      tcp.validnode_checking = yes
      tcp.invited_nodes = (192.168.14.158,192.168.14.159)
      执行 lsnrctl reload 使生效。
  • 空闲连接保活
    • sqlnet.ora 设置:SQLNET.EXPIRE_TIME=15(单位分钟),定期探测死连接,便于及时清理。
  • 密码复杂度与账户锁定
    • 以 SYS 登录执行 Oracle 口令校验脚本:@?/rdbms/admin/utlpwdmg.sql,为 DEFAULT profile 启用复杂度与锁定策略(如 FAILED_LOGIN_ATTEMPTS、PASSWORD_LIFE_TIME 等)。
  • 超级管理员远程登录
    • 如业务允许,关闭 REMOTE_LOGIN_PASSWORDFILE(需要重启实例):
      show parameter REMOTE_LOGIN_PASSWORDFILE
      alter system set remote_login_passwordfile=none scope=spfile;
      shutdown immediate; startup;
      说明:关闭后,远程无法通过口令文件以 SYSDBA/SYSOPER 登录,仅能本地 OS 认证。
  • 登录审计
    • 简单登录审计示例:
      CREATE TABLE LOGON_TABLE(SESSION_USER varchar2(256), CREATE_TIME date);
      CREATE OR REPLACE TRIGGER TRI_LOGON AFTER LOGON ON DATABASE
      BEGIN INSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT(‘USERENV’,‘SESSION_USER’), SYSDATE); END; /
      可按需扩展为写入专用审计表或结合统一审计。

三 网络与防火墙

  • 仅开放必要端口
    • 数据库默认监听 1521/TCP;如需远程访问,建议仅对可信网段放行:
      firewall-cmd --permanent --add-port=1521/tcp
      firewall-cmd --reload
      如需限制来源,可结合 firewalld 的 rich rules 或上层 ACL/安全组策略。
  • 监听与地址绑定
    • 如需远程访问,可在 listener.oraHOST=0.0.0.0 并重启监听;仅在内网环境使用,生产环境建议绑定到内网接口或配合防火墙做来源限制。

四 最小权限与账户管理

  • 创建业务用户与最小权限
    • 示例:
      CREATE USER appuser IDENTIFIED BY StrongPass!23;
      ALTER USER appuser DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
      GRANT CREATE SESSION, CREATE TABLE TO appuser;
      按需授予对象权限,避免使用 DBA 角色进行日常操作。
  • 角色与默认角色
    • 通过角色封装权限并设置为默认角色,减少直接授予系统权限:
      ALTER USER appuser DEFAULT ROLE CONNECT, RESOURCE;
      定期审计用户权限与角色分配,遵循最小权限原则。

五 快速检查清单

检查项 期望状态 验证命令或位置
OS 密码复杂度 minlen≥12,含大小写数字特殊字符 grep pam_pwquality /etc/pam.d/system-auth
OS 登录失败锁定 deny=5,unlock_time=1800 grep pam_tally2 /etc/pam.d/{system-auth,sshd}
OS 会话超时 TMOUT=600 echo $TMOUT 或 grep TMOUT /etc/profile
root 远程 SSH 禁止 grep PermitRootLogin /etc/ssh/sshd_config
数据库来源白名单 仅可信 IP $ORACLE_HOME/network/admin/sqlnet.ora 的 tcp.invited_nodes
空闲连接保活 15 分钟探测 sqlnet.ora 的 SQLNET.EXPIRE_TIME
监听端口 1521/TCP 且来源受限 firewall-cmd --list-ports;必要时配合 firewalld rich rules
SYS 远程口令文件 关闭(如业务允许) show parameter REMOTE_LOGIN_PASSWORDFILE
登录审计 有登录记录 查询自建 LOGON_TABLE 或统一审计视图

以上配置可按业务与合规要求微调,变更前请在测试环境验证,并做好备份与回退方案。

0