Oracle数据库系统安全加固
本加固文档是适用于Oracle 11g数据库。明确了Oracle数据库安全配置方面的基本要求。
一.账号
1.1 为不同的管理员分配不同的账号
操作目的 |
应按照用户分配账号,避免不同用户间共享账号,提高安全性。 |
检查方法 |
>select * from all_users; >select * from dba_users; |
加固方法 |
>create user <用户名> identified by <密码>; //创建用户密码 >grant <权限> to <用户名>; //根据需要,分配权限 |
是否实施 |
|
备注 |
需要与管理员确认此项操作不会影响到业务系统的登录 |
1.2 删除或锁定无效账号
操作目的 |
减少系统无用账号,降低风险 |
检查方法 |
> select username,profile from dba_users where account_status='OPEN'; |
加固方法 |
>alter user username lock; //锁定用户 >drop user username cascade; //删除用户 删除默认的范例数据库账号scott等 |
记录 |
|
备注 |
可能影响到业务系统的登录,需要与管理员确认此项操作 |
1.3 限制超级管理员远程登录
操作目的 |
限制具备数据库超级管理员(SYSDBA)权限的用户远程登录 |
检查方法 |
在$ORACLE_HOME/network/admin下查看spfile,sqlnet.ora内容 |
加固方法 |
修改sqlnet.ora文件,添加或修改为:SQLNET.AUTHENTICATION_SERVICES=(NONE) |
记录 |
|
备注 |
可能影响到业务系统的登录,需要与管理员确认此项操作 |
1.4 权限最小化
操作目的 |
在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限 |
检查方法 |
>select * from user_sys_privs; //用户拥有的系统权限 >select * from user_role_privs; //用户拥有的角色 >select * from user_tab_privs; //用户拥有的对象权限 |
加固方法 |
>grant 权限 to username; //赋予权限 >revoke 权限 from username; //收回权限 |
记录 |
|
备注 |
可能影响之前用户的正常使用,需于管理员确认权限分配情况 |
1.5 使用数据库角色来管理对象的权限
操作目的 |
使用数据库角色(ROLE)来管理对象的权限 |
检查方法 |
>select * from dba_role_privs; //数据库中所拥有的所有角色 >select * from user_role_privs; //用户拥有的角色 |
加固方法 |
创建并修改角色: >create role <角色>; //创建角色,不指定密码 >create role <角色> identified by <密码>; //创建角色,指定密码 >alter role <角色> identified by <密码>; //修改角色 >Grant select on Table_name to <角色>; //给角色授予权限 >Grant select on Table_name to <角色>; //把角色赋予用户(授予角色不是实时的) 启用角色: //角色不能立即起作用,需断开并重新连接 >set role <角色> identified by <密码>; //有密码的角色 >set role <角色>; //无密码的角色 |
记录 |
|
备注 |
1.6 数据字典保护
操作目的 |
启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表 |
检查方法 |
>show parameter O7_DICTIONARY_ACCESSIBILITY; |
加固方法 |
>alter system set O7_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile; //修改后以普通用户登陆到数据库,不能查看X$开头的表 |
记录 |
|
备注 |
1.7 检查DBA组用户
操作目的 |
启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表 |
检查方法 |
#cat /etc/passwd //查看是否有其他用户在DBA组 |
加固方法 |
#userdel <用户名> //删除用户 #passwd -l <用户名> //锁定不必要的用户 #passwd -u <用户名> //解锁不必要的用户 |
记录 |
|
备注 |
二.口令
2.1 缺省密码长度复杂度限制
操作目的 |
对于采用静态口令进行认证的数据库,口令长度至少6位 |
检查方法 |
>select profile from dba_users where username='<用户名>'; //查看用户属于的profile文件 >select resource_name, limit from dba_profiles where profile = 'PROF_TEST' and resource_type = 'PASSWORD'; //查看用户的profile文件 |
加固方法 |
设置resource_limit: >show parameter resource_limit; >alter system set resource_limit=true; //当为true时profile文件生效 创建profile文件: >create profile prof_user limit; //prof_user为profile文件名 创建表passwd_changed: >create table passwd_changed 2 ( 3 user_name varchar2(20) , 4 old_passwd varchar2(100) , 5 new_passwd varchar2(100) 6 ) 7 ; Table created. 创建实现密码自定义规则的函数my_password_verify: //举例规则:只设置了密码长度不能小于6位,但6位不能全为数字。其他项未设置 >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'); //如果密码长度小于6,返回-20001错误 5 END IF; 6 INSERT INTO passwd_changed VALUES(username,old_password,password); 7 RETURN(TRUE); 8 END; 9 / Function created. 创建或修改profile实施自定义密码验证规则: >create profile TEST_PROFILE limit password_verify_function MY_PASSWORD_VERIFY; Profile created. 将需要做密码策略的用户关联到profile文件: >alter <用户> user_name profile default; |
记录 |
|
备注 |
2.2 缺省密码生存周期限制
操作目的 |
对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天,减少口令安全隐患 |
检查方法 |
>select profile from dba_users where username='<用户名>'; //查看用户属于的profile文件 >select resource_name, limit from dba_profiles where profile = 'PROF_TEST' and resource_type = 'PASSWORD'; //查看用户的profile文件 |
加固方法 |
>ALTER PROFILE prof_user LIMIT PASSWORD_LIFE_TIME 90 PASSWORD_GRACE_TIME 7; //帐户口令的生存期不长于90天,宽限期7天 |
记录 |
|
备注 |
2.3 密码重试限制
操作目的 |
对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过5次,锁定该用户使用的账号 |
检查方法 |
>select profile from dba_users where username='<用户名>'; //查看用户属于的profile文件 >select resource_name, limit from dba_profiles where profile = 'PROF_TEST' and resource_type = 'PASSWORD'; //查看用户的profile文件 |
加固方法 |
>ALTER PROFILE prof_user LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1/24; //连续5次登录失败锁定,1/24天也就是1小时后自动解锁 |
记录 |
|
备注 |
2.4 修改默认密码
操作目的 |
更改数据库默认帐号的密码 |
检查方法 |
>select profile from dba_users where username='<用户名>'; //查看用户属于的profile文件 >select resource_name, limit from dba_profiles where profile = 'PROF_TEST' and resource_type = 'PASSWORD'; //查看用户的profile文件 |
加固方法 |
> ALTER USER <用户> IDENTIFIED BY <密码>; |
记录 |
|
备注 |
三.日志配置
3.1 启用日志记录功能
操作目的 |
数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP地址 |
检查方法 |
>show parameter dump |
加固方法 |
建表login_log,用来记录登入登出信息: >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_add varchar2(20), //ip地址 run_program varchar2(20) //以何程序登录 ); 记录登入信息的触发器: >create or replace trigger login_on_info afer logon on database BEGIN insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_add,run_program) select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('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; |
记录 |
|
备注 |
触发器与AUDIT会有相应资源开销,请检查系统资源是否充足。特别是RAC环境,资源消耗较大。 |
3.2 数据库审计策略
操作目的 |
根据业务要求制定数据库审计策略 |
检查方法 |
>set linesize 200 >show parameter audit 查看审计策略: 查看审计日志: |
加固方法 |
开启审计: |
记录 |
|
备注 |
AUDIT会有相应资源开销,请检查系统资源是否充足。 |
四.通信协议
4.1 信任IP连接监听器
操作目的 |
设置只有信任的IP地址才能通过监听器访问数据库 |
检查方法 |
#cat $ORACLE_HOME/network/admin/sqlnet.ora |
加固方法 |
#vi $ORACLE_HOME/network/admin/sqlnet.ora //添加以下部分 |
记录 |
|
备注 |
五.其他要求
5.1 连接超时限制
操作目的 |
设置数据库连接超时,数据库将自动断开超过10分钟的空闲远程连接 |
检查方法 |
#cat $ORACLE_HOME/network/admin/sqlnet.ora |
加固方法 |
#vi $ORACLE_HOME/network/admin/sqlnet.ora |
记录 |
|
备注 |
Oracle数据库系统安全加固相关推荐
- 清晰版 构建最高可用oracle数据库系统.pdf,构建最高可用Oracle数据库系统
????在国内数据库市场,Oracle数据库是*的霸主.企业对数据库系统的稳定性和高可用性的要求越来越高,因此大部分企业选择OracleRAC作为核心数据库.如今,OracleRAC的应用越来越广泛, ...
- 《高并发Oracle数据库系统的架构与设计》一1.4 本章小结
本节书摘来自华章出版社<高并发Oracle数据库系统的架构与设计>一书中的第1章,第1.4节,作者 侯松,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.4 ...
- Oracle数据库系统工程师培训
我这里有套课程想和大家分享,需要的朋友可以加我qq和我联系.QQ2059055336. 一.本课程是怎么样的一门课程 1.1.课程的背景 该课程是Oracle数据库系统工程师培训课程 Oracl ...
- oracle数据库系统中启动数据库第一步,Oracle数据库基础题库【含答案】
一. 判断题,正确请写写\,错误请写写\, 1.oracle数据库系统中,启动数据库的第一步是启动一个数据库实例.( T )2.Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客 ...
- oracle数据库系统电子版,Oracle数据库系统原理(第2版)
Oracle数据库系统原理(第2版)是由作者李爱武所编著的一本书.通过本书,讲述了Oracle数据库的基本理论,以及系统知识,让你有更加深层次的理解. 简介: 本书包括数据库基本理论以及Oracle数 ...
- 《高并发Oracle数据库系统的架构与设计》一2.4 索引分裂
本节书摘来自华章出版社<高并发Oracle数据库系统的架构与设计>一书中的第2章,第2.4节,作者 侯松,更多章节内容可以访问云栖社区"华章计算机"公众号查看 2.4 ...
- 基于oracle数据库系统下的内部审计管理信息系统研发
基于oracle数据库系统下的内部审计管理信息系统研发 ■ 陈茸 聂崇峡 廖忠友/重庆大学审计处 摘 要:随着审计信息化概念的提出和实际应用,充分利用信息技术加速建立完善内部审计管理系统,全面提升内部 ...
- oracle数据库系统学习,Oracle数据库学习第二天
1.伪表,伪列 1.1.伪表dual 概念: 就是一个不真实存在的虚拟表.伪表的作用就是用来构造一个符合sql规则的select语句.简单来说,伪表就是为让select语句不出现错误. 应用场景 用来 ...
- oracle数据库系统ppt,oracle数据库入门(培训课件).ppt
ORACLE数据库介绍- 常用工具-SQL LOADER 在DOS窗口下使用SQL*Loader命令实现数据的输入 C:\>sqlldr userid=system/manager contro ...
最新文章
- SPRING3.X JSON 406 和 中文乱码问题
- hc05与单片机连接图_单片机科普:单片机的IO口不够用了怎么办?如何扩展单片机的IO口...
- algorithm头文件下的常用函数
- 整理:C++中sprintf()函数的使用详解
- extjs 文件加载、解析流程
- Android简单封装类似JQuery异步请求
- 从背包问题优化详解动态规划思想
- 车辆动力性经济性 matlab计算
- java for android的书_JavaForAndroid07
- smartphone 创建快捷方式 shorcut(1)
- 炮灰模型:对女生选择追求者的数学模型的建立-转
- 我的创作纪念日 | 软件测试成长之路
- ngix请求转发配置
- 算法 思维导图(一)
- 使用layer 弹出对话框 子父页面相互参数传递 父页面获取子页面参数实例
- java 重量单位换算_JAVA中数据存储方式以及单位转换
- SQL语法基础之updata
- 【数字水印】基于matlab DFT数字水印嵌入提取攻击【含Matlab源码 2320期】
- 排版侠html怎么复制,排版侠微信编辑器使用方法教程
- 解决NVIDIA GeForce系列显卡NVENC并发Session数目限制问题
热门文章
- 计算机房等电位接地规范,计算机机房的等电位接地箱有啥作用啊
- 团队奖惩制度也未必没有活力
- CAD对象分解命令怎么用?CAD对象分解命令使用技巧
- 怎么根据索引名查找表名
- 电工之戴维宁定理的一道题引发的思考
- 开启灯光就是近光吗_示廓灯和近光灯的区别 这两种灯光你会使用吗
- 国内6大品牌 企业邮箱分析
- linux升级软件命令 yum,Linux中升级更新命令yum upgrade和yum update的区别
- 19_Android中图片处理原理篇,关于人脸识别站点,图片载入到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写...
- 对计算机知识的兴趣,大学新生计算机学习基础与兴趣的调查分析