zoukankan      html  css  js  c++  java
  • Oracle DB 安全性:新增功能

    • 配置口令文件以使用区分大小写的口令
    • 对表空间进行加密
    • 配置对网络服务的细粒度访问

    • 安全口令支持
    Oracle Database 11g中的口令:
    • 区分大小写
    • 包含更多的字符
    • 使用更安全的散列算法
    • 在散列算法中使用salt 
    用户名仍是Oracle 标识符(最多30 个字符,不区分大小写)。

    安全口令支持
    为了遵守各种安全性和隐私规定,您必须使用更安全的口令。如果口令非常短或仅包含有限的字符,则对于强力攻击就很脆弱,而包含较多不同字符的较长口令就很难被猜出或获得。在Oracle Database 11g 中,口令的处理方式与早期版本中的处理方式有所不同:
    • 口令区分大小写。口令中使用的大写字符和小写字符现在是不同的字符。
    • 口令可以包含未用引号括起来的多字节字符。如果口令包含除$、_或#外的任何特殊字符,则必须用引号括起来。
    • 口令始终通过散列算法传递,然后作为用户身份证明进行存储。用户提供口令时,系统会对其进行散列运算,然后将其与存储的身份证明进行比较。在Oracle Database 11g中,散列算法是早期版本数据库中使用的公共算法SHA-1。SHA-1 是一种使用160 位密钥的较强算法。
    • 口令始终使用salt。如果输入内容相同,散列函数将始终生成相同的输出。Salt 是添加到输入中的唯一(随机)值,用于确保输出身份证明是唯一的。

    • 自动安全配置
    • 默认口令概要文件
    • 默认审计
    • 内置口令复杂性检查

    自动安全配置
    Oracle Database 11g使用由Internet 安全中心(CIS) 基准推荐的特定安全功能安装和创建数据库。与10gR2 的默认安装相比,CIS 推荐的配置更安全,而且开放程度足以使大多数应用程序都能成功运行。许多客户已采用了此基准。CIS 基准的一些建议可能与一些应用程序不兼容。

    • 口令配置
    默认情况下:
    • 启用默认口令概要文件
    • 如果连续10 次登录失败,则锁定该帐户
    在升级过程中:
    • 口令不区分大小写(除非进行更改)
    • 使用ALTER USER命令时口令区分大小写
    创建时:
    • 口令区分大小写

    安全默认配置
    使用Database Configuration Assistant (DBCA) 创建自定义数据库时,可以指定OracleDatabase 11g的默认安全配置。默认情况下,如果用户使用不正确的口令多次尝试连接Oracle 实例,则在第三次尝试后该实例将延迟每次登录。这种保护措施适用于从不同的IP地址或多个客户机进行的连接尝试。稍后,它将逐渐增加用户可以尝试其它口令的时间间隔,最长时间大约为十秒。
    创建数据库时,将启用具有如下设置的默认口令概要文件:
    PASSWORD_LIFE_TIME 180 
    PASSWORD_GRACE_TIME 7 
    PASSWORD_REUSE_TIME UNLIMITED 
    PASSWORD_REUSE_MAX UNLIMITED 
    FAILED_LOGIN_ATTEMPTS 10 
    PASSWORD_LOCK_TIME 1 
    PASSWORD_VERIFY_FUNCTION NULL 
    Oracle Database 10g数据库升级后,只有使用ALTER USER…命令更改口令后,口令才会区分大小写。
    创建数据库时,默认情况下口令区分大小写。

    • 启用内置口令复杂性检查器
    执行utlpwdmg.sql脚本创建口令验证功能:
    SQL> CONNECT / as SYSDBA
    SQL> @?/rdbms/admin/utlpwdmg.sql

    更改默认概要文件:
    ALTER PROFILE DEFAULT LIMIT 
    PASSWORD_VERIFY_FUNCTION verify_function_11g;

    启用内置口令复杂性检查器
    verify_function_11g是一个PL/SQL 功能示例,可以轻松进行修改以在您的站点中强制实行口令复杂性策略。此功能不需要在口令中嵌入特殊字符。
    verify_function_11g和较早的verify_function都包含在utlpwdmg.sql文件中。
    要启用口令复杂性检查,请创建一个归SYS所有的验证功能。可使用提供的一个功能或对其中的一个进行修改来满足您的要求。此示例显示了如何使用utlpwdmg.sql脚本。
    如果概要文件中命名的口令复杂性检查功能中存在错误或此功能不存在,则不能更改口令,也不能创建用户。解决方法是在概要文件中将PASSWORD_VERIFY_FUNCTION设置为NULL,直到问题得到解决。
    verify_function_11g功能将检查口令是否至少包含八个字符、是否至少包含一个数字和一个字母字符,以及是否至少有三个字符与以前口令不同。该函数还确认此口令不是以下项:用户名或附加了1 到100 之间任何数字的用户名、反向的用户名、服务器名或附加了1 到100 之间数字的服务器名,或者一组众所周知的常用口令,如“welcome1”、“database1”、“oracle123”或“oracle(附加了1 到100 之间的数字)”等。

    • 管理默认审计
    检查审计日志:默认的审计选项涵盖了重要的安全权限。
    归档审计记录:
    • 导出
    • 复制到其它表
    删除归档审计记录。

    管理默认审计
    检查审计日志。默认情况下,在Oracle Database 11g中将为对安全性非常重要的特定权限启用审计。审计线索默认记录在数据库AUD$表中,AUDIT_TRAIL参数设置为DB。对于大多数站点而言,这些审计不会对数据库性能造成太大影响。Oracle 建议使用操作系统
    审计线索文件。
    归档审计记录。要保留审计记录,请使用Oracle 数据泵导出实用程序将其导出,或者使用SELECT语句将一组审计记录捕获到单独的表中。
    删除归档审计记录。在检查并归档审计记录后,会从SYS.AUD$表中将其删除。审计记录将占用SYSTEM表空间中的空间。如果SYSTEM表空间无法增长,则无法为审计记录提供更多空间,此时会针对每条审计语句生成错误。由于CREATE SESSION是已审计的权限之一,所以不能创建新的会话(除非用户以SYSDBA身份连接)。可使用QUERY选项指定带有日期范围或SCN 范围的WHERE子句,通过导出实用程序归档审计表。然后,使用相同的WHERE子句从审计表中删除这些记录。
    当AUDIT_TRAIL=OS时,会在由AUDIT_FILE_DEST指定的目录中为每条审计记录创建单独的文件。可以复制特定时间之前的所有文件,然后删除它们。
    注:SYSTEM表空间是使用autoextend on选项创建的。因此SYSTEM表空间可以根据需要增长,直到用尽磁盘上的可用空间。

    系统会按照访问针对成功和失败的操作审核所有用户的以下权限:
    CREATE EXTERNAL JOB 
    CREATE ANY JOB 
    GRANT ANY OBJECT PRIVILEGE 
    EXEMPT ACCESS POLICY 
    CREATE ANY LIBRARY 
    GRANT ANY PRIVILEGE 
    DROP PROFILE 
    ALTER PROFILE 
    DROP ANY PROCEDURE 
    ALTER ANY PROCEDURE 
    CREATE ANY PROCEDURE 
    ALTER DATABASE 
    GRANT ANY ROLE 
    CREATE PUBLIC DATABASE LINK 
    DROP ANY TABLE 
    ALTER ANY TABLE 
    CREATE ANY TABLE 
    DROP USER 
    ALTER USER 
    CREATE USER 
    CREATE SESSION 
    AUDIT SYSTEM 
    ALTER SYSTEM 
    SYSTEM AUDIT
    ROLE 

    • 调整安全性设置
    调整安全性设置
    使用DBCA 工具创建数据库时,可以选择以下安全性设置:
    • 保留11g的默认增强安全设置(建议)。这些设置包括启用审计和新的默认口令概要文件。
    • 还原到11g之前的默认安全设置。要禁用特定类别的增强设置以实现兼容性,请选择以下设置:
    - 将审计设置还原为11g之前的默认设置
    - 将口令概要文件设置还原为11g之前的默认设置
    也可以使用DBCA 在创建数据库后更改这些设置。在11g的默认安全设置下,有些应用程序可能无法正常运行。
    应始终设置安全的软件权限。它不受用户选择的“Security Settings(安全设置)”选项所影响。

    • 设置安全性参数
    • 使用区分大小写的口令:
    SEC_CASE_SENSITIVE_LOGON
    • 防止DoS 攻击:
    SEC_PROTOCOL_ERROR_FURTHER_ACTION
    SEC_PROTOCOL_ERROR_TRACE_ACTION
    • 防止强力攻击:
    SEC_MAX_FAILED_LOGIN_ATTEMPTS 

    设置安全性参数
    Oracle Database 11g增加了一组新参数以加强数据库的默认安全性。这些参数是系统范围的静态参数。
    使用区分大小写的口令以加强安全性
    新参数SEC_CASE_SENSITIVE_LOGON使您可以设置区分大小写的用户口令。Oracle 建议保留默认设置TRUE。将此参数设置为FALSE可指定不区分大小写的口令以实现向后兼容性。
    ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE
    注:禁用区分大小写会使口令在强力攻击面前变得更脆弱。
    防止拒绝服务(DoS) 攻击
    本示例中列出的两个参数指定了当数据库从客户机处收到损坏的数据包时要执行的操作。假设损坏的数据包来自可能的恶意客户机。
    SEC_PROTOCOL_ERROR_FURTHER_ACTION参数指定了要对客户机连接执行的操作:继续、断开连接或延迟接受请求。另一参数SEC_PROTOCOL_ERROR_TRACE_ACTION指定了监视操作:NONE、TRACE、LOG或ALERT。

    防止强力攻击
    新的初始化参数SEC_MAX_FAILED_LOGIN_ATTEMPTS的默认设置为10,表示在连接尝试达到指定次数后会自动断开连接。即使未启用口令概要文件,也会强制实施此参数。此参数可以防止程序连接到数据库,然后成百上千次地尝试口令以通过验证。

    • 设置数据库管理员验证
    使用带有区分大小写的口令的口令文件。
    对管理员角色启用严格的验证:
    • 在OID 中授予管理员角色。
    • 使用Kerberos 票证。
    • 使用SSL 证书。

    设置数据库管理员验证
    数据库管理员必须经过验证。在Oracle Database 11g中,可以使用新的方法来更安全地执行管理员验证并集中管理这些已授权的用户。此外,区分大小写的口令还应用于已授权用户的远程连接上。可使用下列命令覆盖此默认行为:
    orapwd file=orapworcl entries=5 ignorecase=Y
    如果担心口令文件易受破坏或难以维护许多口令文件,则可以实施严格验证:
    • 在Oracle Internet Directory (OID) 中授予SYSDBA或SYSOPER企业角色。
    • 使用Kerberos 票证
    • 使用SSL 证书

    要使用严格验证方法,必须将所有LDAP_DIRECTORY_SYSAUTH初始化参数设置为YES。将此参数设置为NO可禁用严格验证方法。通过OID 或Kerberos 进行的验证还能提供集中管理或单一登录功能。
    如果配置了口令文件,则可先对其进行检查。用户也可以作为OSDBA或OSOPER组的成员由本地操作系统进行验证。


    • 透明数据加密
    TDE 中的新增功能包括:
    • 表空间加密
    • 支持LogMiner 
    • 支持逻辑备用
    • 支持流
    • 支持异步更改数据捕获
    • 基于硬件的主密钥保护

    透明数据加密
    一些新增功能可增强透明数据加密(TDE) 功能,这些功能是基于相同的基础结构构建的。
    为支持TDE 而对LogMiner 所做的更改提供了用于更改捕获引擎的基础结构,这些引擎可用于逻辑备用、流和异步更改数据捕获。要让LogMiner 支持TDE,它必须能够访问加密Wallet。要访问该Wallet,必须装载实例并使Wallet 处于开启状态。LogMiner不支持硬件安全模块(HSM) 或用户持有密钥。
    对于逻辑备用,可在源或目标数据库挖掘日志,因此用于这两个数据库的Wallet必须相同。
    加密列的处理方式在流和基于流的更改数据捕获中均相同。将在Wallet 所在的源中挖掘重做记录。数据以未加密的方式传输到目标位置,然后在目标位置使用Wallet 进行加密。该数据可以使用高级安全选项在传输中进行加密以实现网络加密。

    • 使用表空间加密
    创建加密的表空间。
    1. 创建或打开加密Wallet:
    SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "welcome1";

    2. 使用加密关键字创建表空间:
    SQL> CREATE TABLESPACE encrypt_ts
    2> DATAFILE '$ORACLE_HOME/dbs/encrypt.dat' SIZE 100M
    3> ENCRYPTION USING '3DES168'
    4> DEFAULT STORAGE (ENCRYPT);

    表空间加密
    表空间加密以在写入时进行加密并在读取时进行解密的块级别加密技术为基础,并不在内存中对数据进行加密。影响加密的唯一因素与I/O 相关联。SQL 访问路径不变,并且支持所有数据类型。要使用表空间加密,加密Wallet 必须处于开启状态。
    CREATE TABLESPACE命令包含一个用于设置加密属性的ENCRYPTION子句,以及一个导致使用加密的ENCRYPT存储参数。您可以指定USING 'encrypt_algorithm'来指示要使用的算法名称。有效的算法包括3DES168、AES128、AES192 和AES256。默认算法为AES128。可以在V$ENCRYPTED_TABLESPACES视图中查看这些属性。
    加密的数据在执行操作(如JOIN和SORT)期间会受到保护。这意味着数据在移动到临时表空间时是安全的。还原日志和重做日志中的数据也受到保护。
    如果平台有相同的Endianess 和Wallet,则加密的表空间是可移动的。
    限制
    • 无法对临时表空间和还原表空间进行加密(所选的块已加密)。
    •Bfiles 和外部表未加密。
    • 不支持跨不同的endian 平台移动表空间。
    • 当前无法更改加密表空间的密钥。解决方法是:使用所需的属性创建一个表空间,然后将所有对象移动到新建的表空间中。

    • 硬件安全模块


    硬件安全模块
    硬件安全模块(HSM) 是一种物理设备,可以安全地存储加密密钥。它还可以提供安全的计算空间(内存)以执行加密和解密操作。HSM 是Oracle wallet 的一种更安全的代替方法。
    透明数据加密(TDE) 可使用HSM 来加强敏感数据的安全性。HSM 用于存储TDE 使用的主加密密钥。因为HSM 是一种物理设备而不是一个操作系统文件,所以在未授权的访问尝试中密钥是安全的。使用主加密密钥的所有加密和解密操作都在HSM 中执行。这意味着主加密密钥永远不会在不安全的内存中公开。
    有些供应商可提供硬件安全模块,这些供应商还必须提供相应的库。

    • LOB 列的加密
    • LOB 加密只能用于SECUREFILE LOB。
    • LOB 列中的所有LOB 都已加密。
    • 可以按列或按分区对LOB 进行加密。
    – SECUREFILELOB 和BASICFILELOB 可以共存

    CREATE TABLE test1 (doc CLOB ENCRYPT USING 'AES128') 
    LOB(doc) STORE ASSECUREFILE (CACHE NOLOGGING ); 

    LOB 列的加密
    Oracle Database 11g 引入了一个经过完全重新设计的大对象(LOB) 数据类型,此类型显著提高了应用程序开发的效率和可管理性,并简化了应用程序的开发过程。LOB 的这种Secure Files 实施提供了下一代的高级功能,如智能压缩和透明加密。Secure Files 中的加密数据会就地存储并可以随机进行读取和写入。
    必须使用SECUREFILE参数创建LOB,并对LOB 列启用加密(ENCRYPT)或禁用加密(DECRYPT,默认值)。可使用当前的TDE 语法将加密扩展到LOB 数据类型。
    系统仍支持早期版本中的LOB 实施以实现向后兼容性,但现在将其称为Basic Files。如果将LOB 列添加到一个表中,则可以指定将其创建为SECUREFILES还是
    BASICFILES。为了确保向后兼容性,默认的LOB 类型为BASICFILES。
    有效算法包括3DES168、AES128、AES192 和AES256。默认算法为AES192。

    • Enterprise Manager 安全管理

    通过EM 管理安全性。
    • 对于以下项取代了Policy Manager:
    – 虚拟专用数据库
    – 应用程序上下文
    – Oracle Label Security 
    • 添加了“Enterprise User Security(企业用户安全性)”页
    • 添加了TDE 页

    Enterprise Manager 安全管理
    安全管理功能已集成到Enterprise Manager 中。
    该功能取代了基于Policy Manager Java 控制台的工具。以前通过Oracle Policy Manager 工具管理的Oracle Label Security、应用程序上下文和虚拟专用数据库现在通过Enterprise Manager 即可进行管理,但Oracle Policy Manager 工具仍然可用。
    Enterprise Manager Security 工具已由Enterprise Manager 功能取代。现在Enterprise User Security 也可通过Enterprise Manager 进行管理。ldap.ora文件配置完成后,会立即显示Enterprise Manager 的菜单项。Enterprise Manager Security 工具仍然可用。
    TDE 现在可通过Enterprise Manager 进行管理,包括Wallet 管理。可以从Enterprise Manager 页中创建、打开和关闭Wallet。

    • 使用RMAN 安全性增强功能
    • 配置备份粉碎功能:
    RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

    • 使用备份粉碎功能:
    RMAN> DELETE FORCE;

    使用RMAN 安全性增强功能
    备份粉碎是一项重要的管理功能,它使DBA可以删除透明加密备份的加密密钥,而无需以物理方式访问备份介质。如果加密密钥被破坏,则加密备份将是无法访问的,这不适用于受口令保护的备份。
    可使用以下命令配置透明加密备份:
    CONFIGURE ENCRYPTION FOR DATABASE ON; 
    SET ENCRYPTION ON; 
    默认设置为OFF,不启用备份粉碎功能。要粉碎备份,无需使用新命令,只需使用:DELETE FORCE;

    • 管理对外部网络服务的细粒度访问
    1.创建ACL 及其权限:

    BEGIN
    DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
    acl => 'us-oracle-com-permissions.xml', 
    description => 'Permissions for oracle network',
    principal => 'SCOTT',
    is_grant => TRUE, 
    privilege => 'connect'); 
    END;


    通过PL/SQL 程序包的网络实用程序系列(如UTL_TCP、UTL_INADDR、UTL_HTTP、UTL_SMTP和UTL_MAIL),Oracle 用户可以使用原始TCP 或基于原始TCP 创建的更高级别协议从数据库进行网络调出。无论用户是否具有对这些程序包的EXECUTE权限,都无法控制所访问的网络主机。新的程序包DBMS_NETWORK_ACL_ADMIN支持使用XML DB 实施的访问控制列表(ACL) 进行细粒度控制。

    1.创建访问控制列表(ACL)。ACL 是在XML 文件中保存的用户和权限的列表。以acl参数命名的XML 文档与XML DB中的/sys/acl/文件夹相关。在本示例中,SCOTT被授予connect权限。ACL 中的用户名区分大小写,而且必须与会话的用户名相匹配。只有resolve和connect权限,connect权限包含
    resolve权限。可选参数可以指定这些权限的开始和结束时间戳。要将更多用户和权限添加到此ACL 中,请使用ADD_PRIVILEGE过程。


    2.将ACL 分配给一台或多台网络主机:
    BEGIN
    DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
    acl => 'us-oracle-com-permissions.xml',
    host => '*.us.oracle.com', 
    lower_port => 80,
    upper_port => null); 
    END

    2.将ACL分配给一台或多台网络主机。ASSIGN_ACL过程将ACL 与一台网络主机和一个端口或端口范围(可选)相关联。在该示例中,主机参数允许使用主机名通配符将ACL 分配给域中的所有主机。使用通配符会影响ACL 评估的优先级顺序。端口的相应完全限定主机名在端口的相应主机前进行评估。完全限定的主机名在部分域名前进行评估,子域在顶级域之前进行评估。
    创建ACL 后,可以将多台主机分配到同一ACL 中,还可以将多个用户按任意顺序添加到同一ACL 中。

    • 小结

    • 配置口令文件以使用区分大小写的口令
    • 对表空间进行加密
    • 配置对网络服务的细粒度访问
  • 相关阅读:
    Linux终端连接Linux服务器
    Linux常用命令大全
    linux中的两个命令setfacl和chmod有什么区别
    微信小程序 PHP后端form表单提交实例详解
    Facebook 开源 AI 所使用的硬件平台 'Big Sur'
    十大众筹PC:硅谷新生代如何打造下一代计算机
    <<开源硬件创客 15个酷应用玩转树莓派>>
    别小看树莓派 极客们玩出16个倍儿有趣的项目
    玩转12款Linux开源机器人
    2015业界良心迷你开发板大盘点
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13316415.html
Copyright © 2011-2022 走看看