Oracle漏洞扫描安全加固.docx

上传人:b****5 文档编号:8101576 上传时间:2023-01-28 格式:DOCX 页数:19 大小:20.49KB
下载 相关 举报
Oracle漏洞扫描安全加固.docx_第1页
第1页 / 共19页
Oracle漏洞扫描安全加固.docx_第2页
第2页 / 共19页
Oracle漏洞扫描安全加固.docx_第3页
第3页 / 共19页
Oracle漏洞扫描安全加固.docx_第4页
第4页 / 共19页
Oracle漏洞扫描安全加固.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Oracle漏洞扫描安全加固.docx

《Oracle漏洞扫描安全加固.docx》由会员分享,可在线阅读,更多相关《Oracle漏洞扫描安全加固.docx(19页珍藏版)》请在冰豆网上搜索。

Oracle漏洞扫描安全加固.docx

Oracle漏洞扫描安全加固

关于操作系统和数据库合规检查漏洞的解决方案Oracle数据库分册

适用软件版本

Oracle10g、11g

适用硬件版本

主题

关于操作系统和数据库合规检查漏洞的解决方案Oracle数据库分册

1、问题描述与原因:

Oracle数据库在合规检查时被扫描出漏洞,要求对这些漏洞进行解决。

2、应对措施:

对存在漏洞进行定制的安全加固操作。

3、执行条件/注意事项:

Ø加固前确保服务器、数据库、网管运行均正常。

最好重启下服务器、数据库和网管查看重启后网管是否能运行正常。

如果加固前服务器本身有问题,加固后服务器运行异常会加大排查难度。

Ø本解决方案执行完成后,需要重启Oracle数据库来生效某些操作。

Ø本解决方案不必完全执行,请根据系统扫描出的漏洞选择对应的漏洞条目进行操作。

Ø如无特殊说明,本文中的执行用户均为oracle

4、操作步骤:

漏洞清单(单击可跳转):

(注:

漏洞名称与配置项信息中的配置项名称对应。

漏洞1.检查是否对用户的属性进行控制(5)

漏洞2.检查是否配置Oracle软件账户的安全策略

(2)

漏洞3.检查是否启用数据字典保护

漏洞4.检查是否在数据库对象上设置了VPD和OLS(6)

漏洞5.检查是否存在dvsys用户dbms_macadm对象(14)

漏洞6.检查是否数据库应配置日志功能(11)

漏洞7.检查是否记录操作日志(13)

漏洞8.检查是否记录安全事件日志(7)

漏洞9.检查是否根据业务要求制定数据库审计策略

漏洞10.检查是否为监听设置密码

漏洞11.检查是否限制可以访问数据库的地址

(1)

漏洞12.检查是否使用加密传输(4)

漏洞13.检查是否设置超时时间(15)

漏洞14.检查是否设置DBA组用户数量限制(3)

漏洞15.检查是否删除或者锁定无关帐号

漏洞16.检查是否限制具备数据库超级管理员(SYSDBA)权限的用户远程登录(10)

漏洞17.检查口令强度设置(17)

漏洞18.检查帐户口令生存周期(12)

漏洞19.检查是否设置记住历史密码次数(8)

漏洞20.检查是否配置最大认证失败次数

漏洞21.检查是否在配置用户所需的最小权限(9)

漏洞22.检查是否使用数据库角色(ROLE)来管理对象的权限(16)

漏洞23.检查是否更改数据库默认帐号的密码

执行Oracle安全加固操作前备份文件:

bash-3.2$cp$ORACLE_HOME/network/admin/listener.ora$ORACLE_HOME/network/admin/listener.ora.org

bash-3.2$cp$ORACLE_HOME/network/admin/sqlnet.ora$ORACLE_HOME/network/admin/sqlnet.ora.org

Oracle数据库漏洞的解决方案全部执行完成后,需要重启Oracle实例来生效某些操作。

漏洞1.检查是否对用户的属性进行控制

类型:

Oracle数据库类

问题:

SQL>selectcount(t.username)fromdba_userstwhereprofilenotin('DEFAULT','MONITORING_PROFILE');

COUNT(T.USERNAME)-----------------0

解决方案:

暂时不处理。

漏洞2.检查是否配置Oracle软件账户的安全策略

类型:

Oracle数据库类

问题:

解决方案:

暂时不处理

漏洞3.检查是否启用数据字典保护

类型:

Oracle数据库类

问题:

SQL>selectvaluefromv$parameterwherenamelike'%O7_DICTIONARY_ACCESSIBILITY%';selectvaluefromv$parameterwherenamelike'%O7_DICTIONARY_ACCESSIBILITY%'

*

ERRORatline1:

ORA-01034:

ORACLEnotavailable

ProcessID:

0

SessionID:

0Serialnumber:

0

解决方案:

在数据库启动的情况下,通过下面的命令检查o7_dictionary_accessibility的参数值:

bash-3.2$sqlplussystem/oracle@

SQL*Plus:

Release10.2.0.4.0-ProductiononThuJan911:

33:

562014

Copyright(c)1982,2007,Oracle.AllRightsReserved.

Connectedto:

OracleDatabase10gEnterpriseEditionRelease10.2.0.4.0-Production

WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions

SQL>showparametero7_dictionary_accessibility;

NAMETYPEVALUE

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

O7_DICTIONARY_ACCESSIBILITYbooleanFALSE

检查出默认的结果是FALSE后,使用下面的命令退出SQL*PLUS:

SQL>exit

DisconnectedfromOracleDatabase11gEnterpriseEditionRelease11.2.0.3.0-64bitProduction

WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions

漏洞4.检查是否在数据库对象上设置了VPD和OLS

类型:

Oracle数据库类

问题:

SQL>selectcount(*)fromv$vpd_policy;

COUNT(*)

----------

0

解决方案:

暂时不处理。

漏洞5.检查是否存在dvsys用户dbms_macadm对象

类型:

Oracle数据库类

问题:

SQL>selectcount(*)fromdba_userswhereusername='DVSYS';

COUNT(*)

----------

0

解决方案:

暂时不处理。

漏洞6.检查是否数据库应配置日志功能

类型:

Oracle数据库类

问题:

SQL>selectcount(*)fromdba_triggerstwheretrim(t.triggering_event)=trim('LOGON');

COUNT(*)

----------

0

解决方案:

暂时不处理。

漏洞7.检查是否记录操作日志

类型:

Oracle数据库类

问题:

SQL>selectvaluefromv$parametertwheret.name='audit_trail';

selectvaluefromv$parametertwheret.name='audit_trail'

*

ERRORatline1:

ORA-01034:

ORACLEnotavailable

ProcessID:

0

SessionID:

0Serialnumber:

0

解决方案:

暂时不处理。

漏洞8.检查是否记录安全事件日志

类型:

Oracle数据库类

问题:

SQL>selectcount(*)fromdba_triggerstwheretrim(t.triggering_event)=trim('LOGON');COUNT(*)

----------

0

解决方案:

暂时不处理。

漏洞9.检查是否根据业务要求制定数据库审计策略

类型:

Oracle数据库类

问题:

SQL>selectvaluefromv$parametertwheret.name='audit_trail';

selectvaluefromv$parametertwheret.name='audit_trail'

*

ERRORatline1:

ORA-01034:

ORACLEnotavailable

ProcessID:

0

SessionID:

0Serialnumber:

0

解决方案:

暂时不处理。

漏洞10.检查是否为监听设置密码

类型:

Oracle数据库类

问题:

$cat`find$ORACLE_HOME-namesqlnet.ora`|grep-v"#"|grep-v"^$"find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.

$cat`find$ORACLE_HOME-namelistener.ora`|grep-v"#"|grep-v"^$"find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PLSExtProc)(ORACLE_HOME=/oracle/app/oracle/dbhome_1)(PROGRAM=extproc))(SID_DESC=(GLOBAL_DBNAME=minos)(ORACLE_HOME=/oracle/app/oracle/dbhome_1)(SID_NAME=minos)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=100.92.255.141)(PORT=1521))))ADR_BASE_LISTENER=/oracle/app/oracle

解决方案:

bash-3.2$lsnrctl

LSNRCTLforIBM/AIXRISCSystem/6000:

Version11.2.0.3.0-Productionon08-JAN-201415:

11:

21

Copyright(c)1991,2011,Oracle.Allrightsreserved.

WelcometoLSNRCTL,type"help"forinformation.

LSNRCTL>change_password

Oldpassword:

<如果之前没有密码则这里不填,直接按Enter键>

Newpassword:

Reenternewpassword:

Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.92.243.82)(PORT=1521)))

PasswordchangedforLISTENER

Thecommandcompletedsuccessfully

LSNRCTL>save_config

Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.92.243.82)(PORT=1521)))

SavedLISTENERconfigurationparameters.

ListenerParameterFile/oracle/app/oracle/11.2.0.3/dbhome_1/network/admin/listener.ora

OldParameterFile/oracle/app/oracle/11.2.0.3/dbhome_1/network/admin/listener.bak

Thecommandcompletedsuccessfully

LSNRCTL>exit

bash-3.2$

设置完成后通过下面的命令检查:

bash-3.2$cat$ORACLE_HOME/network/admin/listener.ora|grep"^PASSWORDS"

有输出则说明已经设置成功了。

漏洞11.检查是否限制可以访问数据库的地址

类型:

Oracle数据库类

问题:

$cat`find$ORACLE_HOME-namesqlnet.ora`|grep-v"#"|grep-v"^$"find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.

$cat`find$ORACLE_HOME-namelistener.ora`|grep-v"#"|grep-v"^$"find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PLSExtProc)(ORACLE_HOME=/oracle/app/oracle/dbhome_1)(PROGRAM=extproc))(SID_DESC=(GLOBAL_DBNAME=minos)(ORACLE_HOME=/oracle/app/oracle/dbhome_1)(SID_NAME=minos)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=100.92.255.141)(PORT=1521))))ADR_BASE_LISTENER=/oracle/app/oracle

解决方案:

检查$ORACLE_HOME/network/admin/sqlnet.ora文件中是否有以下行:

TCP.VALIDNODE_CHECKING=YES

TCP.INVITED_NODES=(,,…)

其中是允许访问本数据库的IP地址。

如果没有,则根据需要在文件中添加,随后重启数据库。

重启完成后,则数据库只允许TCP.INVITED_NODES列出的IP来访问。

如果不存在sqlnet.ora文件,请使用以下命令创建此文件后再实施上面的操作:

bash-3.2$touch$ORACLE_HOME/network/admin/sqlnet.ora

漏洞12.检查是否使用加密传输

类型:

Oracle数据库类

问题:

$cat`find$ORACLE_HOME-namesqlnet.ora`|grep-v"#"|grep-v"^$"find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.

$cat`find$ORACLE_HOME-namelistener.ora`|grep-v"#"|grep-v"^$"find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/oracle/app/oracle/dbhome_1)

(PROGRAM=extproc)

(SID_DESC=

(GLOBAL_DBNAME=minos)

(ORACLE_HOME=/oracle/app/oracle/dbhome_1)

(SID_NAME=minos)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

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

ADR_BASE_LISTENER=/oracle/app/oracle

解决方案:

暂时不处理。

漏洞13.检查是否设置超时时间

类型:

Oracle数据库类

问题:

$cat`find$ORACLE_HOME-namesqlnet.ora`|grep-v"#"|grep-v"^$"

find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.

$cat`find$ORACLE_HOME-namelistener.ora`|grep-v"#"|grep-v"^$"

find:

0652-081cannotchangedirectoryto:

:

Thefileaccesspermissionsdonotallowthespecifiedaction.

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/oracle/app/oracle/dbhome_1)

(PROGRAM=extproc)

(SID_DESC=

(GLOBAL_DBNAME=minos)

(ORACLE_HOME=/oracle/app/oracle/dbhome_1)

(SID_NAME=minos)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

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

ADR_BASE_LISTENER=/oracle/app/oracle

解决方案:

通过下面的命令检查是否设置了SQLNET.EXPIRE_TIME的参数值为10:

bash-3.2$grep-i"SQLNET.EXPIRE_TIME"$ORACLE_HOME/network/admin/sqlnet.ora

如果没有设置,在$ORACLE_HOME/network/admin/sqlnet.ora文件中添加一行:

SQLNET.EXPIRE_TIME=10

随后重新启动监听和数据库。

如果不存在sqlnet.ora文件,请使用以下命令创建此文件后再实施上面的操作:

bash-3.2$touch$ORACLE_HOME/network/admin/sqlnet.ora

漏洞14.检查是否设置DBA组用户数量限制

类型:

Oracle数据库类

问题:

解决方案:

手动将其他非oracle的用户从dba组中删除,将oracle用户从root或system组中删除。

查询用户所属组的命令是groups

改变用户所属组的命令是usermod-G,

漏洞15.检查是否删除或者锁定无关帐号

类型:

Oracle数据库类

问题:

SQL>selectt.usernamefromdba_userstwheret.account_status='OPEN';selectt.usernamefromdba_userstwheret.account_status='OPEN'*ERRORatline1:

ORA-01034:

ORACLEnotavailableProcessID:

0SessionID:

0Serialnumber:

0

解决方案:

暂时不处理。

漏洞16.检查是否限制具备数据库超级管理员(SYSDBA)权限的用户远程登录

类型:

Oracle数据库类

问题:

SQL>selectt.VALUEfromv$parametertwhereupper(t.NAME)like'%REMOTE_LOGIN_PASSWORDFILE%';

VALUE

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

EXCLUSIVE

解决方案:

在数据库启动时,通过下面的命令检查remote_login_passwordfile的参数值:

bash-3.2$sqlplussys/oracle@assysdba

SQL*Plus:

R

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1