Oracle 11g 安全配置

  1. Oracle 11g 安全配置
    1. 口令策略

可以通过创建概要文件来设置和资源配制和密码的安全策略,也可以自定义密码的复杂度。在概要文件中有以下参数是和密码安全有关系的。创建新用户账号时配置参数选择对应的概要文件,之前创建的用户无效,可以通过修改配置使其生效。

创建GTMAP策略代码

CREATE PROFILE GTMAP LIMIT  

  SESSIONS_PER_USER Default  

  CPU_PER_SESSION Default  

  CPU_PER_CALL Default  

  CONNECT_TIME Default  

  IDLE_TIME Default  

  LOGICAL_READS_PER_SESSION Default  

  LOGICAL_READS_PER_CALL Default  

  COMPOSITE_LIMIT Default  

  PRIVATE_SGA Default  

  FAILED_LOGIN_ATTEMPTS 30  # 在账户被锁住之前可以尝试地登录失败的次数

  PASSWORD_LIFE_TIME 90  # 口令的生命周期90天,在此之后口令作废

  PASSWORD_REUSE_TIME 90 # 在一个口令作废30天之后才可以重用

  PASSWORD_REUSE_MAX 90  #在一个口令可以重用之前的最大变化数

  PASSWORD_LOCK_TIME 1   #登录指定的次数失败后,账户将被锁住的1天数

  PASSWORD_GRACE_TIME 1  #口令过期之后第1次成功原口令登录后要改变口令的宽免天数

  PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G;  #定义口令检验文件函数

 PASSWORD_VERIFY_FUNCTION参数口令检验文件函数

SQL> @/database/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlpwdmg.sql  

    1. 角色与权限
  1. 数据库系统中的用户根据工作性质进行分组,之后为每一个组用户创建一个用户角色。
  2. 将系统的应用进行分类,然后为每一类应用创建一个应用角色
  3. 将权限首先授予用户角色。
  4. 最后再将用户角色授予真正的用户

 

创建角色参考样例:

CREATE ROLE BDCDJ_DEVELOPER IDENTIFIED BY GTMAP;    

GRANT DROP ANY TABLE TO BDCDJ_DEVELOPER;    

GRANT DROP ANY TRIGGER TO BDCDJ_DEVELOPER;    

GRANT DROP ANY VIEW TO BDCDJ_DEVELOPER;  

    

GRANT "CONNECT" TO BDCDJ_DEVELOPER;    

GRANT SELECT ON "BDCD"."BDDCDJB" TO BDCDJ_DEVELOPER;  

GRANT DELETE ON "BDCD"."BDDCDJB" TO BDCDJ_DEVELOPER;  

GRANT INSERT ON "BDCD"."BDDCDJB" TO BDCDJ_DEVELOPER;  

GRANT UPDATE ON "BDCD"."BDDCDJB" TO BDCDJ_DEVELOPER;  

Oracle提供了一些预定义的角色,这些预定义的角色是在系统安装时自动生成的,可以减轻数据库管理员的工作负担。比较常用的预定义角色如下:

EXP_FULL_DATABASE 导出数据库的权限

IMP_FULL_DATABASE 导入数据库的权限

SELECT_CATALOG_ROLE 查询数据字典的权限

EXECUTE_CATALOG_ROLE 数据字典上的执行权限

DELETE_CATALOG_ROLE  数据字典上的删除权限

DBA、CONNECT、RESOUREC 这3个角色是为以兼容其它版本设置的,注意CONNECT、RESOUREC对应的相关系统权限。.

 

创建用户样例

CREATE USER BDCDJTEST  

  IDENTIFIED BY <password>  

  DEFAULT TABLESPACE BDCD30 

  TEMPORARY TABLESPACE TEMP  

  PROFILE GTMAP            #对应口令概要文件

  ACCOUNT UNLOCK;  

  

GRANT BDCDJ_DEVELOPER TO BDCDJTEST;   #对应创建的角色

    1. 数据库访问控制

未限制TNS的登陆IP,仅允许最少的,必要的IP地址可连接TNS监听器,由于ORACLE的TNS监听器有许多安全漏洞,其中的一些漏洞甚至能让入侵者得操作系统的超级用户权限或者修改数据库中的数据,对连接IP的限制也能做至防患于未然,在$ORACLE_HOME/network/admin目录下修改sqlnet.ora文件。

增加IP校验

tcp.validnode_checking=yes  #开启IP校验

tcp.invited_nodes=(127.0.0.1,192.168.90.21)  #允许通过IP

tcp.excluded_nodes=(10.3.3.4,123.12.2.4)  #拒绝通过IP

如果有主机防火墙,建议使用主机防火墙策略控制IP接入限制。

Oracle 默认使用操作系统认证,只要进入系统可直接以sys进入ORACLE,存在较大安全隐患,

增加数据库认证方式

SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)  

修改配置后需重新启动监听才能生效。

由于extproc存在安全问题允许用户不进行身份认证就可以调用系统函数,因此如果不需要该功能必须关闭。修改tnsnames.ora和listener.ora文件,删除含有extproc的条目,使用两个文件中只含用使用的有效连接信息。

样例:

SID_LIST_LISTENER =  

  (SID_LIST =  

    (SID_DESC =  

      (SID_NAME = CLRExtProc)  

      (ORACLE_HOME = d:\app\product\11.2.0\dbhome_1)  

      (PROGRAM = extproc)  

      (ENVS = "EXTPROC_DLLS=ONLY:d:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")  

    )  

  )  

安装数据库时默认配置,建议清除。

监听端口配置(listener.ora)

ORALCE 监听默认的端口1521,在不影响业务使用的情况下,可以修改成其它端口减少网络攻击。

修改监听配置文件listener.ora

LISTENER =  

  (DESCRIPTION_LIST =  

    (DESCRIPTION =  

      (ADDRESS = (PROTOCOL = TCP)(HOST = chinamxlpc)(PORT = 1521))  

    )  # 1521 端口修改

  )  

    1. 数据库审计

Oracle 审计用于用户所执行的数据库操作,默认状态DB模式,记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息,记录存储在system表空间中的AUD$表中,操作系统审计记录存储位置通audit_file_dest参数查询。数据是否打开审计功能,操作系统会强制记录管理员连接实例,启动数据库和关闭数据库记录。Oralce 审计分类三种标准,语句审计、权限审计、对象审计。

审计参数代码

SQL> show parameter aud        

NAME                     TYPE    VALUE    

-------------------------- ----------- ------------------------------    

audit_file_dest              string  /database/oracle/admin/orcl/adump   audit_sys_operations         boolean     TRUE    

audit_syslog_level           string    

audit_trail                  string  DB    

开启审计功能  

alter system set audit_sys_operations=TRUE scope=spfile;  

alter system set audit_trail=db,extended scope=spfile;  

关闭审计功能

alter system set audit_trail=none scope=spfile;  

audit_sys_operations参数为true时,系统以os文件记录sysdba身份的登录、开关数据库的操作,以及其它辅助的操作

None:不做审计;

DB:默认值,除了SYSDBA、SYSOPER权限用户以外的其他用户特定操作。

DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句。

对象审核代码示例

  1. audit delete,insert,update,select on bdcdj_ha.bdc_cf  by access whenever successful;(审计所有用户对bdcdj_ha.bdc_cf表所有成功的 delete,insert,update,select操作,每次操作都会记录)  
  2. audit delete,insert,update,select on bdcdj_ha.bdc_cf by access whenever not successful;(审计所有用户对bdcdj_ha.bdc_cf表所有不成功的 delete,insert,update,select操作,每次操作都会记录)  
  3. audit delete,insert,update,select  on bdcdj_ha.bdc_cf by user;(对user用户对bdcdj_ha.bdc_cfupdate,delete进行审计)  
    1. 漏洞补丁升级

由于Oracle的开放下载政策,Oracle的软件下载没有任何限制,且与付费版本没有任何区别,可以用来学习和测试,但是如果用于商业生产环境就需要主动向Oracle付费购买License,否则有严重的法律风险,尤其是对上市企业来说更是如此。

在这里有很重要的一点需要强调一下,那就是无论从什么渠道下载的软件包一定要验证安装文件的MD5或者SHA值,确保安装软件与官方提供的软件完全一致,否则可能会产生以下两个问题:

    1. 软件包被篡改植入勒索病毒
    2. 安装包不完整或者损坏

现在很多项目上使用的ORACLE都出现安全漏洞问题,在这里建议去购买官方补丁或者下载官方最新版本使用。如果没有预算费用,那只能做好主机安全,减少数据库服务暴露在外,做好IP限制访问策略,降低风险。

升级补丁情况查看./opatch lsinventory

[oracle@chinamxlpc]$ ./opatch lsinventory  

Oracle 临时补丁程序安装程序版本 11.2.0.3.27  

版权所有 (c) 2022, Oracle Corporation。保留所有权利。  

    Oracle 主目录       /database/oracle/product/11.2.0/dbhome_1  

主产品清单:/database/oraInventory  

   来自           /database/oracle/product/11.2.0/dbhome_1/oraInst.loc  

OPatch 版本    11.2.0.3.27  

OUI 版本       11.2.0.4.0  

日志文件位置:/database/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2022-10-12_17-24-49下午_1.log  

  

Lsinventory Output file location : /database/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2022-10-12_17-24-49下午.txt  

--------------------------------------------------------------------------------  

Local Machine Information::  

Hostname: chinamxlpc  

ARU platform id: 226  

ARU platform description:: Linux x86-64  

  

已安装的顶级产品 (1):    

Oracle Database 11g                                                  11.2.0.4.0  

 Oracle 主目录中已安装 1 个产品。     

临时补丁程序 (3) :    

Patch  31668908     : applied on Tue May 10 17:52:32 CST 2022  

Unique Patch ID:  23800881  

Patch description:  "OJVM PATCH SET UPDATE 11.2.0.4.201020"  

   Created on 8 Sep 2020, 03:18:03 hrs PST8PDT  

   Bugs fixed:  

     23727132, 19554117, 19006757, 14774730, 18933818, 18458318, 18166577  

     19231857, 19153980, 19058059, 19007266, 17285560, 17201047, 17056813  

     19223010, 19852360, 19909862, 19895326, 19374518, 20408829, 21047766  

     21566944, 19176885, 17804361, 17528315, 21811517, 22253904, 19187988  

     21911849, 22118835, 22670385, 23265914, 22675136, 24448240, 25067795  

     24534298, 25076732, 25494379, 26023002, 19699946, 26637592, 27000663  

     25649873, 27461842, 27952577, 27642235, 28502128, 28915933, 29254615  

     29774367, 29992392, 29448234, 30160639, 30534664, 30855121, 31306274  

     30772207, 31476032, 30561292, 28394726, 26716835, 24817447, 23082876  

     31668867  

  

Patch  29938455     : applied on Tue May 10 17:51:01 CST 2022  

Unique Patch ID:  23206871  

Patch description:  "OCW Patch Set Update : 11.2.0.4.191015 (29938455)"  

   Created on 23 Aug 2019, 01:51:24 hrs PST8PDT  

   Bugs fixed:  

     18328800, 19270660, 18691572, 18508710, 20038451, 21251192, 22162062  

     20365005, 21232394, 17336871, 17387214, 17750548, 17617807, 14497275  

     20219458, 17733927, 18180541, 23757020, 18962892, 17292250, 17378618  

通过patch 信息可以确认数据库是否更新漏洞补丁。

补丁包升级步骤

    1. 关闭监听 lsnrctl stop
    2. 关闭数据库 shutdown immediate;
    3. 拷贝补丁包至服务器
    4. 检验升级补丁包

[oracle@chinamxlpc]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./  

Oracle Interim Patch Installer version 11.2.0.3.27  

Copyright (c) 2021, Oracle Corporation.  All rights reserved.  

PREREQ session  

Oracle 主目录       /database/oracle/product/11.2.0/dbhome_1  

主产品清单:/database/oraInventory  

   来自           /database/oracle/product/11.2.0/dbhome_1/oraInst.loc  

OPatch 版本    11.2.0.3.27  

OUI 版本       11.2.0.4.0  

日志文件位置:/database/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2022-10-12_17-24-49下午_1.log  

Invoking prereq "checkconflictagainstohwithdetail"  

Prereq "checkConflictAgainstOHWithDetail" passed.  

OPatch succeeded. 

    1. 升级补丁

[oracle@chinamxlpc]$ opatch apply  

Oracle Interim Patch Installer version 11.2.0.3.27  

Copyright (c) 2021, Oracle Corporation.  All rights reserved.  

Oracle 主目录       /database/oracle/product/11.2.0/dbhome_1  

Central Inventory : /database/oraInventory  

   from           : /database/oracle/product/11.2.0/db_1/oraInst.loc  

OPatch 版本    11.2.0.3.27  

OUI 版本       11.2.0.4.0  

Log file location : /database/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2021-12-23_23-51-16PM_1.log  

Verifying environment and performing prerequisite checks...  

OPatch continues with these patches:   17478514  18031668  18522509  19121551  19769489  20299013  20760982  21352635  21948347  22502456  23054359  24006111  24732075  25869727  26609445  26392168  26925576  27338049  27734982  28204707  28729262  29141056  29497421  29913194  30298532  30670774  31103343  31537677   Do you want to proceed? [y|n]y  

User Responded with: Y  

All checks passed.  

升级完后,重启数据库服务。

注:升级数据库漏洞补丁具有一定的风险,所以在再升级补丁之前一定要做好数据的备份和恢复性测试。

    1. 通信信息安全

未使用oracle advanced security在客户端,数据库和应用服务器之间网络通信是没有加密,数据都是以明文传输,在抓包分析中可以获得明文数据,如下图示例,

 

特别数据库使用云部署模式,访问数据时需经过多个网络设备,甚至经过公共网络,这时不仅要考虑未经过身份验证的用户绕过数据库访问明文数据的企图,还应考虑从丢失、被盗或不当弃用磁盘或备份中读取敏感数据的攻击可能性。

配置客户端、服务器端的加密和完整性参数

服务器端配置sqlnet.ora  

SQLNET.ENCRYPTION_SERVER = REQUIRED #开启加密  

SQLNET.ENCRYPTION_TYPES_SERVER = AES128 #采用AES对称加密算法  

SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED #需要对数据完整性进行验证  

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = MD5 #签名算法  

#客户端配置sqlnet.ora  

SQLNET.CRYPTO_CHECKSUM_CLIENT = accepted  

                SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = MD5  

对于应用程序,脚本等都不需要写出用户名密码即可连接数据库,可以参考Oracle钱包管理器(Wallet Manager),管理客户端或服务器上公共密钥(public key )的安全认证。降低了密码泄露的风险。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值