数据库的出厂设置和薄弱的配置让攻击者更容易攻入数据存储,让IT更难以快速检测数据泄露。尽管企业花了很多钱在IT基础设施的各个层次部署数据防御措施,但最终这些努力可能在配置不当的数据库中毁于一旦。无论是因为方便管理员还是数据库管理员缺乏安全意识,企业内经常可以看到数据库仍然采用出厂设置。
这些默认的配置很容易被消息灵通的数据窃贼获取。当攻击者访问到登录屏幕时,他们首先会尝试使用默认账户登录信息。当他们发现存储在数据库的密钥时,他们会如获至宝。
GreenSQL公司首席技术官兼创始人David Maman表示,“唯一可以使用默认配置的是你的TIVO或者电视,IT世界的任何位置都最好不好使用默认配置,尤其是数据库。数据库硬化是至关重要的。”
成也数据库,败也数据库,数据库配置如果设置得当,将可以保护数据存储,反之,将让数据面临数据泄露的风险。安全专家建议企业仔细检查所有的数据库默认设置,以下几个默认设置将构成最大风险:
1. 默认的密码和帐户
Accuvant实验室首席安全架构师David Litchfield表示:“不安全的密码绝对是最致命的数据库服务器配置问题。”
我们看到各种围绕身份验证和账户凭证的配置问题,但到目前为止,最危险和最普遍的是允许默认管理用户名和密码继续使用。
eIQnetworks公司首席安全和合规官John Linkous表示,“攻击者和恶意软件会故意针对已知的登录信息,更改共同账户名称或者其他管理默认账户,并为这些账户使用复杂的密码,将为数据库增加一个安全层。”
此外,允许匿名登录的默认配置是另一个危险的权限设置。
“攻击者经常使用分析工具来查找允许匿名登录的数据库,然后确定数据库和其他信息,”ExtraHop Networks公司高级技术培训师Cal Jewell表示,“然后他们使用这些信息来发动攻击,以帮助他们获得更多的访问权限。”
同样地,共享服务账户可能会带来很大风险,因为它们难以被监控,并且经常在数据库内提供相当大的权限。
2. 允许直接表访问
Infusions Brands公司电子商务副总裁Ron Rule表示,让企业陷入困境的头号数据库配置问题是允许直接表访问。
Rule表示,让你的应用程序可以自己生成SELECT/UPDATE/INSERT/DELETE语句,并直接访问表时,你的数据很容易被泄露。
在这种情况下,最佳保护措施之一就是在开发过程中通过存储过程创建一个访问缓冲区。
他表示:“让你的应用程序只能执行这些存储过程,然后授予用户权限来访问这些存储过程,而拒绝直接对表的访问。”
3.保留默认存储过程
然而,存储过程并不一定是一件好事。在很多情况下,执行常见任务(例如添加用户)的出厂存储过程其实一个很大的漏洞。
如果落入坏人的手中,一些出厂存储过程将被滥用。他表示,“微软SQL服务器的‘xp_cmdshell’就是一个这样的例子:一个允许任意命令行的SP将被执行,即使该命令在SQL服务器范围外运行。”
他建议企业密切关注默认存储过程,要么完全禁止它们,要么删除它们。
4.加密密钥存储在数据中心
Vormetric公司产品营销高级总监Todd Thiemann表示,如果执行得当,数据库加密可以增加有效的安全保护层。但糟糕的配置将让数据库供应商提供的透明数据加密(TDE)失效。
“将TDE密钥存储到数据库的默认方法就像是将钥匙放在门把手上,或者将密码写在显示器上的便条上,”他表示,“企业应该将加密密钥存储在不托管该数据库的服务器上。”
5. 不必要的服务和应用程序
数据库具有各种支持服务、应用程序和其他组件,以便为尽可能多的用例提供广泛的功能集。但数据库的每个增加的组件都增加了潜在攻击者可以利用的攻击面。
“大多数数据库产品提供‘附加’组件,例如报告或分析工具,”Linkous表示,“这些组件可能对整个数据库系统带来更多的漏洞,企业应该对不必要的组件进行禁用或者卸载。”
让事情更糟糕的是,现在很多数据库都没有即时修复漏洞。不过,企业通常只需要一小部分功能集就能够支持任何一个数据库安装,这可以帮助降低很大风险。
“在我们的安全部署中,我们经常看到在数据库服务器刚刚构建时,会安装尽可能多的组件,以备不时之需,”他表示,“企业只需要有一点点远期规划意识,就可以避免很多组件。应用程序开发人员应该明确他们具体需要哪些组件,避免不需要的组件。”