<b>MSSQL的安全设置问题解答</b>[MSSQL防范]
本文“<b>MSSQL的安全设置问题解答</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
目前SQL INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入.这些网站普通利用的多为sql server数据库,正因为如此,很多人开始猜疑SQL SERVER的安全性.其实SQL SERVER 2000已经通过了美国政府的C2级安全认证-这是该行业所能拥有的最高认证级别,所以利用SQL SERVER还是相当的安全的.当然和ORCAL、DB2等还是有差别,但是SQL SERVER的易用性和遍及性还是能成为我们持续利用下去的来由.那怎么样才能使SQL SERVER的设置让人利用的安心呢?
第一步必定是打上SQL SERVER最新的安全补钉.假如这一步都没有做好,那我们也没有持续下去的必要了.
第 二步是改正默许的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 数据库角色的办法(企业管理器)
成立 SQL Server 数据库角色
1. 展开服务器组,然后展开服务器.
2. 展开"数据库"文件夹,然后展开要在此中成立角色的数据库.
3. 右击"角色",然后单击"新建数据库角色"号令.
4. 在"名称"框中输入新角色的名称.
5. 单击"增添"将成员增添到"尺度角色"列表中,然后单击要增添的一个或多个用户.(可选)
只有选定数据库中的用户才能被增添到角色中.
对象权限
处理数据或履行历程时需求称为对象权限的权限类别:
· SELECT、INSERT、UPDATE 和 DELETE 语句权限,它们可以利用到整个表或视图中.
· SELECT 和 UPDATE 语句权限,它们可以有挑选性地利用到表或视图中的单个列上.
· SELECT 权限,它们可以利用到用户定义函数.
· INSERT 和 DELETE 语句权限,它们会影响整行,因此只可以利用到表或视图中,而不能利用到单个列上.
· EXECUTE 语句权限,它们可以影响存储历程和函数.
语句权限
创 建数据库或数据库中的项(如表或存储历程)所触及的活动要求另一类称为语句权限的权限.比方,假如用户必须可以在数据库中成立表,则应当向该用户授与 CREATE TABLE 语句权限.语句权限(如 CREATE DATABASE)实用于语句自身,而不实用于数据库中定义的特定对象.
语句权限有:
· BACKUP DATABASE
· BACKUP LOG
· CREATE DATABASE
· CREATE DEFAULT
· CREATE FUNCTION
· CREATE PROCEDURE
· CREATE RULE
· CREATE TABLE
· CREATE VIEW
表示性权限
表示性权限掌握那些只能由预定义系统角色的成员或数据库对象全部者履行的活动.比方,sysadmin 固定服务器角色成员自动担当在 SQL Server 安装中举行操作或查看的全部权限.
数据库对象全部者还有表示性权限,可以对所拥有的对象履行一切活动.比方,拥有表的用户可以查看、增添或删除数据,更改表定义,或掌握答应其他用户对表举行操作的权限.
db_owner 在数据库中有全部权限.
db_Accessadmin 可以增添或删除用户 ID.
db_securityadmin 可以管理全部权限、对象全部权、角色和角色成员资格.
db_ddladmin 可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句.
db_backupoperator 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句.
db_datareader 可以挑选数据库内任何用户表中的全部数据.
db_datawriter 可以更改数据库内任何用户表中的全部数据.
db_denydatareader 不能挑选数据库内任何用户表中的任何数据.
db_denydatawriter 不能更改数据库内任何用户表中的任何数据.
在 这儿把新建的数据库角色的权限配置好,比方需求利用哪个表、视图、存储历程等.然后把Db_owner和db_securityadmin、 db_backupoperator撤消,不给攻击者BACKUP DATABASE和CREATE TABLE的机会,一但攻击者具有这两个权限,那么你的网站就还处在非常危险的状况.还有注意一下,在成立数据库账号时,千万不能对服务器角色举行挑选.
第 四步是改正SQL SERVER内置存储历程.SQL SERVER预计是为了安装大概别的方面,它内置了一批危险的存储历程.能读到注册表信息,能写入注册表信息,能读磁盘同享信息等等......各位看到 这儿,心里大概会在想,我的网站中有别的的代码,又不像查询解析器那样能查接将后果输出.给你这个权限,又不能怎么样,还是看不到信息.假如各位这样想就 大错特错了.提醒一下,假如攻击者有CREATE TABLE的权限,那么成立一个暂时表,然后将信息INSERT到表中,然SELECT出来,接着跟数字举行对比,让SQL SERVER报错,那么后果就全出来了......所以我们要报着宁错杀,不放过的态度举行修补.
先来列出危险的内置存储历程:
xp_cmdshell
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite
ActiveX自动脚本:
sp_OACreate
sp_OADestroy
sp_OAMethod
sp_OAGetProperty
sp_OASetProperty
sp_OAGetErrorInfo
sp_OAStop
将有安全问题的SQL历程删除.对比全面.一切为了安全!
删除有安全隐患的扩大:
exec sp_dropextendedproc 'xp_cmdshell' [删除此项扩大后,将无法远程衔接数据库]
exec sp_dropextendedproc 'xp_dirtree' [删除此项扩大后,将无法新建或附加数据库]
exec sp_dropextendedproc 'xp_enumgroups'
exec sp_dropextendedproc 'xp_fixeddrives'
exec sp_dropextendedproc 'xp_loginconfig'
exec sp_dropextendedproc 'xp_regaddmultistring'
exec sp_dropextendedproc 'xp_regdeletekey'
exec sp_dropextendedproc 'xp_regdeletevalue'
exec sp_dropextendedproc 'xp_regread'
exec sp_dropextendedproc 'xp_regremovemultistring'
exec sp_dropextendedproc 'xp_regwrite'
exec sp_dropextendedproc 'xp_enumerrorlogs'
exec sp_dropextendedproc 'xp_getfiledetails'
exec sp_dropextendedproc 'xp_regenumvalues'
恢复扩大
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
exec sp_addextendedproc 'xp_dirtree', 'xpstar.dll'
exec sp_addextendedproc 'xp_enumgroups', 'xplog70.dll'
exec sp_addextendedproc 'xp_fixeddrives', 'xpstar.dll'
exec sp_addextendedproc 'xp_loginconfig', 'xplog70.dll'
exec sp_addextendedproc 'xp_regaddmultistring', 'xpstar.dll'
exec sp_addextendedproc 'xp_regdeletekey', 'xpstar.dll'
exec sp_addextendedproc 'xp_regdeletevalue', 'xpstar.dll'
exec sp_addextendedproc 'xp_regread', 'xpstar.dll'
exec sp_addextendedproc 'xp_regremovemultistring', 'xpstar.dll'
exec sp_addextendedproc 'xp_regwrite', 'xpstar.dll'
exec sp_addextendedproc 'xp_enumerrorlogs', 'xpstar.dll'
exec sp_addextendedproc 'xp_getfiledetails', 'xpstar.dll'
exec sp_addextendedproc 'xp_regenumvalues', 'xpstar.dll'
全部复制到"SQL查询解析器"
点击菜单上的--"查询"--"履行",就会将有安全问题的SQL历程删除(以上是7i24的正版用户的技术支持)
更改默许SA空密码.数据库链接不要利用SA帐户.单数据库单独设利用帐户.只给public和db_owner权限.
数据库不要放在默许的位置.
SQL不要安装在PROGRAM FILE目录下面.
以 上各项全在我们封杀之列,比方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的攻击者将它举行恢复.
以上是“<b>MSSQL的安全设置问题解答</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |