基于电力行业信息系统等级保护的Oracle数据库安全加固实践
2015-04-04杨大哲孙瑞浩
杨大哲,孙瑞浩
(国网山西省电力公司电力科学研究院,山西 太原 030001)
基于电力行业信息系统等级保护的Oracle数据库安全加固实践
杨大哲,孙瑞浩
(国网山西省电力公司电力科学研究院,山西 太原 030001)
针对O r a c l e数据库管理系统,按照信息安全等级保护要求,从身份鉴别、访问控制、入侵防范、安全审计等方面,利用数据库自身的安全机制,进行了具体加固实践,加强数据的防泄密能力与防篡改能力,提高电力信息系统的安全防护水平。
Or a c l e数据库;安全加固;信息系统等级保护
0 引言
Oracle数据库作为主流的大中型数据库管理软件系统,在电力行业的应用系统中得到广泛应用。据统计,在电力公司的应用系统中,85%以上的数据库管理软件均采用Oracle数据库管理软件。
数据库管理系统作为信息系统的核心部件,存储了应用系统的全部数据和信息。数据库的安全性与保密性对于整个信息系统安全是至关重要的。《国家电网公司SG186工程信息系统安全等级保护验收标准》对数据库安全从身份鉴别、访问控制、安全审计、剩余信息保护、入侵防范等五个方面提出了明确要求。
Oracle数据库作为大型关系型数据库,自身具有强大的安全机制。本文主要从三级系统安全防护要求出发,利用Oracle数据库管理软件自身的功能和基本操作,完成数据库的安全加固,使其能够满足等级保护相关技术要求,提高信息系统整体的安全性。
1 等级保护要求及安全加固基本流程
根据信息系统的安全保护等级,国家电网公司SG186工程中多的信息系统要求具有相应等级。第二级信息系统应至少按照第二级安全技术指标进行安全加固,第三级信息系统应至少按照第三级安全技术进行安全加固。其中数据库方面涉及身份鉴别、访问控制等5类20个指标,具体包括用户标识鉴别、口令复杂度、口令策略、登陆限制、用户唯一性、多种鉴别技术、访问限制、默认账户管理、用户账户管理、最小权限原则、审计范围、审计内容、审计记录属性、审计数据安全、审计分析、审计可用性、关闭不必要服务、补丁更新、废弃数据空间的释放、废弃用户空间的释放等。
信息系统安全加固工作具体实施流程分为五个阶段:启动准备阶段、方案制定阶段、数据备份阶段、现场实施阶段、验证总结阶段。
2 安全加固基本操作
2.1 身份标识与鉴别
身份标识是用户身份的象征,是进行数据库审计的基础。在进行Oracle数据库加固时,可使用select username,account_status from dba_users检查数据库中所有处于开放状态的用户,对无关或测试的账号及时删除或锁定;在数据库维护中,应按照用户所需的权限授予不同的角色,同时做到账号专用,禁止共用账号。
身份鉴别是指验证用户提交的身份鉴别信息,核实用户的身份。数据库登陆、数据操作等均需要首先进行身份鉴别,确保只有符合要求的账户才能进行。
Oracle数据库可通过设置每个用户的概要文件,制定用户密码策略设置,防止口令被暴力破解,设置口令审核函数,增强口令的健壮性,从而加强数据库用户口令的安全性。具体设置方法如下。
CREATEPROFILEmyprofile
LIMIT FAILED_LOGIN_ATTEMPTS 3---(单位次)
PASSWORD_LIFE_TIME 90---(单位天)
PASSWORD_REUSE_TIME 90---(单位天)
PASSWORD_REUSE_MAX 3---(单位次)
PASSWORD_VERIFY_FUNCTIONverify_ function;
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 90;
用下面的命令把新创建的profile赋给制定的用户ALTERUSER user1 PROFILEmyprofile;
对于用户口令,一般要求口令长度至少为8位,由字母、数字、特殊字符3种字符组成。可通过设置审核函数,并将审核函数赋予用户所属概要文件,从而限制用户在设置、修改口令时都必须符合口令复杂度要求。下面是一个典型的口令审核函数。该函数限制用户口令不能与用户名相同,不能为常见易猜测的密码,口令长度不能少于8位,并且必须包含大小写字母、1个数字、1个特殊字符中的3种。并且限制用户在修改口令时,至少有3个不同于上次的口令字符出现。函数具体逻辑如下。
IF NLS_LOWER(password)=NLS_LOWER (username)THEN
raise_application_error(-20001,'Password same as or similar to user');
END IF;
IF length(password)<8 THEN
raise_application_error(-10001,'口令长度不能少于8位');
END IF;
IF NLS_LOWER (password)IN ('system', 'database','123456','111111','password','oracle', 'abcd')THEN
raise_application_error(-10001,'口令过于简单');
END IF;
isdigit:=FALSE;
m:=length(password);
FOR i IN 1..10 LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1)=substr(digitarray,i,1) THEN
isdigit:=TRUE;
GOTO findchar;
END IF;
END LOOP;
END LOOP;
IF isdigit=FALSETHEN
raise_application_error(-10002,'口令至少含有一个数字、字符和特殊符号');
END IF;
2.2 访问控制
访问控制就是按用户身份及其所归属的对象组来限制用户对数据库资源的访问,主要作用为保证合法主体访问所需资源,防止非法主体访问受保护的资源及合法的用户非授权的访问受保护的资源。Oracle数据库作为大型关系数据库,在数据库监听、远程登录、数据字典访问、可访问IP、连接超时、默认端口方面进行加固,以提高数据库的访问控制能力。
数据库超级管理员具有数据库的最高权限,应限制具有SYSDBA权限的用户远程登录,具体可修改initSid.ora令REMOTE_LOGIN_PASSWORDFILE=’NONE’ 。
在数据库用户权限配置过程中,应按照用户所必需的权限,根据最小权限原则,赋予用户权限。一般情况下不应授予普通用户DBA角色。
Oracle数据字典是用来描述数据库数据的组织方式,由表和视图组成。应限制普通用户访问数据字 典 , 可 通 过 修 改 initSid.ora 令O7_DICTIONARY_ACCESSIBILITY=FALSE,启用数据字典保护,确保只有SYSDBA用户才能访问数据字典基础表,从而提高数据字典的安全性。
Oracle监听负责接受客户端与实例沟通的主要组件,默认是没有密码,能访问的用户可随意远程关闭监听器。为更好地保障监听器的安全,应设置LISTENER的启动关闭密码,防止用户的未授权操作,具体设置如下。
$lsnrctl
LSNRCTL>change_password
Old password:--旧口令
New password:--新口令
Reenter new password:--再次输入新口令
LSNRCTL>save_config--保存配置
Oracle 的 网 络 配 置 文 件 为$ORACLE_HOME/network/admin/ 目 录 下 的tnsnames.ora、sqlnet.ora、listener.ora。其中 sqlnet. ora主要用于确定解析方式,为提高访问控制能力,在 sqlnet.ora文 件 中 添 加 以 下 配 置 :tcp. validnode_checking=yes tcp.invited_nodes=(192. 168.x.x,192.168.x.x),这样就只有信任的IP地址才能通过监听器访问数据库;设置参数SQLNET. EXPIRE_TIME=10,数据库定期检测客户端是否活动,当超过10min未活动时,数据库自动断开连接。
Oracle默认的端口是1521,黑客通常对该端口进行监听,以确定该服务器是否存在Oracle数据库可通过在tnsnames.ora,listener.ora文件中增加新的监听器,使用其他端口(如1522),避免黑客发现。具体设置如下:listener1=(DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=hostname)(PORT=1522))。
2.3 安全审计
Oracle数据库审计总体上可分为标准审计和细粒度审计。在Oracle10g中标准审计可分为用户级审计和系统级审计。用户级审计是任何用户可设置的审计,主要是用户针对自建创建的表或视图进行的审计,记录所有用户对这些表或视图的成功和不成功的访问,系统级审计由DBA用户设置,用以监测成功或失败的登陆请求、检测GRANT和REVOKE的操作及其他数据库级权限的操作。通过修改初始化参数文件(initsid.ora)alter system set audit_trail=db scope=both,重启数据库,设置需要审计的信息,即开启Oracle数据库标准审计。细粒度审计能够记录SCN号和行级的更改,主要利用数据库中DBMS_FGA包完成配置和管理工作。
对于用户登陆行为的审计,主要记录用户登录的账号、登录的成功与失败、登录时间以及登录时使用的IP地址。对于用户操作行为的审计,应对新建、删除账号,变更权限、变更密码、读取和修改数据库配置进行记录,同时还应记录进行操作的用户账号、具体时间、内容以及结果。
2.4 入侵防范
数据库的入侵防范主要为及时修复系统漏洞与服务,防止黑客利用漏洞进行入侵。具体操作包括关闭不必要的服务,及时更新系统补丁。对于oracle早期版本,其中有很多不必要的服务,如OracleMTSRecoveryService、 OracleServiceOEMREP、OracleClientCache、 OraclePagingServer、OracleSNMPPeerMasterAgent、OracleSNMPPeerEncapsulator。上述服务应及时关闭。Oracle公司会根据系统漏洞发布系统补丁,数据库管理员应及时更新数据库至最新版本。
3 结束语
Oracle数据库作为大型数据库,安全防护更多地在于数据库本身的安全水平。通过实施数据库系统自身的安全加固,在身份鉴别、访问控制、安全审计、入侵防范等方面进行全面全防护,可大幅提升数据库系统的安全防护能力,加强应用系统数据的保密性与完整性,从而提高应用系统安全水平。
充分利用Oracle本身自带了安全机制,并加以一定的外部防御设备(防火墙、入侵防御设备等),数据库系统能够基本满足三级信息系统等级保护测评的相关要求,可有效提升Oracle数据库管理系统的整体防护水平,保障重要数据的安全。
Practice of Classified-protection-based Oracle Database Security Reinforcement in Electric Power Information Systems
YANG Dazhe,SUN Ruihao
(State Grid Shanxi Electric Power Research Institute,Taiyuan,Shanxi 030001,China)
In view of Oracle databasemanagement system,and according to the requirements on information security classified protection,this studymake use of the database's own securitymechanism to have completed the security reinforcementpractice from the aspects of authentication,access control,intrusion prevention and security audits,after which,the capabilities of data leak prevention and anti-tampering are strengthened,and the security levelofelectric power information systems is improved.
Oracle database;security reinforcement;classified protection of information system
TP309
A
1671-0320(2015)05-0038-03
2015-06-22,
2015-07-10
杨大哲(1983),男,河南南阳人,2009年毕业于山东大学热能工程专业,硕士,工程师,从事信息安全工作;
孙瑞浩(1987),男,山西运城人,2012年毕业于马来西亚理工大学电力系统机器自动化专业,硕士,工程师,从事继电保护工作。