我们常常听说的的攻击大部分来源于DDos/CC/XSS跨站攻击,这些攻击都属于前端流量攻击,所以目前大部分的信息安全人员都比较关注前端安全,例如各种防火墙和WAF防火墙设备等。

殊不知数据库安全也同样面临内忧外患的局势,一方面大量的网络黑客不断尝试新型漏洞使用sql注入攻击进行数据库攻击。

Oracle AVDF数据库审计与防火墙最佳实践_Java

图1:尝试使用sql注入漏洞查询数据库数据

另一方面内部人员也可以随意访问如何数据甚至拿走数据且无法审计,甚至使用盗版软件导致数据库被恶意勒索软件劫持。

Oracle AVDF数据库审计与防火墙最佳实践_Java_02

图2:虚拟机测试模拟数据库中毒

而且这些基于数据库的攻击变种越来越多,导致数据库管理员防不胜防。如何能够实现对数据库进行不可篡改的审计,而且能够根据指定条件进行预警,避免数据库出现灾难,我们推荐使用Oracle AVDF数据库审计与防火墙软件。

Oracle Audit Vault and Database Firewall,简称Oracle AVDF,是Oracle在安全方面的一款重磅产品,他可以工作在DAM(Database Activity Monitoring)旁路模式、DPE模式(Database Policy Enforcement)及代理模式。

通过Oracle AVDF让管理员了解所有会话对数据库的操作细节,“谁(Who)在什么时间(When)从哪里 (Where)用什么方法(How)对数据库做了什么事情(What)”的问题,并且Oracle AVDF防火墙内部使用的Oracle数据库存储审计功能默认开启Database Vault,sysdba用户都无法修改审计结果记录,避免审计结果被篡改。

Oracle AVDF 部署方式:

  • 旁路监听模式(DAM):以旁路形式联接与数据库服务器相连的网络交换机,实现数据库的实时安全审计和事后追踪。

  • 串联模式(DPE):安装在应用服务器与数据库服务器的网络链路之间,实现对数据库的访问监测和高危敏感操作的有效阻止,串联模式可以实现:拦截可疑操作,拦截SQL注入/拦截非授权IP的操作,拦击非办公时间的操作/拦截危害操作/拦截对敏感数据的操作。

以上两个部署模式中,如果您的数据库并发比较大,我们建议您使用DAM旁路部署模式,因为这个模式在对数据库性能没有任何影响,并且我们通过设置合理的预警规则后能对数据库安全问题迅速响应,事后也可以进行审计;如果您的数据库数据库并发较小,但是对安全十分注重,我们建议您部署DPE串联模式,该模式会使得所有发往数据库的请求都通过Oracle AVDF数据库防火墙进行审计,审计不通过的会被拦截,避免安全问题。

除了支持本地部署之外,AVDF还支持混合云部署:

Oracle AVDF数据库审计与防火墙最佳实践_Java_03

图3:混合云部署模式

通过Oracle AVDF,我们整理了部分使用场景供参考:


场景1:数据库基表监控

数据库基表存储了数据库最核心的数据字典,如果数据字典被破坏或损坏轻则数据库数据损坏无法启动,重则可能数据即使能通过数据挖掘软件(如DUL)恢复出来,但是无法对应字段名,恢复会变得非常痛苦。我们可以在OracleAVDF中对关键基表进行监控,例如我们对tab$和obj$表进行监控并设置告警触发条件,当出现恶意sql时,会触发告警,如图:

Oracle AVDF数据库审计与防火墙最佳实践_Java_04

图4:设置监控对象

 

Oracle AVDF数据库审计与防火墙最佳实践_Java_05

图5:设置预警对象

配置规则后,当我们使用被注入的PL SQL工具登陆数据库后,在AVDF的控制台我们可以看到告警:

Oracle AVDF数据库审计与防火墙最佳实践_Java_06

图6:查看预警

并且在数据库的详细情况中能抓取到注入的sql存储过程内容如下:

Oracle AVDF数据库审计与防火墙最佳实践_Java_07

图7:查看预警sql

场景2:数据库非法登陆尝试

    在正常业务过程中不会出现大量的登陆错误重试,所以我们可以通过配置规则当尝试登陆数据库密码错误超过3次以上,我们进行预警,避免内部有人恶意破解数据库密码获取数据。

Oracle AVDF数据库审计与防火墙最佳实践_Java_08

图8:数据库非法登陆尝试

场景3:无效sql告警

  我们知道正常情况下一个生产环境的数据库下不会有无效的SQL语句产生,一般时人为书写错误或因为想使用sql拼接方式进行sql注入攻击造成,所以我们可以通过设置规则当语法错误出现时同时又sql注入可能是则触发预警。           

Oracle AVDF数据库审计与防火墙最佳实践_Java_09


图9:无效sql尝试

场景4:破坏数据

         在生产环境中,我们的业务表一般很少会发生delete不加where条件以及truncate表或drop表的情况,所以当出现这些情况时,我们也可以产生预警,避免有人恶意破坏数据或无意识的破坏数据,因为即使数据可以通过闪回或RMAN备份恢复方式,但一旦归档过期被删除后可能数据再也无法找回。

Oracle AVDF数据库审计与防火墙最佳实践_Java_10

图10:破坏数据

场景5:数据库使用人员行为分析和跟踪

我们可以通过Oracle AVDF掌握数据库所有登陆人员的所有操作,包括在什么事件,使用何种方式,使用什么工具,使用哪台机器登陆,对数据库使用了那些SQL操作。并且可以根据各种条件进行过滤,包括IP地址,机器名,数据库对象等进行过滤,找到我们想要的审计数据。

Oracle AVDF数据库审计与防火墙最佳实践_Java_11

图11:数据库人员行为分析

  限于篇幅,我们仅仅介绍一部分Oracle AVDF的使用场景和功能。此外,Oracle AVDF还包含丰富的报表格式,满足企业对信息安全报表的要求。


Oracle AVDF最佳实践

Oracle AVDF在使用过程中会抓取非常多的性能数据写入到AVDF自带的Oracle数据库中,所以为了获得更好的数据库防火墙使用体验,我们建议您:

1) 部署在使用较好性能的磁盘上,例如IOPS较高的磁盘阵列或者使用基于PCIE的固态硬盘,保证IOPS与IO带宽的充足

2) 根据Oracle MOS文章:Oracle Linux: Shell Script to Calculate ValuesRecommended Linux HugePage / HugeTLB Configuration (文档ID 401749.1)来配置正确的HugePage,避免内存争用

3) 关闭数据库中的auto space advisor和sql tuning advisor等任务

4) 根据服务器配置设置合理的sga&pga&shared pool属性

5) 开启AVDF所在服务器的异步IO

6) 关闭undo自动调整参数_undo_autotune参数

7) 通过10949事件关闭直接路径读,减少对IO的占用

8) 根据cpu数量适当设置parallel_max_server参数,避免单个sql消耗过多资源造成整理性能下降

更多信息请参考Oracle官方网站:

http://www.oracle.com/technetwork/database/database-technologies/audit-vault-and-database-firewall/overview/overview-1877404.html

 

编辑:萧宇