ORACLE安全加固篇
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
- 修改oracle用户的密码、有限期等操作时,需要注意业务应用使用的oracle密码应和修改后保持一致,应先停止应用,避免失败次数过多被锁定,修改密码后再同步到应用配置中,最后恢复应用验证即可。
- 开启oracle加密传输,客户端和业务应用侧也应该相应开启配置,避免出现数据传输失败问题。
- 设置日志记录表时,可根据需求增添字段,例如机器名(machine)、主机名(hostname)、程序(program)等。
- 修改sqlnet.ora文件,保存后无需重启oracle服务只需要重启监听服务"lsnrctl reload"即可生效;但是修改oracle参数时:scope=spfile时需要重启oracle服务才能生效。
ORACLE安全加固篇相关推荐
- oracle静默安装集群,静默安装Oracle数据库10g篇
静默安装Oracle数据库10g篇 =========================================================================== 以下是在Li ...
- oracle 修改用户密码_干货!数据库安全之Oracle数据库安全加固
前言 最近打算整理一下资料,写几篇关于数据库安全的文章.特此记录,方便查阅. 操作流程 帐号权限加固 1.限制应用用户在数据库中的权限,尽量保证最小化避免授予了 DBA 权限 1.查看权限 SQL&g ...
- Oracle总结第二篇【视图、索引、事务、用户权限、批量操作】
前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了-那么本篇主要总结关于Oralce视图.序列.事务的一些内容- 在数据库中,我们可以把各种的SQL语句分为四大类- (1 ...
- oracle数据库Sys密码策略,Oracle数据库加固之密码策略解析
我们都知道密码策略加固的参数一般包括密码长度.复杂度检测.最大最小使用时间.过期警报时间.最大登录失败次数以及锁定时间等设置. Oracle默认提供了一个密码策略的sql执行文件utlpwdmg.sq ...
- RHEL 5.4 安装Oracle 11gR2, 安装篇1...
安装之前要对RH 5.4做一些系统准备,请参考准备篇: http://nvd11.blog.163.com/blog/static/2000183122012711057110/ 步骤1: copy ...
- RHEL 5.4 安装Oracle 11gR2, 准备篇...
所谓Rhel 就是Redhat enterprise Linux, Redhat 的服务器操作系统. 我本来想将Oracle 装在opensuse 上, 可是由于缺少指定版本的包,失败了. 还是选 ...
- oracle什么是全局锁,深入浅出oracle锁---原理篇
这几天项目中遇到了数据库锁的问题,还在解决中,找到了一篇原理性的文章,分享一下. 在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个 ...
- java搭配oracle,Java联接Oracle(高级篇)
Java连接Oracle(高级篇) 在项目工程目录下新建一个config文件夹,在config文件夹里创建一个database.properties文件,配置相关Oracle数据库的driver.ur ...
- Oracle整理第一篇
Oracle发展历史 1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laborato ...
最新文章
- 剪切粘贴时总是上次的内容_macOS系统上面如何实现Windows上的“剪切”功能
- 物联网智能硬件设备身份验证机制
- 一:(1.4)了解MVC之区域
- BAT笔试试题常见试题总结含答案(持续更新。。。)
- amd一键超频怎么用_头条信息流“一键起量”工具怎么用?经验分享
- MySQL完全备份与恢复
- 程序员的进阶课-架构师之路(13)-B-树
- keepalived 安装及配置VIP漂移
- 实例解说 fdisk 使用方法
- 步道乐跑怎么刷公里_车子一年跑不到5000公里,怎么保养比较好?这些方法最省钱...
- 【DP】LeetCode 53. Maximum Subarray
- Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭
- wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
- 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
- 爆文标题生成器,10W+自媒体人的福音
- Codesys和基恩士扫码枪Ethernet/IP通信
- 微信公共平台开发(一):服务器配置
- GT-P3110如何root
- 2.shel脚本l知识点学习一
- 【Novel AI】基于Koishi的QQ群配置AI绘图机器人方法
热门文章
- 【python Turtle源码】教你如何画一只迎福虎将~
- [游戏代码]求生之路插件:人物获得武器
- 计算机基础知识教程excel函数计算,计算机基础知识:Excel中的函数操作(四)...
- bttray.exe
- 微信小程序原生开发功能合集一:微信小程序开发介绍
- Dism解决win 10访问服务器共享问题,共享需要过时的SMB1协议,安装时错误代码:0x800736B3
- CAD中把样条曲线改成多线段(转载请删除括号里的内容)
- 超宽带uwb精准定位,厘米级室内定位技术,实时高精度方案应用
- Intriguing properties of neural networks
- mysql rpc_启用mysql作用