您的位置:首页 > 数据库

某银行用户安华金和二代数据库安全审计产品测试体验

2016-01-26 11:14 507 查看
某银行信用卡中心运维主管 王晶晶

阅读摘要:

某银行信用卡中心运维人员,加入到安华金和二代数据库安全审计产品测试评估当中,将产品体验分享大家。

测试背景:

在银行的数据库系统中,时常面临因账户和权限设置不当或账户被滥用而带来的风险。如果数据库管理员利用工作之便,窃取、篡改重要业务数据,或者管理账号被窃取、导致数据库被恶意损毁,将对企业带来难以挽回的重大损失。而数据库自身审计日志存在局限性,难以提供便捷的审计信息查询方式和报表,所以很难用于安全事件定位分析,以及事后追查取证。本次针对安华金和数据库监控与审计系统(DBAudit)产品进行测试体验,发现该产品能够实时记录网络上的数据库活动,对数据库遭受到的风险行为进行告警。该系统通过对用户访问数据库行为的记录、分析和汇报,帮助用户事后生成合规报告、事故追根溯源,同时加强数据库内外部网络行为记录,提高数据资产安全。

测试结果:

经过详细测试,其主要优势包括:一、全面监测数据库超级账户、临时账户等指定账户的数据库操作行为;二、实时监测数据库操作行为,发现非法违规操作能及时告警响应;三、详细记录数据库操作信息,并提供用户、IP、客户端工具、访问时间、操作对象、SQL操作类型、成功与否、访问时长、影响行数等多种检索条件,方便事件定位分析、事后取证;四、能够以报表形式呈现用户名称,操作时间,操作类型(如修改、查询、删除),操作所涉及到相关数据(如表、视图)等信息;五、支持自定义高中低风险等级,漏洞攻击、SQL注入、黑名单语句、违反授权策略的SQL行为等审计规则和邮件、短信、日志等告警策略;六、界面友好,按照语句、会话、风险为线索对数据库审计信息进行组织和导航,并提供业务翻译能力,将复杂的SQL语句提炼为中文业务操作描述;七、能够展现数据库完整会话操作,对系统管理提供重要诊断依据;八、系统支持ORALCE、SQL SERVER、MY SQL、DB2、Sybase、Infomix等主流数据库系统。当然产品也存在一些不足:一、无法完整记录SELECT语句的返回结果集,将可能导致特定情况下的审计材料缺失;二、审计信息存在10秒左右的延迟:执行的SQL语句,并不能立即在审计系统中显现。

测试过程

1.对存在风险的操作是否能够准确记录用于审计测试用例:设置针对DW_AREA表的查询为风险操作,然后使用指定条件对该表进行查询。测试目的:查询语句能够被准确记录,客户端的用户名和IP地址等详细信息能够准确反映。测试结果:能够准确捕获风险操作语句,客户端信息包括IP、账户、执行时间等。

2.是否提供方便的检索功能和报表查询测试用例:设置针对DW_PAYMENT_INTERFACE表的查询为风险操作,然后使用指定条件对该表进行查询。测试目的:系统是否提供了方便的检索功能和报表查询功能,达到快速事后取证的目的。测试结果:能够利用账户、IP、查询条件等从多种维度对风险信息进行过滤,方便信息检索和定位。



3.对带Schema的表能否准确解析并审计测试用例:select * from mysql.db limit 10测试目的:是否准确识别出表名是db,数据库名称是mysql。测试结果:准确识别。

4.对Union中的多表能否准确解析并审计测试用例:select type from mysql.proc limit 2union allselect name from test.testunionselect db from mysql.db测试目的:是否准确识别出表是mysql.proc、test.test、mysql.db。测试结果:准确识别。

5.对Update中的多表能否能否准确解析并审计测试用例:update test a, test2 b set a.name= b.name where a.id=b.id测试目的:是否准确识别出更新表是test、test2。测试结果:准确识别。

6.对insert中的多表能否准确解析并审计测试用例a:insert into test2 select * from test测试目的:Insert语句有涉及多表时,是否准确识别出表test、test2。测试结果:准确识别。

测试用例b:insert into test2 values (6,'testname')测试目的:是否能够准确识别出插入的数据值。测试结果:语句模板中,所有整形数值记为0,所有text类型数值都记为’#’;具体参数数值可在深度追踪中呈现。

7.对join中的多表能否准确解析并审计测试用例:select * from test.test inner join test2 on test.test.id=test2.idwhere test2.name like '%yes%'测试目的:join语句有涉及多表时,是否准确识别。测试结果:准确识别。

8.对复杂查询及子查询中能否准确记录并审计测试用例:SELECT
sum(d.id)FROM
(
SELECT
a.id,
a. NAME
FROM
test a
INNER JOIN test2 b ON a.id = b.id
WHERE
a.id IN (
SELECT DISTINCT
c.id
FROM
test2 c
)
) dGROUP BY
d.idHAVING
d.id > 0测试目的:对函数、复杂查询以及子查询,是否能够准确识别。测试结果:准确识别。



9. 对复杂嵌套查询能否准确记录并审计测试用例:select
p1.*, p2.username,
p8. name as user_area,
u.username as kefu_username,
p2.qq,
p3.value
as credit_jifen,
p4.pic as credit_pic,
p5.area as add_area,
p1.account_yes / p1.account as scales,
p7. name as usetypename,
p2.realnamefrom
dw_borrow as p1left join dw_user as p2 on p1.user_id = p2.user_idleft join dw_user_cache as uca on uca.user_id = p1.user_idleft join dw_user as u on u.user_id = uca.kefu_useridleft join dw_credit as p3 on p1.user_id = p3.user_idleft join dw_credit_rank as p4 on p3.value
<= p4.point2and p3.value
>= p4.point1left join dw_userinfo as p5 on p1.user_id = p5.user_idleft join dw_linkage as p7 on p1.use = p7.idleft join dw_area as p8 on p2.province = p8.idwhere
0 = 0and p1.type = 0and (
(
(
(p1. status = 0)
or (
p1. status in (0, 0, 0, 0)
and p1.type != 0
)
)
and p1.type != 0
)
or (
p1.type = 0
and p1. status in (0, 0)
))and time_limit <= 0order byp1.verify_time desclimit 0,测试目的:复杂查询,应能够准确识别DW_LINKAGE,DW_CREDIT_RANK,DW_AREA,DW_USER,DW_BORROW,DW_USERINFO,DW_CREDIT表信息。测试结果:准确识别。

10.是否具备双向审计能力测试用例:查看执行成功和失败的语句详细信息。测试目的:实现单包返回状态分析,并能够实现对查询结果进行分析。测试结果:准确显示执行成功和失败的语句详细信息

本次测试未能涵盖的方面包括:一、无法验证高并发、高负载情况下是否存在数据丢失;二、对现有数据库的性能影响;三、审计系统自身的安全性无法验证;四、只针对Mysql数据库的运行情况进行测试;五、邮件、短信、日志等告警时效性和体验尚未验证。总之,通过部署安全审计系统将帮助企业实现:实时监控、全面记录数据库各种账户(如超级管理员、临时账户等)的数据库操作行为,及时发现各种非法、违规操作,并作告警响应处理,降低数据库安全风险;通过提供丰富的审计信息查询方式和报表,方便安全事件定位分析,事后追查取证,达到保护企业数据库资产安全的目的。

本文出自 “数据库安全” 博客,请务必保留此出处http://schina.blog.51cto.com/9734953/1738556
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: