Microsoft SQL Server数据库风险分析模型构建
1 引言
今天,信息成为人类社会的重要资源,作为存储管理大量信息的数据库,存放着个人信息、企业机密、国家机密等多种类型信息。当世界各国信息安全事件频发,信息的安全越来越受到人们的关注,信息安全保障工作也越发严峻,数据库安全作为信息安全最后一道防线,其重要性不言而喻。
2 现状
现在,仍有许多公司、单位使用Microsoft SQL Server数据库存在:默认安装未做任何安全配置即使用,长期没有更新安全补丁、升级版本,安全设置不正确等情况,导致SQL Server数据库安全漏洞百出。
3 分析与建议
本文希望通过SQL Server数据库风险分析,增强人们的安全意识与SQL Server数据库方面综合分析能力。17项高风险分析与专业配置建议如下。
(1)GDI+VML、EMF、GIF、WMF、BMP、TIFF、PNG等图片文件格式漏洞
GDI+漏洞影响VML(CVE-2007-5348)、EMF(CVE-2008-3012)、GIF(CVE-2008-3013)、WMF(CVE-2008-3014)、BMP(CVE-2008-3015)、TIFF(CVE-2009-2503)、PNG(CVE-2009-3126)等常见的图片文件格式,也就是说机器上有该漏洞的系统一旦打开(甚至不需要用户打开,只要程序解析该文件)包含有漏洞的利用代码的文件就会执行其中的任意代码。
建议:安装MS08-052补丁软件对漏洞进行修补。
(2)口令攻击
当SQL Server审计设置为记录全部或者记录失败时,数据库服务器中存在字典攻击的证据。
建议:一分钟内失败的最大次数为6次,登录失败超过定制的次数,漏洞存在。
(3)弱口令用户
在一个安全的数据库环境中登录用户都要有强壮的密码,特别是具有管理员权限的用户。
强壮的密码建议遵循原则:必须包括字母、数字和特殊字符、至少8位长、密码不常见。
(4)sa口令与用户名相同
SQL Server中默认的登录用户sa具有系统管理员的权限,拥有对数据库的最高权限,攻击者获得sa的密码后就可以对数据库执行任意操作。建议:将sa更改为强口令。
(5)SQL Server补丁
SQL Server是否安装了最新的补丁。当一个版本发布一段时间后,SQL Server的厂家会提供了修补漏洞(包括安全问题)的升级补丁,这些修补都包括在补丁中。
建议:按时关注其官方网站发布的修补信息,及时给数据库服务器安装上最新发布的补丁。
(6)存储过程安全
检查sp_replwritetovarbin、sp_add_jobstep、sp_add_jobserver、sp_add_jobschedule、sp_add_job、sp_dr opgroup、sp_depends、sp_add_alert、sp_add_agent_profile、sp_add_agent_parameter、sp_grantlogin、sp_addrole、sp_ adduser、sp_executesql、sp_indexes、sp_trace_create、sp_ trace_generateevent、sp_trace_setevent、sp_trace_setfilter、sp_trace_setstatus、sp_bindsession、sp_replcmds、sp_replcounters、sp_repldone、sp_repldropcolumn的执行权限是否符合安全要求。
建议:全部设置为仅sysadmin可以执行。
(7)扩展存储过程安全
检查xp_revokelogin、xp_msver、xp_sprintf、xp_sscanf的执行权限是否符合安全要求。
建议:全部设置为仅sysadmin可以执行。
(8)用户密码过期
密码过期的登录用户。要求用户的密码在一定规则的基础上进行修改对抵御的字典攻击很有用处,因为密码的使用时间越长,密码通过暴力破解、窃取或其他途径被破解的可能性就越大。
建议:口令修改后过期的天数为45天,在口令即将过期时提醒用户修改(天数)为5天,用户也可以自定义这些值。
(9)Windows NT登录用户不正确
SQL Server允许用户使用操作系统的Windows NT账号进行服务器验证。
建议:检查Windows NT账号列表,以确认只有适当的用户才可以访问数据库服务器。
(10)具有管理员权限的过期登录用户
过期登录(即长时间没有登录的用户)用户可以设置用户未登录的过期的天数,建议:设置为30天。过期用户提供给攻击者一个攻击点,因为密码没有更改,长期的字典攻击就可能成功。对安全要求高的数据库环境中要求删除不用的登录,特别是具有管理员权限的过期用户。
(11)未开启登录事件审计
SQL Server提供日志审计用来记录失败或者成功登录数据库的行为,对登录事件的审计可以帮助用户及时察觉登录到数据库中是否发生攻击行为、攻击行为发生的时间、登录名等信息,以帮助管理员掌握登录数据库服务器的相关活动。建议:开启登录事件审计功能。
(12)组权限设置错误
数据库服务器中的组的权限是否与项目定制一致。分配权限的原则建议遵循最小化原则,即只要赋予所需权限的最小权限即可,如果需要对组中个别用户特殊授权,可以直接授予,不要因此放大对相关组的授权。如果存在一个组权限过大,则漏洞存在。
(13)恢复模型不是完全恢复模型
SQL Server提供的三种恢复模型包括简单恢复、完全恢复和大容量日志记录恢复。简单恢复能够收回日志空间,可以节省日志文件空间,但是如果数据发生丢失,不能恢复到即时点。完全恢复模型如果数据文件丢失或者损坏不会导致工作丢失,可以恢复到即时点。大容量日志记录恢复也不能恢复到即时点。在一个安全的数据库环境中,建议:使用完全恢复模型。
(14)没有禁用MS Search
MS Search服务用于SQL Server进行目录索引。
如不需要MS Search服务,建议:禁用此服务,以减少数据库可能被攻击的面积。
(15)没有禁用MSDTC
MSDTC是微软分布式传输协调程序,用于管理多个服务器。
如不需要MSDTC服务,建议:禁用此服务,以减少数据库可能被攻击的面积。
(16)没有禁用 SQL Server Agent
SQL Server Agent是微软的Windows服务,它会定时执行通常叫做job的管理任务。从SQL 2005开始的版本中,SQL Server Agent服务默认情况下是禁用的。
如不需要SQL Server Agent服务,建议:禁用此服务,以减少数据库可能被攻击的面积。
(17)默认实例端口号为1433
SQL Server默认的端口号为1433,如果SQL Server数据库服务器没有修改默认的端口号,会增加攻击者通过端口攻击的可能性。建议:修改端口为别的端口号。
4
结束语
数据库的安全风险来自于数据库的安装、设置、维护多个层面。安装时,只安装需要的组件可以有效减少组件漏洞出现;设置时,锁定或者失效默认用户、修改可用用户的默认密码、加大密码复杂度规则、设置密码有限期可以有效防止用户被盗用;维护时,定期更新厂家推出的安全性补丁、加强用户审计等能减少安装、设置不合理造成的风险。本文为SQL Server数据库风险识别、风险评估与修复等工作提供了重要参考依据。
参考文献
[1] Microsoft. CVE-2007-5348 [EB/OL]. http://?name=CVE-2007-5348,2007-10-10.
[2] Microsoft. CVE-2008-3012 [EB/OL]. http://?name=CVE-2008-3012,2008-07-07.
[3] Microsoft. CVE-2008-3013 [EB/OL]. http://?name=CVE-2008-3013,2008-07-07.
[4] Microsoft. CVE-2008-3014 [EB/OL]. http://?name=CVE-2008-3014,2008-07-07.
[5] Microsoft. CVE-2008-3015 [EB/OL]. http://?name=CVE-2008-3015,2008-07-07.
[6] Microsoft. CVE-2009-2503 [EB/OL]. http://?name=CVE-2009-2503,2009-07-17.
[7] Microsoft. CVE-2009-3126 [EB/OL]. http://?name=CVE-2009-3126,2009-09-10.
作者简介:
李刚(1980-),男,四川宜宾人,工程师,Oracle数据库认证专家、IBM AIX系统认证管理员;主要研究方向和关注领域:数据库管理、数据库架构设计、数据仓库建模、数据抽取与展示。