最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Oracle数据库系统加固规范

来源:动视网 责编:小OO 时间:2025-10-01 23:57:06
文档

Oracle数据库系统加固规范

Oracle数据库系统加固规范目录1账号管理、认证授权1.1账号1.1.1SHG-Oracle-01-01-01编号SHG-Oracle-01-01-01名称为不同的管理员分配不同的账号实施目的应按照用户分配账号,避免不同用户间共享账号,提高安全性。问题影响账号混淆,权限不明确,存在用户越权使用的可能。系统当前状态select?*?from?all_users;?select?*?from?dba_users;记录用户列表实施步骤1、参考配置操作createuserabc1identified
推荐度:
导读Oracle数据库系统加固规范目录1账号管理、认证授权1.1账号1.1.1SHG-Oracle-01-01-01编号SHG-Oracle-01-01-01名称为不同的管理员分配不同的账号实施目的应按照用户分配账号,避免不同用户间共享账号,提高安全性。问题影响账号混淆,权限不明确,存在用户越权使用的可能。系统当前状态select?*?from?all_users;?select?*?from?dba_users;记录用户列表实施步骤1、参考配置操作createuserabc1identified
Oracle数据库系统加固规范

目 录

1账号管理、认证授权

1.1账号

1.1.1 SHG-Oracle-01-01-01

编号SHG-Oracle-01-01-01

名称为不同的管理员分配不同的账号
实施目的应按照用户分配账号,避免不同用户间共享账号,提高安全性。
问题影响账号混淆,权限不明确,存在用户越权使用的可能。
系统当前状态select ? * ? from ? all_users; ? 

select ? * ? from ? dba_users;

记录用户列表

实施步骤1、参考配置操作

create user abc1 identified by password1;

create user abc2 identified by password2;

建立role,并给role授权,把role赋给不同的用户

2、补充操作说明

1、abc1和abc2是两个不同的账号名称,可根据不同用户,取不同的名称;

回退方案删除用户:例如创建了一个用户 A,要删除它可以这样做

connect sys/密码 as sysdba;

drop user A cascade;

1.1.201-01-02

01-01-02

1.1.301-01-03

01-01-03

不能通过Sql*Net远程以SYSDBA用户连接到数据库。

2. 在数据库主机上以sqlplus ‘/as sysdba’连接到数据库需要输入口令。

检测操作

1. 以Oracle用户登陆到系统中。

2. 以sqlplus ‘/as sysdba’登陆到sqlplus环境中。

3. 使用show parameter命令来检查参数REMOTE_LOGIN_PASSWORDFILE是否设置为NONE。

Show parameter REMOTE_LOGIN_PASSWORDFILE

4. 检查在

$ORACLE_HOME/network/admin/文件中参数是否被设置成NONE。

实施风险
重要等级★★★
备注
1.1.4 SHG-Oracle-01-01-04

编号SHG-Oracle-01-01-04

名称权限最小化
实施目的在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
问题影响账号权限越大,对系统的威胁性越高
系统当前状态select * from user_sys_privs;

select * from user_role_privs;

select * from user_tab_privs;

记录用户拥有权限

实施步骤1、参考配置操作

grant 权限 to username;

revoke 权限 from username;

2、补充操作说明

用第一条命令给用户赋相应的最小权限

用第二条命令收回用户多余的权限

回退方案还原添加或删除的权限
判断依据业务测试正常
实施风险
重要等级
备注
1.1.5 SHG-Oracle-01-01-05

编号SHG-Oracle-01-01-05

名称数据库角色
实施目的使用数据库角色(ROLE)来管理对象的权限。
问题影响账号管理混乱 
系统当前状态select * from dba_role_privs;

select * from user_role_privs;

记录用户拥有的role

实施步骤一.创建角色,修改角色

1.创建角色,不指定密码:

create role testrole;

2.创建角色,指定密码:

create role testrole identified by passwd;

3.修改角色:

alter role testrole identified by passwd;

4. 给角色授予权限。

Grant select on Table_name to testrole;

把角色赋予用户:(特别说明,授予角色不是实时的。如下:)

grant testrole to User_Name;

二、起用角色:给用户赋予角色,角色并不会立即起作用。

1.角色不能立即起作用。必须下次断开此次连接,下次连接才能起作用。

2.或者执行命令:有密码的角色set role testrole   identified by passwd 立即生效;

3.无密码的角色:set role testrole;

回退方案删除相应的Role

revoke ? role_name ? from ? user_name

判断依据对应用用户不要赋予DBA Role或不必要的权限
实施风险
重要等级
备注
1.1.6 SHG-Oracle-01-01-06

编号SHG-Oracle-01-01-06

名称用户profile
实施目的对用户的属性进行控制,包括密码策略、资源等。
问题影响账号安全性低. 
系统当前状态SELECT profile FROM dba_users WHERE username=’user_name’;

记录用户赋予的profile

实施步骤可通过下面类似命令来创建profile,并把它赋予一个用户

SQL> show parameter resource_limit

SQL> alter system set resource_limit=true;

CREATE PROFILE profile_name LIMIT   

  FAILED_LOGIN_ATTEMPTS 6

   PASSWORD_LIFE_TIME 60

   PASSWORD_REUSE_TIME 60

   PASSWORD_REUSE_MAX 5

   PASSWORD_VERIFY_FUNCTION verify_function

   PASSWORD_LOCK_TIME 1/24

   PASSWORD_GRACE_TIME 90;

ALTER USER user_name PROFILE profile_name;

回退方案alter user dinya profile default;

恢复默认

判断依据1. 可通过设置profile来数据库账户口令的复杂程度,口令生存周期和账户的锁定方式等。

2. 可通过设置profile来数据库账户的CPU资源占用。

4、检测操作

1. 以DBA用户登陆到sqlplus中。

2. 查询视图dba_profiles和dba_usres来检查profile是否创建。

实施风险
重要等级
备注
1.1.7 SHG-Oracle-01-01-07

编号SHG-Oracle-01-01-07

名称数据字典保护
实施目的启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表。
问题影响数据库安全性低.
系统当前状态Show parameter O7_DICTIONARY_ACCESSIBILITY

记录当前状态

实施步骤通过设置下面初始化参数来只有SYSDBA权限的用户才能访问数据字典。

alter system set O7_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile; 

回退方案修改O7_DICTIONARY_ACCESSIBILITY为原来属性

判断依据以普通用户登陆到数据库,不能查看X$开头的表,比如:

select * from sys. x$ksppi;

检测操作

1. 以Oracle用户登陆到系统中。

2. 以sqlplus ‘/as sysdba’登陆到sqlplus环境中。

3. 使用show parameter命令来检查参数O7_DICTIONARY_ACCESSIBILITY是否设置为FALSE。

Show 

parameter O7_DICTIONARY_ACCESSIBILITY

实施风险
重要等级
备注
1.1.8 SHG-Oracle-01-01-08

编号SHG-Oracle-01-01-08

名称检查DBA组用户
实施目的在DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户。
问题影响影响组用户管理
系统当前状态Cat /etc/passwd

实施步骤参考配置操作

通过/etc/passwd文件来检查是否有其它用户在DBA组中。

删除用户:#userdel username; 

锁定用户:

1) 修改/etc/shadow文件,用户名后加*LK*

2) 将/etc/passwd文件中的shell域设置成/bin/false

3) #passwd -l username

只有具备超级用户权限的使用者方可使用,#passwd -l username锁定用户,用#passwd –d username解锁后原有密码失效,登录需输入新密码,修改/etc/shadow能保留原有密码。

回退方案还原/etc/passwd文件
判断依据判定条件

无其它用户属于DBA组。

检测操作

通过/etc/passwd文件来检查是否有其它用户在DBA组中。

实施风险
重要等级
备注
1.2口令

1.2.1 SHG-Oracle-01-02-01

编号SHG-Oracle-01-02-01
名称缺省密码长度复杂度

实施目的对于采用静态口令进行认证的数据库,口令长度至少6位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
问题影响增加密码被暴力破解的成功率
系统当前状态SELECT profile FROM dba_users WHERE username=’user_name’;

记录用户赋予的profile

实施步骤1、参考配置操作

为用户建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度

示例:

SQL>CREATE OR REPLACE FUNCTION my_password_verify   (username VARCHAR2   ,password VARCHAR2   ,old_password VARCHAR2   ) RETURN BOOLEAN IS

        2  BEGIN

3 IF LENGTH(password) < 6 THEN

        4  raise_application_error(-20001,''Password must be at least 6 characters long'');

        5  END IF;

        6  RETURN(TRUE);

        7  END;

SQL> create profile TEST_PROFILE limit

? 2? password_verify_function MY_PASSWORD_VERIFY;

回退方案alter user user_name profile default;
判断依据1、判定条件

修改密码为不符合要求的密码,将失败

2、检测操作

alter user user_name identified by passwd;将失败

实施风险
重要等级★★★
备注
1.2.2 SHG-Oracle-01-02-02

编号SHG-Oracle-01-02-02
名称缺省密码生存周期
实施目的对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天,减少口令安全隐患。
问题影响密码被非法利用,并且难以管理
系统当前状态SELECT profile FROM dba_users WHERE username=’user_name’;

记录用户赋予的profile

实施步骤1、参考配置操作

为用户建相关profile,指定PASSWORD_GRACE_TIME为90天

2、补充操作说明

在90天内,需要修改密码

回退方案alter user user_name profile default;
判断依据3、判定条件

到期不修改密码,密码将会失效。连接数据库将不会成功

4、检测操作

connect username/password报错

实施风险
重要等级★★★
备注
1.2.3 SHG-Oracle-01-02-03

编号SHG-Oracle-01-02-03
名称密码重复使用
实施目的对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使用最近5次(含5次)内已使用的口令。
问题影响密码破解的几率增加
系统当前状态SELECT profile FROM dba_users WHERE username=’user_name’;

记录用户赋予的profile

实施步骤1、参考配置操作

为用户建profile,指定PASSWORD_REUSE_MAX为5

2、补充操作说明

当前使用的密码,必需在密码修改5次后才能再次被使用

回退方案alter user user_name profile default;
判断依据3、判定条件

重用修改5次内的密码,将不能成功

4、检测操作

alter user username identified by password1;如果password1在5次修改密码内被使用,该操作将不能成功

实施风险
重要等级
备注
1.2.4 SHG-Oracle-01-02-04

编号SHG-Oracle-01-02-04
名称密码重试
实施目的对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过6次(不含6次),锁定该用户使用的账号。
问题影响允许暴力破解密码
系统当前状态SELECT profile FROM dba_users WHERE username=’user_name’;

记录用户赋予的profile

实施步骤1、参考配置操作

为用户建profile,指定FAILED_LOGIN_ATTEMPTS为6

2、补充操作说明

如果连续6次连接该用户不成功,用户将被锁定

回退方案alter user user_name profile default;
判断依据3、判定条件

连续6次用错误的密码连接用户,第7次时用户将被锁定

4、检测操作

connect username/password,连续6次失败,用户被锁定

实施风险
重要等级
备注
1.2.5 SHG-Oracle-01-02-05

编号SHG-Oracle-01-02-05
名称修改默认密码
实施目的更改数据库默认帐号的密码。
问题影响可能被破解密码
系统当前状态询问管理员账号密码,并记录
实施步骤参考配置操作

1. 可通过下面命令来更改默认用户的密码:

ALTER USER user_name IDENTIFIED BY passwd;

2. 下面是默认用户密码列表:

CTXSYS CTXSYS

DBSNMP DBSNMP

LBACSYS LBACSYS

MDDATA MDDATA

MDSYS  MDSYS

DMSYS  DMSYS

OLAPSYS MANAGER

ORDPLUGINS ORDPLUGINS

ORDSYS ORDSYS

OUTLN OUTLN

SI_INFORMTN_SCHEMA SI_INFORMTN_SCHEMA

SYS CHANGE_ON_INSTALL

SYSMAN CHANGE_ON_INSTALL

SYSTEM MANAGER

回退方案ALTER USER user_name IDENTIFIED BY passwd;
判断依据判定条件

不能以用户名作为密码或使用默认密码的账户登陆到数据库。

检测操作

1. 以DBA用户登陆到sqlplus中。

2. 检查数据库默认账户是否使用了用户名作为密码或默认密码。

实施风险
重要等级
备注
2日志配置

2.1.1 SHG-Oracle-02-01-01

编号SHG-Oracle-02-01-01

名称启用日志记录功能
实施目的数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP地址。
问题影响无法对用户的登陆进行日志记录
系统当前状态
实施步骤create table login_log                        --        登入登出信息表

(

    session_id int not null,        --        sessionid

    login_on_time  date,                --        登入时间       

    login_off_time  date,                --        登出时间        

    user_in_db        varchar2(30),        --        登入的db user

    machine    varchar2(20),           --        机器名

    ip_address varchar2(20),        --        ip地址

    run_program varchar2(20)    --        以何程序登入

);

create or replace trigger login_on_info                --  记录登入信息的触发器

after logon on database 

Begin 

insert into login_log(session_id,login_on_time,login_of

f_time,user_in_db,machine,ip_address,run_program)

select AUDSID,sysdate,null,,machine,SYS_CO

NTEXT('USERENV','IP_ADDRESS'),program

    from v$session where AUDSID = USERENV('SESSIONID');  --当前SESSION

END;

create or replace trigger login_off_info        --        记录登出信息的触发器

before logoff on database 

Begin

        update login_log set  login_off_time = sysdate

        where session_id = USERENV('SESSIONID');        --当前SESSION        

exception

    when others then

            null;

END;

回退方案ALTER TRIGGER 名称 DISABLE;

drop trigger 名称;

判断依据判定条件

登录测试,检查相关信息是否被记录

补充说明

触发器与AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大。

实施风险
重要等级★★★
备注
2.1.2 SHG-Oracle-02-01-02

编号SHG-Oracle-02-01-02

名称记录用户对设备的操作
实施目的数据库应配置日志功能,记录用户对数据库的操作 
问题影响无法对用户的操作进行日志记录
系统当前状态
实施步骤create table employees_log(

        who varchar2(30),

        action varchar2(20));

        when date);

create   or   replace   trigger   biud_employ_copy   

        before   insert   or   update   or   delete   

        on   employees_copy   

  declare   

        l_action   %type;   

  begin   

      if   inserting   then     

            l_action:='insert';   

      elsif   updating   then   

            l_action:='delete';   

    elsif   deleting   then   

            l_action:='update';   

    else     

            raise_application_error(-2001,'you   shoule   never   ever   get   this   error.');   

    end   if;   

       insert   into   employees_log(who,action,when)   

        values(user,l_action,sysdate);   

  end   biud_employ_copy;

回退方案ALTER TRIGGER 名称 DISABLE;

drop trigger 名称;

判断依据
实施风险
重要等级
备注
2.1.3 SHG-Oracle-02-01-03

编号SHG-Oracle-02-01-03

名称记录系统安全事件
实施目的通过设置让系统记录安全事件,方便管理员分析
问题影响无法记录系统的各种安全事件
系统当前状态
实施步骤参考配置操作

create table jax_event_table(eventname

 varchar2(30),time date);

create trigger tr_startup

after startup ondatabase

begin

 insertinto jax_event_table

 values(ora_sysevent,sysdate);

end;

create trigger tr_shutdown

beforeshutdownondatabase

begin

 insertinto jax_event_table

 values(ora_sysevent,sysdate);

end;

回退方案ALTER TRIGGER 名称 DISABLE;

drop trigger 名称;

判断依据记录系统安全事件
实施风险
重要等级
备注
2.1.4 SHG-Oracle-02-01-04

编号SHG-Oracle-02-01-04

名称数据库审计策略
实施目的根据业务要求制定数据库审计策略
问题影响日志被删除后无法恢复。

系统当前状态show?parameter?audit_sys_operations;

show parameter audit_trail;

查看返回值,并记录.

实施步骤1、参考配置操作

SQL> alter system set audit_sys_operations=TRUE scope=spfile;

SQL> alter system set audit_trail=db scope=spfile;

SQL> show parameter audit;

SQL> audit all on table_name;

回退方案noaudit all on table_name;

恢复audit_sys_operations, audit_trail属性

判断依据判定条件

对审计的对象进行一次数据库操作,检查操作是否被记录。

检测操作

1. 检查初始化参数audit_trail是否设置。

2. 检查dba_audit_trail视图中或$ORACLE_BASE/admin/adump目录下是否有数据。

补充说明

AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大

实施风险
重要等级
备注
3通信协议

3.1.1 SHG-Oracle-03-01-01

编号SHG-Oracle-03-01-01

名称信任IP连接
实施目的设置只有信任的IP地址才能通过访问数据库。
问题影响数据库不安全IP访问
系统当前状态查看$ORACLE_HOME/network/admin/

实施步骤参考配置操作

只需在服务器上的文件$ORACLE_HOME/network/admin/中设置以下行:

 = yes 

 = (ip1,ip2…)

 

回退方案还原$ORACLE_HOME/network/admin/文件
判断依据判定条件

在非信任的客户端以数据库账户登陆被提示拒绝。

检测操作

检查$ORACLE_HOME/network/admin/文件中是否设置参数和。

实施风险
重要等级★★
备注
3.1.2 SHG-Oracle-03-01-02

编号SHG-Oracle-03-01-02

名称网络数据传输安全
实施目的使用Oracle提供的高级安全选件来加密客户端与数据库之间或中间件与数据库之间的网络传输数据
问题影响数据传输的不安全性增加
系统当前状态记录检查

$ORACLE_HOME/network/admin/文件

实施步骤参考配置操作

1. 在Oracle Net Manager中选择“Oracle Advanced Security”。

2. 然后选择Encryption。

3. 选择Client或Server选项。

4. 选择加密类型。

5. 输入加密种子(可选)。

6. 选择加密算法(可选)。

7. 保存网络配置,被更新。

回退方案还原$ORACLE_HOME/network/admin/文件
判断依据判定条件

通过网络层捕获的数据库传输包为加密包。

检测操作

检查$ORACLE_HOME/network/admin/文件中是否设置等参数

实施风险
重要等级
备注
4设备其他安全要求

4.1.1 SHG-Oracle-04-01-01

编号SHG-Oracle-04-01-01

名称密码

实施目的为数据库(LISTENER)的关闭和启动设置密码。
问题影响增加数据库安全隐患

系统当前状态查看$ORACLE_HOME/network/admin/文件中参数PASSWORDS_LISTENER值

实施步骤参考配置操作

$ lsnrctl

LSNRCTL> change_password

Old password: Not displayed

New password: Not displayed

Reenter new password: Not displayed

Connecting to

 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(H

OST=prolin1)(PORT=1521)(IP=FIRST)))

Password changed for LISTENER

The command completed successfully

LSNRCTL> save_config

回退方案set password

取消密码

判断依据判定条件

使用lsnrctl start或lsnrctl stop命令起停listener需要密码

检测操作

检查$ORACLE_HOME/network/admin/文件中是否设置参数PASSWORDS_LISTENER。

实施风险
重要等级★★
备注
4.1.2 SHG-Oracle-04-01-02

编号SHG-Oracle-04-01-02

名称连接超时
实施目的在某些应用环境下可设置数据库连接超时,比如数据库将自动断开超过10分钟的空闲远程连接。
问题影响空闲远程连接无法断开
系统当前状态记录检查

$ORACLE_HOME/network/admin/文件

实施步骤参考配置操作

在中设置下面参数:

=10

回退方案还原$ORACLE_HOME/network/admin/文件
判断依据判定条件

10分钟以上的无任何操作的空闲数据库连接被自动断开

检测操作

检查$ORACLE_HOME/network/admin/文件中是否设置参数。

实施风险
重要等级
备注

文档

Oracle数据库系统加固规范

Oracle数据库系统加固规范目录1账号管理、认证授权1.1账号1.1.1SHG-Oracle-01-01-01编号SHG-Oracle-01-01-01名称为不同的管理员分配不同的账号实施目的应按照用户分配账号,避免不同用户间共享账号,提高安全性。问题影响账号混淆,权限不明确,存在用户越权使用的可能。系统当前状态select?*?from?all_users;?select?*?from?dba_users;记录用户列表实施步骤1、参考配置操作createuserabc1identified
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top