linux

Linux Oracle安全设置如何操作

小樊
37
2025-10-04 00:20:49
栏目: 云计算

一、操作系统层面安全设置

  1. 创建专用Oracle用户与组
    为Oracle数据库创建专用操作系统用户及组,避免使用root管理数据库。执行以下命令:

    groupadd oinstall  # 归属组
    groupadd dba       # DBA权限组
    useradd -g oinstall -G dba -m oracle  # 创建oracle用户,归属oinstall组,附加dba组
    passwd oracle      # 设置强密码
    

    将oracle用户主目录设为Oracle软件安装路径(如/u01/app/oracle),并修改环境变量(编辑~/.bash_profile):

    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
    export ORACLE_SID=orcl
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    source ~/.bash_profile  # 生效配置
    
  2. 调整系统内核参数
    编辑/etc/sysctl.conf,添加Oracle推荐的内核参数以优化系统性能与安全性:

    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    net.ipv4.ip_local_port_range = 9000 65500
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.conf.all.rp_filter = 1
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    

    执行sysctl -p使参数生效。

  3. 配置用户权限限制
    编辑/etc/security/limits.conf,限制oracle用户的资源使用,防止资源滥用:

    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    oracle soft stack 10240
    
  4. SELinux配置(若启用)
    若系统启用SELinux,需设置正确的上下文以确保Oracle正常运行:

    chcon -R -t oracle_home_t /u01/app/oracle
    chcon -R -t oracle_db_t /u01/app/oradata
    

二、Oracle数据库层面安全设置

  1. 数据字典保护
    启用数据字典保护,仅允许SYSDBA用户访问基础表,防止未授权访问敏感数据字典:

    ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;
    SHUTDOWN IMMEDIATE;
    STARTUP;
    
  2. 口令复杂度策略
    通过修改PROFILE设置密码复杂度,要求密码长度≥6位且包含数字、小写字母、大写字母、特殊符号中的至少2类,增强账户安全性:

    CREATE PROFILE strong_pwd LIMIT
      PASSWORD_VERIFY_FUNCTION verify_function_11G
      PASSWORD_LIFE_TIME 90
      PASSWORD_REUSE_TIME 0
      PASSWORD_REUSE_MAX UNLIMITED
      FAILED_LOGIN_ATTEMPTS 5
      PASSWORD_LOCK_TIME 1/24;
    ALTER USER sys PROFILE strong_pwd;
    ALTER USER system PROFILE strong_pwd;
    
  3. 限制SYSDBA远程登录
    禁止SYSDBA权限用户从远程主机登录,降低远程攻击风险:

    ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=NONE SCOPE=SPFILE;
    SHUTDOWN IMMEDIATE;
    STARTUP;
    
  4. 开启数据库审计
    启用审计功能,记录用户对数据库的所有操作(如登录、数据修改),便于后续追溯:

    ALTER SYSTEM SET AUDIT_TRAIL='DB,EXTENDED' SCOPE=SPFILE;
    SHUTDOWN IMMEDIATE;
    STARTUP;
    -- 示例审计命令:审计用户scott的所有操作
    AUDIT ALL BY scott BY ACCESS;
    
  5. 配置监听器密码
    为Oracle监听器设置密码,防止未授权用户修改监听器配置:

    lsnrctl
    LSNRCTL> SET CURRENT_LISTENER LISTENER
    LSNRCTL> CHANGE_PASSWORD
    Old password: 
    New password: 
    Reenter new password: 
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
    Password changed for LISTENER
    LSNRCTL> SAVE_CONFIG
    
  6. 可信IP访问控制
    通过sqlnet.ora文件限制仅信任的IP地址能访问数据库,减少非法访问:
    编辑$ORACLE_HOME/network/admin/sqlnet.ora,添加:

    TCP.VALIDNODE_CHECKING=YES
    TCP.INVITED_NODES=(192.168.1.100,192.168.1.101)  # 替换为信任的IP
    TCP.EXCLUDED_NODES=(192.168.1.200)              # 可选:排除的IP
    

    执行lsnrctl reload使配置生效。

  7. 网络传输加密
    启用SSL/TLS加密客户端与数据库之间的网络传输,保护数据隐私:
    编辑$ORACLE_HOME/network/admin/sqlnet.ora,添加:

    SQLNET.ENCRYPTION_SERVER=REQUIRED
    SQLNET.ENCRYPTION_TYPES_SERVER=(AES256)
    SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
    SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA256)
    
  8. 设置最大连接数
    根据服务器性能调整最大连接数,避免过多连接导致资源耗尽:

    ALTER SYSTEM SET PROCESSES=200 SCOPE=SPFILE;
    ALTER SYSTEM SET SESSIONS=230 SCOPE=SPFILE;  -- sessions = processes * 1.1 + 5
    SHUTDOWN IMMEDIATE;
    STARTUP;
    

三、日常运维安全维护

  1. 定期审计日志检查
    定期查看系统日志(/var/log/secure)和Oracle审计日志($ORACLE_BASE/admin/orcl/adump),识别异常登录(如多次失败尝试)或未授权操作:

    grep "ORA-" /var/log/secure  # 查看Oracle相关错误日志
    ls -l $ORACLE_BASE/admin/orcl/adump  # 查看审计文件
    
  2. 定期备份与恢复测试
    制定备份策略(如每日增量备份+每周全量备份),使用RMAN工具备份数据库,并定期测试恢复流程,确保数据可恢复:

    rman target /
    RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
    RMAN> RESTORE DATABASE;
    RMAN> RECOVER DATABASE;
    
  3. 及时更新补丁
    定期检查Oracle官方安全公告,及时安装数据库补丁(如PSU、CPU),修复已知漏洞:

    # 使用Oracle OPatch工具应用补丁
    opatch apply /path/to/patch
    
  4. 文件权限审查
    定期检查Oracle关键目录(如$ORACLE_HOME$ORACLE_BASE/oradata)的权限,确保只有oracle用户和dba组有访问权限:

    chown -R oracle:dba $ORACLE_HOME
    chmod -R 750 $ORACLE_HOME
    chown -R oracle:dba $ORACLE_BASE/oradata
    chmod -R 750 $ORACLE_BASE/oradata
    
  5. SSH安全加固
    禁用root远程登录,修改SSH默认端口(如22→2222),启用密钥认证,减少SSH攻击面:
    编辑/etc/ssh/sshd_config

    PermitRootLogin no
    Port 2222
    PubkeyAuthentication yes
    PasswordAuthentication no
    

    重启SSH服务:

    systemctl restart sshd
    

0
看了该问题的人还看了