温馨提示×

Linux Oracle数据库如何实现安全加固

小樊
45
2025-10-18 14:44:17
栏目: 云计算

一、操作系统层安全加固

  1. 用户与权限管理
    • 创建专用Oracle用户组(oinstall用于安装、dba用于数据库管理)和用户(如oracle),并添加至对应组;清理DBA组中多余操作系统用户,仅保留必要账户。
    • 遵循最小权限原则,禁用root远程登录,限制Oracle用户对敏感系统目录(如/etc/root)的访问权限。
  2. 文件系统安全
    • 对Oracle关键目录(如数据文件目录$ORACLE_BASE/oradata、日志目录$ORACLE_HOME/network/log)设置750权限,所有者为oracle:oinstall;对核心配置文件(如listener.orasqlnet.ora)设置640权限。
    • 启用文件系统不可更改标志(如chattr +i /etc/passwd),防止关键系统文件被非法篡改。
  3. 内核参数优化
    • 修改/etc/sysctl.conf调整内核参数,提升系统抗攻击能力:
      fs.file-max=6815744(最大文件描述符数)、kernel.shmmax=2147483648(共享内存最大大小)、net.ipv4.ip_local_port_range=9000-65500(本地端口范围)、net.ipv4.tcp_syncookies=1(防止SYN Flood攻击);执行sysctl -p使配置生效。
  4. 系统服务与端口管控
    • 关闭不必要的系统服务(如telnetftpsendmail),减少攻击面;仅开启Oracle必要服务(如OracleServiceORCLOracleOraDB19Home1TNSListener)。
    • 配置防火墙(iptables/firewalld)仅开放Oracle监听端口(默认1521)和SSH端口(建议修改为10000+),限制非必需网络访问。

二、Oracle数据库层安全加固

  1. 用户与认证管理
    • 口令复杂度设置:修改PROFILE(如DEFAULT),启用密码复杂度检查:设置PASSWORD_VERIFY_FUNCTION=verify_function,要求密码长度≥6位,包含数字、小写字母、大写字母、特殊字符中的至少2类;设置密码有效期≤90天(PASSWORD_LIFE_TIME=90)、失败登录尝试次数≤5次(FAILED_LOGIN_ATTEMPTS=5)。
    • SYSDBA权限控制:禁止SYSDBA用户远程登录,修改SPFILE参数:REMOTE_LOGIN_PASSWORDFILE=NONE;限制DBA组成员数量,仅保留Oracle安装用户。
  2. 数据字典保护
    • 启用数据字典保护机制,防止非SYSDBA用户访问核心数据表,执行:ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;重启数据库使配置生效。
  3. 审计与监控
    • 开启数据库审计功能,记录用户操作(如登录、数据修改、权限变更),执行:ALTER SYSTEM SET AUDIT_TRAIL='DB,EXTENDED' SCOPE=SPFILE;重启数据库后,可通过DBA_AUDIT_TRAIL视图查询审计日志。
    • 实施细粒度审计(FGA),针对敏感表(如EMPLOYEE)的关键操作(如SELECTUPDATE)记录详细信息,执行:
      BEGIN DBMS_FGA.ADD_POLICY( object_schema => 'HR', object_name => 'EMPLOYEE', policy_name => 'EMP_SALARY_AUDIT', audit_condition => NULL, audit_column => 'SALARY', enable => TRUE, statement_types => 'SELECT,UPDATE' ); END; 
  4. 网络传输加密
    • 使用Oracle高级安全选项(ASE)配置网络传输加密,编辑$ORACLE_HOME/network/admin/sqlnet.ora文件,设置:
      SQLNET.ENCRYPTION_SERVER=REQUIRED(服务器端强制加密)、SQLNET.ENCRYPTION_TYPES_SERVER=(AES256)(加密算法)、SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED(完整性校验);重启监听器使配置生效。
  5. 监听器安全配置
    • 为监听器设置密码,防止未授权修改监听配置,执行:lsnrctlset current_listener LISTENERchange_password→输入新旧密码;保存配置(save_config)。
    • 配置可信IP访问控制,编辑$ORACLE_HOME/network/admin/sqlnet.ora文件,设置:
      TCP.VALIDNODE_CHECKING=YES(启用IP检查)、TCP.INVITED_NODES=('192.168.1.10','10.0.0.5')(允许访问的IP列表);重启监听器。
  6. 其他安全设置
    • 限制最大连接数,避免资源耗尽,执行:ALTER SYSTEM SET PROCESSES=200 SCOPE=SPFILE;重启数据库。
    • 启用操作系统审计,监控Oracle相关进程的活动,配置/etc/audit/audit.rules添加规则:
      -w /u01/app/oracle/product/19.0.0/dbhome_1/bin/oracle -p x -k oracle_exec(监控Oracle启动)、-w $ORACLE_HOME/diag/rdbms/orcl/trace -p rwxa -k oracle_trace(监控诊断日志)。

三、持续维护与监控

  1. 补丁管理
    • 定期检查并安装Oracle CPU(Critical Patch Update)、PSU(Patch Set Update)补丁,修复已知安全漏洞;建议在测试环境验证补丁兼容性后再应用于生产环境。
  2. 备份与恢复
    • 制定每日增量备份+每周全量备份策略,使用RMAN(Recovery Manager)加密备份数据(CONFIGURE ENCRYPTION FOR DATABASE ON);将备份介质离线存储(如磁带、异地存储),定期测试备份恢复流程。
  3. 安全审计与评估
    • 定期使用Oracle Database Security Assessment Tool(DBSAT)扫描数据库,识别未授权访问、弱密码、配置错误等安全风险;每月审查审计日志,分析异常操作(如频繁的失败登录、非工作时间的数据访问)。

0