oracle加固

一.   检查项名称:检查是否使用加密传输
判断条件:通过网络层捕获的数据库传输包为加密包,有设置sqlnet.encryption为符合要求
  1. 在Oracle Net Manager中选择“Oracle Advanced Security”。
2. 然后选择Encryption。
3. 选择Client或Server选项。
4. 选择加密类型。
5. 输入加密种子(可选)。
6. 选择加密算法(可选)。
7. 保存网络配置,sqlnet.ora被更新。
补充操作说明:存在sqlnet.encryption

二.   使用lsnrctl start或lsnrctl stop命令起停listener需要密码
通过下面命令设置密码:
$ lsnrctl
LSNRCTL> change_password
Old password: <OldPassword> Not displayed
New password: <NewPassword> Not displayed
Reenter new password: <NewPassword> Not displayed
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)(IP=FIRST)))
Password changed for LISTENER
The command completed successfully
LSNRCTL> save_config

补充操作说明:命令:cat network/admin/sqlnet.ora,回显中存在PASSWORDS_LISTENER

三.Oracle软件账户的安全策略
判断条件:每3个月自动提示更改密码,过期后不能登陆。
  使用操作系统一级的账户安全管理来保护Oracle软件账户。
补充操作说明:此项的判断方式同操作系统的口令生存周期项一致

四.检查是否限制可以访问数据库的地址
判断条件:在非信任的客户端以数据库账户登陆被提示拒绝。
只需在服务器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中设置以下行:
tcp.validnode_checking = yes
tcp.invited_nodes = (ip1,ip2…)
补充操作说明:tcp.validnode_checking的值为yes

五.10分钟以上的无任何操作的空闲数据库连接被自动断开,SQLNET.EXPIRE_TIME有设置
  在sqlnet.ora中设置下面参数:
SQLNET.EXPIRE_TIME=10
补充操作说明:存在SQLNET.EXPIRE_TIME值大于等于1

六.检查是否配置最大认证失败次数
判断条件:连续6次用错误的密码连接用户,第7次时用户将被锁定

为用户建profile,指定FAILED_LOGIN_ATTEMPTS为6
补充操作说明:如果连续6次连接该用户不成功,用户将被锁定
命令:select limit from dba_profiles t where resource_name= ‘FAILED_LOGIN_ATTEMPTS‘,回显中default值变成6

七.检查是否根据业务要求制定数据库审计策略
判断条件:对审计的对象进行一次数据库操作,检查操作是否被记录。
1. 通过设置参数audit_trail = db或os来打开数据库审计。
2. 然后可使用Audit命令对相应的对象进行审计设置。
补充操作说明:存在os,db,DB,OS

八.检查是否记录操作日志
判断条件:做相关操作,检查是否记录成功
创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难
1.建表LOGON_TABLE
2.建触发器
CREATE TRIGGER TRI_LOGON
  AFTER LOGON ON DATABASE
BEGIN
  INSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT(‘USERENV‘, ‘SESSION_USER‘),
SYSDATE);
END;
补充操作说明:命令:select value from v$parameter t where t.name= ‘audit_trail‘,VALUE等于DB,OS中的一个

九.检查是否限制具备数据库超级管理员(SYSDBA)权限的用户远程登录
判断条件:1. 以SYSDBA用户不能远程连接到数据库。

1. 在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。
补充操作说明:命令:select t.VALUE from v$parameter t whereupper(t.NAME) like  ‘%REMOTE_LOGIN_PASSWORDFILE%‘,回显中出现NONE

十.检查是否在数据库对象上设置了VPD和OLS
判断条件:通过视图来检查是否在数据库对象上设置了VPD和OLS。

1. 在表上构建 VPD可以使用Oracle所提供的 PL/SQL 包 DBMS_RLS 控制整个 VPD 基础架构,具体设置方法较复杂,建议参考Oracle文档进行配置。
2. Oracle标签安全(OLS)是在相关表上通过添加一个标签列来实现复杂的数据安全控制,具体细节请参考Oracle文档。
补充操作说明:命令:select count(*) from v$vpd_policy,回显中COUNT值大于等于1

十一. 检查帐户口令生存周期
判断条件:到期不修改密码,密码将会失效。连接数据库将不会成功
修改profile,使所有profile的PASSWORD_LIFE_TIME参数小于等于90
补充操作说明:在90天内,需要修改密码
命令:select limit from dba_profiles t where resource_name= ‘PASSWORD_LIFE_TIME‘,回显值小于等于90

十二. 检查口令强度设置
判断条件:修改密码为不符合要求的密码,将失败.profile中对于口令强度有定义
为用户建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度
CREATE PROFILE "TEST_PROFILE"
LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
ALTER USER "USER_NAME"  PROFILE"TEST_PROFILE";
补充操作说明:命令:select count(*) from dba_profiles whereresource_name = ‘PASSWORD_VERIFY_FUNCTION‘ and limit = ‘NULL‘,回显中COUNT值为0

十三.检查是否使用数据库角色(ROLE)来管理对象的权限
判断条件:对应用用户不要赋予DBA Role或不必要的权限。

  1. 1.  使用Create Role命令创建角色。
    2. 使用用Grant命令将相应的系统、对象或Role的权限赋予应用用户。

    除了默认用户(sys、system和sysman),其他用户都没有赋予dba角色
    补充操作说明:获取拥有dba权限的非默认管理员用户,用户数等于0

十四.检查是否在配置用户所需的最小权限
判断条件:非默认的具有DBA权限用户个数为0
      grant 权限 to username;
revoke 权限 from username;
补充操作说明:用第一条命令给用户赋相应的最小权限
用第二条命令收回用户多余的权限
获取拥有dba权限的非默认管理员用户,用户数等于0

十五.检查是否配置日志功能
判断条件:登录测试,检查相关信息是否被记录

创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难1.建表LOGON_TABLE2.建触发器CREATE TRIGGER TRI_LOGON AFTER LOGON ON DATABASEBEGIN INSERT INTO LOGON_TABLE VALUES (SYS_CONTEXT(‘USERENV‘,‘SESSION_USER‘),SYSDATE);END;
补充操作说明:触发器与AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大。
命令:select count(*) from dba_triggers t wheretrim(t.triggering_event) = trim(‘LOGON‘),回显中COUNT值大于等于1

十六. 检查是否记录安全事件日志
判断条件:做相关测试,检查是否记录成功
创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难
1.建表LOGON_TABLE
2.建触发器
CREATE TRIGGER TRI_LOGON
  AFTER LOGON ON DATABASE
BEGIN
  INSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT(‘USERENV‘, ‘SESSION_USER‘),
SYSDATE);
END;

补充操作说明:命令:select count(*) from dba_triggers t wheretrim(t.triggering_event) = trim(‘LOGON‘)。回显中COUNT值大于等于1

十七. 检查是否设置记住历史密码次数
判断条件:重用修改5次内的密码,将不能成功。profile中对于次数有定义

为用户建profile,指定PASSWORD_REUSE_MAX为5
补充操作说明:当前使用的密码,必需在密码修改5次后才能再次被使用
命令:select limit from dba_profiles t where resource_name= ‘PASSWORD_REUSE_MAX‘,回显中default值变成5

十八. 检查是否对用户的属性进行控制
判断条件:1. 可通过设置profile来限制数据库账户口令的复杂程度,口令生存周期和账户的锁定方式等。
2. 可通过设置profile来限制数据库账户的CPU资源占用。

为每个新用户赋予非默认的profile。

可通过下面类似命令来创建profile,并把它赋予一个用户
CREATE PROFILE app_user2 LIMIT
  FAILED_LOGIN_ATTEMPTS 6
   PASSWORD_LIFE_TIME 60
   PASSWORD_REUSE_TIME 60
   PASSWORD_REUSE_MAX 5
   PASSWORD_VERIFY_FUNCTIONverify_function
   PASSWORD_LOCK_TIME 1/24
   PASSWORD_GRACE_TIME 90;
ALTER USER jd PROFILE app_user2;
补充操作说明:命令:select * from dba_users t where profile notin (‘DEFAULT‘,‘MONITORING_PROFILE‘),回显中的值大于0

十九. 检查是否存在dvsys用户dbms_macadm对象
判断条件:以DBA用户登陆,不能查询其它用户下面的数据
Oracle Data Vault是作为数据库安全解决方案的一个单独选件,主要功能是将数据库管理账户的权限和应用数据访问的权限分开, Data Vault可限制有DBA权限的用户访问敏感数据。设置比较复杂,具体细节请参考Oracle文档。
补充操作说明:命令:select count(*) from dba_users whereusername=‘DVSYS‘,回显中COUNT值等于1

时间: 2024-10-17 11:58:22

oracle加固的相关文章

Oracle数据库安全加固记录

一个应用系统做等保,需要对数据库进行安全加固,根据流程需要先在测试环境进行测试通过后应用于生产环境,这里简单记录测试过程,审计内容是评测的重要点,但是生产环境也不便于开启,这里先简单记录之,后面再进行相关内容补充. 1. 删除无用多余的帐号 1)查看帐号及状态 SQL> select username,account_status from dba_users; USERNAME                       ACCOUNT_STATUS   -------------------

Oracle Java SE 任意代码执行漏洞加固

目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:         http://www.oracle.com/technetwork/topics/security/cpujan2014-1972949.html 下载jre-8u111-windows-i586及时更新即可

oracle如何加固你的数据库

要注意以下方面 1. 修改sys, system的口令. 2. Lock,修改,删除默认用户: dbsnmp,ctxsys等. 3. 把REMOTE_OS_AUTHENT改成False,防止远程机器直接登陆. 4. 把O7_DICTIONARY_ACCESSIBILITY改成False. 5. 把一些权限从PUBLIC Role取消掉. 6. 检查数据库的数据文件的安全性.不要设置成666之类的.检查其他dba 用户. 7. 把一些不需要的服务(比如ftp, nfs等关闭掉) 8. 限制数据库主

ORACLE之常用FAQ V1.0

[B]第一部分.SQL&PL/SQL[/B][Q]怎么样查询特殊字符,如通配符%与_[A]select * from table where name like 'A\_%' escape '\' [Q]如何插入单引号到数据库表中[A]可以用ASCII码处理,其它特殊字符如&也一样,如 insert into t values('i'||chr(39)||'m');  -- chr(39)代表字符'或者用两个单引号表示一个or insert into t values('I''m');  

Oracle编译器警告

Compiler Warnings 编译器警告 Oracle 10g allows you to enable compile-time warnings that are useful to identify potential run-time problems in your programs. These warnings are not serious enough to raise an exception at compile time, but may cause run-tim

Oracle用户自动锁定

oracle11g数据库安全加固须谨慎 数据库安全配置中,需要做相关的安全加固工作.以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而程序的连接数据库的配置封装在jar里,如果jar内的连接数据库的配置信息没有做相应的修改的话.就会对数据库的此业务账号造成严重的后果. 因此,真正了解Oracle安全数据库用户的状态,就显得尤为重要了.下面我们就看一下oracle数据库中的多种用户状态. ORACLE数据库用户有多种状态,可查看视图USER_ASTATUS_MAP. 1 

IT视频课程集(包含各类Oracle、DB2、Linux、Mysql、Nosql、Hadoop、BI、云计算、编程开发、网络、大数据、虚拟化

马哥Linux培训视频课程:http://pan.baidu.com/s/1pJwk7dp Oracle.大数据系列课程:http://pan.baidu.com/s/1bnng3yZ 天善智能BI培训视频课程:http://pan.baidu.com/s/1pJ7FPXp 老方块Oracle培训全套课程:http://pan.baidu.com/s/1gdkpHxL Mysql培训课程:http://pan.baidu.com/s/1c0vliMW Oracle数据库性能优化实务课程视频+源码

在oracle linux6.5 (64bit)下搭建oracle11g r2 rac的注意事项

1,各个节点的名称(主机名)要设置好. 2,推荐用于私有通信的网卡采用双网卡绑定,各个节点的网卡名称要对应一致. 3,公共ip.虚拟ip和scan ip必须在同一个网段,私有ip在另一个网段,virtual ip要在grid安装后才能ping通. 4,内存大小:当内存为2.5GB-16GB时,Swap需要大于等于系统内存:当内存大于16GB时,Swap等于16GB即可. 5,在Oracle Linux 6下安装Oracle 11gR2之前,需要做一些检查,而Pre-install 包(在orac

Oracle中泄露“天机”的TNS

原创作者:安华金和 思成 数据库的安全是长期存在的问题.在目前大量的数据泄露事件以及漏洞面前,大家看到的大都是SQl注入.越权操作.缓冲区溢出等这些具体漏洞.往往却忽视了造成这些问题的前提,黑客想要入侵数据库一定会尝试获取数据库ip.端口和数据库版本号.没有ip和端口黑客对数据库的攻击将无从下手,也就无法对数据库发动真正有效的进攻.所以防止数据库ip .端口和版本号的泄露是防止黑客入侵数据库的第一道防线. 数据库版本号的泄露途径 要想防止黑客盗取数据库版本信息.首先就要弄清黑客是从哪些渠道获取数