PDF文件百度网盘下载:

链接:https://pan.baidu.com/s/1RKkZlY8Z9bke1BzPOWASfw 
提取码:s9dm

1.数据库连接超时设置

【目的】

数据库自动断开超过10分钟的空闲连接

【配置】

使用oracle用户操作
编辑$ORACLE_HOME/network/admin/sqlnet.ora文件,添加或修改以下内容:
SQLNET.EXPIRE_TIME=10

2.数据库访问源限制

【目的】

设置只有信任的IP地址才能通过监听器访问数据库

【配置】

使用oracle用户操作
编辑$ORACLE_HOME/network/admin/sqlnet.ora文件,添加或修改以下内容:
tcp.validnode_checking=yes
tcp.invited_nodes=(ip1,ip2...)
记得把数据库主机本机IP添加进去。

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

【目的】

使用Oracle提供的虚拟私有数据库(VPD)和标签安全(OLS)来保护不同用户之间的数据交叉访问

【配置】

具体设置:
略
判断命令:
select count(*) from v$vpd_policy;
结果大于等于1则说明设置成功。

4.检查是否配置日志功能/检查是否记录安全事件日志

【目的】

数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登陆时用户使用的IP地址

【配置】

创建记录表LOGON_TABLE:
create table LOGON_TABLE(
logon_user varchar2(255),
logon_ip varchar2(255),
logon_time date
);
创建触发器:
CREATE TRIGGER TRI_LOGONAFTER LOGON ON DATABASE
BEGININSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT('USERENV','SESSION_USER'),SYS_CONTEXT('USERENV','IP_ADDRESS'),SYSDATE);
END;
判断命令:
select count(*) from dba_triggers t where trim(t.triggering_event)=trim('LOGON');
结果大于等于1则说明已创建触发器。

5.检查是否设置记住历史密码次数

【目的】

用户不能重复使用5次(含5次)内已经使用过的密码

【配置】

修改用户profile配置的PASSWORD_REUSE_MAX为5
alter profile default limit PASSWORD_REUSE_MAX 5;
判断命令:
select profile,limit from dba_profiles t where t.resource_name='PASSWORD_REUSE_MAX';
查看结果是否为5 

6.检查是否存在dvsys用户dbms_macadm对象

【目的】

将数据库管理员权限和应用数据访问权限分开,来限制有DBA权限用户访问敏感数据

【配置】

判断是否存在dvsys用户:
select count(*) from dba_users t where t.username=upper('dvsys');
结果如果大于等于1则说明存在
判断是否存在dbms_macadm对象:
select count(*) from dba_objects t where t.object_name = 'DBMS_MACADM';
结果如果大于等于1则说明存在

7.检查是否启用数据字典保护

【目的】

设置只有SYSDBA用户才能访问数据字典基础表(存放数据库有关信息)

【配置】

通过sqlplus查询参数:
show parameter O7_DICTIONARY_ACCESSIBILITY;
或者通过sql查询
select value from v$parameter where name = 'O7_DICTIONARY_ACCESSIBILITY';
如果值为FALSE则说明设置成功;
否则通过以下命令在sqlplus设置:
alter system set O7_DICTIONARY_ACCESSIBILITY=false scope=both;

8.设置密码复杂度

【目的】

密码复杂度需满足长度至少8位,包含数字、大小写字母和特殊符号

【配置】

查看当前密码复杂度设置:
select profile,limit from dba_profiles where resource_name='PASSWORD_VERIFY_FUNCTION';
如果为NULL则需要配置
先创建相应规则函数Function:
SQL>@ $ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql → [verify_function|verify_function_11G]
再应用规则:
SQL>alter profile default limit password_verify_function verify_function_11G;

9.设置密码有限期

【目的】

设置账户密码的有限期不长于90天

【配置】

查看当前密码有限期:
select profile,limit from dba_profiles where resource_name='PASSWORD_GRACE_TIME';
如果为unlimited或者不为90则需要修改
alter profile default limit PASSWORD_GRACE_TIME 90;

10.设置失败登陆次数

【目的】

设置当用户连续认证失败次数超过6次(不含6次),则会设定此账号

【配置】

查看当前失败登陆次数:
select profile,limit from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS';
如果结果为unlimited或者不为6则需要修改
alter profile default limit FAILED_LOGIN_ATTEMPTS 6;

11.设置数据库默认账号密码

【目的】

修改默认账号的默认密码,避免导致安全威胁

【配置】

查看是否存在默认账号使用默认密码情况:
select count(*) from dba_users_with_defpwd;
结果如果大于等于1则说明存在
修改默认账号密码:
alter user 用户名 identified by 密码;
用户即是从dba_users_with_defpwd表中查询出来的用户名

12.数据库监听器设置密码

【目的】

当数据库监听器LISTENER启动(lsnrctl start)和关闭(lsnrctl stop)的时候需要输入密码

【配置】

RAC集群下需要使用grid用户操作,单点数据库则通过oracle用户操作:
$lsnrctl                             # 启动监听器界面
LSNRCTL>change_password              # 设置密码
Old password:                        # 输入旧密码
New password:                        # 输入新密码
Reenter new password:                # 重复一遍新密码
LSNRCTL>save_config                  # 保存配置 判断条件:$ORACLE_HOME/network/admin/listener.ora是否存在“PASSWORDS_LISTENER” 参数listener.ora 添加参数“LOCAL_OS_AUTHENTICATION_LISTENER = OFF”设置本地重启或停止监听器也需密码

13.数据库审计策略

【目的】

根据业务需求定制数据库审计策略

【配置】

提供两种方式,DB和OS
DB是把记录存储再库表aud$当中,而OS则是以文件形式保存在audit_file_dest参数指定的位置(一般是$ORACLE_BASE/admin/adump路径下)
通过设置audit_trail=db|os进行配置
通过audit进行定制相关记录策略

14.删除或锁定无效账号

【目的】

删除或者锁定无效账号,减少系统安全隐患

【配置】

查询用户:
select * from all_users;
select * from dba_users;
删除或者锁定用户:
---删除用户
drop user 用户名 cascade;
---锁定用户
alter user 用户名 lock;

15.DBA组操作系统用户数量

【目的】

限制DBA组中的操作系统用户数量,通常DBA组中只有oracle安装用户(oinstall)

【配置】

判断条件:
<1>获取dba组下的用户
grep dba /etc/group | awk -F':' '{print $4}'
<2>根据上一步获取到的用户查看对应的组是否为oinstall
grep oracle /etc/passwd | awk -F':' '{print $4}' | xargs -I {} grep {} /etc/group | awk -F':' '{print $1}'
解决:
删除用户:userdel 用户名
锁定用户:passwd -l 用户名

16.检查是否设置sql92_security字段

【目的】

当sql92_security被设置为true时,对表进行update、delete等操作时会先校验当前用户是否具有此表的select权限,没有则更新、删除操作失败

【配置】

查询sql92_security参数:
sqlplus下:show parameter sql92_security;
如果为FALSE则未进行设置
修改:
alter system set sql92_security=true scope=both;

 17.数据库设置加密传输

【目的】

使用Oracle提供的高级安全选件来加密客户端与数据库间网络数据传输

【配置】

在$ORACLE_HOME/network/admin/sqlnet.ora文件中设置sqlnet.encryption参数
SQLNET.ENCRYPTION_SERVER=required
SQLNET.ENCRYPTION_TYPES_SERVER=加密方式例如:
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = RC4_256
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED

 18.限制管理员远程登陆

【目的】

限制具有数据库超级管理员(SYSDBA)权限的用户远程登陆

【配置】

查看参数:
Sqlplus:show parameter REMOTE_LOGIN_PASSWORDFILE
查看结果是否为NONE
编辑$ORACLE_HOME/network/admin/sqlnet.ora文件:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
修改参数:
alter system set remote_login_passwordfile=none scope=both;

19.数据库权限最小化

【目的】

再数据库权限配置范围内,应根据业务需要,配置其所需要的最小权限

【配置】

查询数据库权限:
select * from user_sys_privs;
select * from user_role_privs;
select * from user_tab_privs;
修改授权或者回收权限:
---授权
grant 权限 to 用户;
---回收权限
revoke 权限 from 用户;

20.检查是否使用数据库角色(role)来管理对象权限

【目的】

使用数据库角色来管理对象的权限

【配置】

查询角色:
select * from dba_role_privs;
select * from user_role_privs;
详细操作:
---创建角色(不带密码)
create role test;
---创建角色(带密码)
create role test identified by 密码;
---给角色授权查询权限
grant select on 表名 to test;
---把角色授权给用户
grant test to 用户;
---生效(不带密码)
set role test;
---生效(带密码)
set role test identified by 密码;
---撤销角色
revoke 角色名 from 用户;

21.检查是否对用户属性进行控制

【目的】

对用户的密码策略、资源限制等进行控制

【配置】

为每个新用户创建非默认(DEFAULT)的profile:
create profile test limit--密码失败次数FAILED_LOGIN_ATTEMPTS 6--密码有效期PASSWORD_LIFE_TIME 60PASSWORD_REUSE_TIME 60--历史密码记录PASSWORD_REUSE_MAX 5--密码复杂度策略PASSWORD_VERIFY_FUNCTION xxx函数--密码锁定PASSWORD_LOCK_TIME 1/24PASSWORD_GRACE_TIME 90;
授权用户:
alter user 用户 profile test;
判断:
select count(*) from dba_users t where t.profile not in('DEFAULT','MONITORING_PROFILE');
结果如果大于等于则说明存在新的profile文件

22.数据库认证超时

【目的】

设置数据库认证超时时间,单位:秒

【配置】

编辑$ORACLE_HOME/network/admin/sqlnet.ora文件:
sqlnet.inbound_connect_timeout=30

附录

文档适用范围:oracle10g,oracle11g

  1. 修改oracle用户的密码、有限期等操作时,需要注意业务应用使用的oracle密码应和修改后保持一致,应先停止应用,避免失败次数过多被锁定,修改密码后再同步到应用配置中,最后恢复应用验证即可。
  2. 开启oracle加密传输,客户端和业务应用侧也应该相应开启配置,避免出现数据传输失败问题。
  3. 设置日志记录表时,可根据需求增添字段,例如机器名(machine)、主机名(hostname)、程序(program)等。
  4. 修改sqlnet.ora文件,保存后无需重启oracle服务只需要重启监听服务"lsnrctl reload"即可生效;但是修改oracle参数时:scope=spfile时需要重启oracle服务才能生效。

ORACLE安全加固篇相关推荐

  1. oracle静默安装集群,静默安装Oracle数据库10g篇

    静默安装Oracle数据库10g篇 =========================================================================== 以下是在Li ...

  2. oracle 修改用户密码_干货!数据库安全之Oracle数据库安全加固

    前言 最近打算整理一下资料,写几篇关于数据库安全的文章.特此记录,方便查阅. 操作流程 帐号权限加固 1.限制应用用户在数据库中的权限,尽量保证最小化避免授予了 DBA 权限 1.查看权限 SQL&g ...

  3. Oracle总结第二篇【视图、索引、事务、用户权限、批量操作】

    前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了-那么本篇主要总结关于Oralce视图.序列.事务的一些内容- 在数据库中,我们可以把各种的SQL语句分为四大类- (1 ...

  4. oracle数据库Sys密码策略,Oracle数据库加固之密码策略解析

    我们都知道密码策略加固的参数一般包括密码长度.复杂度检测.最大最小使用时间.过期警报时间.最大登录失败次数以及锁定时间等设置. Oracle默认提供了一个密码策略的sql执行文件utlpwdmg.sq ...

  5. RHEL 5.4 安装Oracle 11gR2, 安装篇1...

    安装之前要对RH 5.4做一些系统准备,请参考准备篇: http://nvd11.blog.163.com/blog/static/2000183122012711057110/ 步骤1: copy ...

  6. RHEL 5.4 安装Oracle 11gR2, 准备篇...

    所谓Rhel  就是Redhat enterprise Linux, Redhat 的服务器操作系统. 我本来想将Oracle 装在opensuse 上, 可是由于缺少指定版本的包,失败了.  还是选 ...

  7. oracle什么是全局锁,深入浅出oracle锁---原理篇

    这几天项目中遇到了数据库锁的问题,还在解决中,找到了一篇原理性的文章,分享一下. 在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个 ...

  8. java搭配oracle,Java联接Oracle(高级篇)

    Java连接Oracle(高级篇) 在项目工程目录下新建一个config文件夹,在config文件夹里创建一个database.properties文件,配置相关Oracle数据库的driver.ur ...

  9. Oracle整理第一篇

    Oracle发展历史 1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laborato ...

最新文章

  1. 剪切粘贴时总是上次的内容_macOS系统上面如何实现Windows上的“剪切”功能
  2. 物联网智能硬件设备身份验证机制
  3. 一:(1.4)了解MVC之区域
  4. BAT笔试试题常见试题总结含答案(持续更新。。。)
  5. amd一键超频怎么用_头条信息流“一键起量”工具怎么用?经验分享
  6. MySQL完全备份与恢复
  7. 程序员的进阶课-架构师之路(13)-B-树
  8. keepalived 安装及配置VIP漂移
  9. 实例解说 fdisk 使用方法
  10. 步道乐跑怎么刷公里_车子一年跑不到5000公里,怎么保养比较好?这些方法最省钱...
  11. 【DP】LeetCode 53. Maximum Subarray
  12. Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭
  13. wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
  14. 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
  15. 爆文标题生成器,10W+自媒体人的福音
  16. Codesys和基恩士扫码枪Ethernet/IP通信
  17. 微信公共平台开发(一):服务器配置
  18. GT-P3110如何root
  19. 2.shel脚本l知识点学习一
  20. 【Novel AI】基于Koishi的QQ群配置AI绘图机器人方法

热门文章

  1. 【python Turtle源码】教你如何画一只迎福虎将~
  2. [游戏代码]求生之路插件:人物获得武器
  3. 计算机基础知识教程excel函数计算,计算机基础知识:Excel中的函数操作(四)...
  4. bttray.exe
  5. 微信小程序原生开发功能合集一:微信小程序开发介绍
  6. Dism解决win 10访问服务器共享问题,共享需要过时的SMB1协议,安装时错误代码:0x800736B3
  7. CAD中把样条曲线改成多线段(转载请删除括号里的内容)
  8. 超宽带uwb精准定位,厘米级室内定位技术,实时高精度方案应用
  9. Intriguing properties of neural networks
  10. mysql rpc_启用mysql作用