SQL?SERVER的初级安全设置-针对SQL?INJECTION
日前SQL?INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入。这些网站一般使用的多为SQL?SERVER数据库,正因为如此,很多人开始怀疑SQL?SERVER的安全性。其实SQL?SERVER?2000已经通过了美国政府的C2级安全认证-这是该行业所能拥有的最高认证级别,所以使用SQL?SERVER还是相当的安全的。当然和ORCAL、DB2等还是有差距,但是SQL?SERVER的易用性和广泛性还是能成为我们继续使用下去的理由。那怎么样才能使SQL?SERVER的设置让人使用的放心呢? 第一步肯定是打上SQL?SERVER最新的安全补丁,现在补丁已经出到了SP3。下载地址:http://www.microsoft.com/sql/downloads/2000/sp3.asp。如果这一步都没有做好,那我们也没有继续下去的必要了。 第二步是修改默认的1433端口,并且将SQL?SERVER隐藏。这样能禁止对试图枚举网络上现有的?SQL?Server?客户端所发出的广播作出响应。另外,还需要在TCP/IP筛选中将1433端口屏蔽掉,尽可能的隐藏你的SQL?SERVER数据库。这样子一但让攻击创建了SQL?SERVER的账号,也不能马上使用查询分析器远程登陆来进行下一步的攻击。单从ASP,PHP等页面构造恶意语句的话,还有需要查看返回值的问题,总比不上直接查询分析器来得利落。所以我们首先要做到即使让别人注入了,也不能让攻击者下一步做得顺当。修改方法:企业管理器?-->?你的数据库组?-->?属性?-->?常规?-->?网络配置?-->?TCP/IP?-->?属性?,在这儿将你的默认端口进行修改,和SQL?SERVER的隐藏。 第三步是很重要的一步,SQL?INJECTION往往在WEB?CODE中产生。而做为系统管理员或者数据库管理员,总不能常常的去看每一段代码。即使常常看代码,也不能保证我们在上面的疏忽。那怎么办?我们就要从数据库角色着手,让数据库用户的权限划分到最低点。SQL?SERVER的默认权限让人真的很头疼,权限大得非常的高,权限小的又什么都做不了,SYSADMIN和db_owner真是让人又爱又恨。攻击者一但确认了网站存在SQL?INJECTION漏洞,肯定有一步操作步骤就是测试网站的SQL?SERVER使用者具有多大的权限。一般都会借助SELECT?IS_SRVROLEMEMBER('sysadmin'),或者SELECT?IS_MEMBER('db_owner'),再或者用user?=?0(让字符和数字进行比较,SQL?SERVER就会提示了错误信息,从该信息中即可知道一些敏感信息)等语句进行测试。方法还有,我也不敢多说了。其一怕错,其二怕联盟中的人扁。在当前,如果网站的数据库使用者用的是SA权限,再加上确认了WEB所处在的绝对路径,那么就宣告了你的网站的OVER。db_owner权限也一样,如果确认了绝对路径,那么有50%的机会能给你的机器中上WEB?方式的木马,如海阳等。所以这儿我们确认了一点,我们必须要创建自已的权限,让攻击者找不着下嘴的地方。在这儿引用一个SQL?SERVER联机帮助中的例子: 创建?SQL?Server?数据库角色的方法(企业管理器) 对象权限 语句权限 暗示性权限 db_owner??????????????????????????在数据库中有全部权限。 在这儿把新建的数据库角色的权限配置好,比如需要使用哪个表、视图、存储过程等。然后把Db_owner和db_securityadmin、db_backupoperator取消,不给攻击者BACKUP?DATABASE和CREATE?TABLE的机会,一但攻击者具有这两个权限,那么你的网站就还处在十分危险的状态。还有注意一下,在创建数据库账号时,千万不能对服务器角色进行选择。
先来列出危险的内置存储过程: xp_cmdshell ActiveX自动脚本: sp_OACreate 以上各项全在我们封杀之列,例如xp_cmdshell屏蔽的方法为:sp_dropextendedproc?'xp_cmdshell',如果需要的话,再用sp_addextendedproc?'xp_cmdshell',?'xpsql70.dll'进行恢复。如果你不知道xp_cmdshell使用的是哪个.dll文件的话,可以使用sp_helpextendedproc?xp_cmdshell来查看xp_cmdshell使用的是哪个动态联接库。另外,将xp_cmdshell屏蔽后,我们还需要做的步骤是将xpsql70.dll文件进行改名,以防止获得SA的攻击者将它进行恢复。 我们做到这儿,你的SQL?SERVER就基本上安全了。但是信息还是能一样的外泄。毕竟SELECT我们是无法取消的,除非你的网站用的是HTML。SQL?INJECTION的防范还需要我们这些程序员来注意,这才是治本之法。我们在高级设置篇再接着对SQL?SERVER的安全做下一步的分析。该篇文章如果有什么错漏,请大家多多包涵。谢谢…… 另外推荐一下,SQL?INJECTION的测试工具NBSI,这是由联盟中小竹同志开发,对SQL?INJECTION的注入有代表性的作用,另外一个就是小弟的NBWEBSHELL了。这些工具都可以到联盟网站进行下载 NB联盟-jadesun(裤衩)?QQ:280155 ??欢迎转载,但请保留作者与联盟信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |