MSSQL安全设置的具体步骤和方法小结

第一步肯定是打上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的攻击者将它进行恢复。

  我们做到这儿,你的SQL SERVER就基本上安全了。但是信息还是能一样的外泄。毕竟Select我们是无法取消的,除非你的网站用的是HTML。SQL INJECTION的防范还需要我们这些程序员来注意,这才是治本之法。

时间: 2024-10-28 08:57:38

MSSQL安全设置的具体步骤和方法小结的相关文章

MSSQL安全设置的具体步骤和方法小结_MsSql

第一步肯定是打上SQL SERVER最新的安全补丁.如果这一步都没有做好,那我们也没有继续下去的必要了. 第二步是修改默认的1433端口,并且将SQL SERVER隐藏.这样能禁止对试图枚举网络上现有的 SQL Server 客户端所发出的广播作出响应.另外,还需要在TCP/IP筛选中将1433端口屏蔽掉,尽可能的隐藏你的SQL SERVER数据库.这样子一但让攻击创建了SQL SERVER的账号,也不能马上使用查询分析器远程登陆来进行下一步的攻击.单从ASP,PHP等页面构造恶意语句的话,还有

Word2013中设置行距的两种方法

  方法1:在行距列表中设置 打开Word2013文档窗口,选中需要设置行距的段落或全部文档.在"开始"功能区的"段落"分组中单击"行和段落间距距"按钮,并在打开的行距列表中选中合适的行距,如图1所示. 图1 快速设置行距 方法2:在"段落"对话框中设置 用户还可以在"段落"对话框中对行距进行更详细地设置,操作步骤如下所述: 第1步,打开Word2013文档窗口,选中需要设置行间距的文档内容.然后在&quo

网站系统创建互动网站的常规步骤与方法

创建 现在咱们要做一个网站,只要求单纯静态页面设计的情况很少了,要么就是设计像易趣.淘宝这样的网络店铺页面,或者是博客页面.要创建一个完整的网站,大家都会应用一套ASP.PHP的网站系统,然后再在系统的基础上设计网站的页面.因此如今的网站页面设计方式就和以前完全不同了.目前应用得比较广泛的免费的网站系统程序包括动易的网站管理系统(http://www.asp163.net).动网新闻系统(http://www.aspsky.net),网站论坛以动网论坛最热门.这些系统只需要到官方网站免费下载后就

用网站系统创建互动网站的常规步骤与方法

创建 现在咱们要做一个网站,只要求单纯静态页面设计的情况很少了,要么就是设计像易趣.淘宝这样的网络店铺页面,或者是博客页面.要创建一个完整的网站,大家都会应用一套ASP.PHP的网站系统,然后再在系统的基础上设计网站的页面.因此如今的网站页面设计方式就和以前完全不同了.目前应用得比较广泛的免费的网站系统程序包括动易的网站管理系统(http://www.asp163.net).动网新闻系统(http://www.aspsky.net),网站论坛以动网论坛最热门.这些系统只需要到官方网站免费下载后就

路由器上网账号密码设置的一般步骤介绍

  不管是新手还是高手,在实际使用宽带路由器的过程中,我们都会常常遇到无法成功进行ADSL拨号的现象,遇到这种现象时多半是我们没有正确设置好宽带路由器的自动拨号参数.遇到这种问题,建议按照下面的操作步骤,来重新对宽带路由器的拨号参数进行设置. 解决方法就是设置帐号,确保拨号成功 (1)首先运行IE浏览器程序,然后在IE浏览器窗口的地址栏中,直接输入宽带路由器的IP地址,默认状态下该地址一般为192.168.1.1,该地址通常在宽带路由器的操作手册中能够查找到. (2)在确认IP地址输入正确后,单

教你用Word为办公文档巧设置个性化的签名的方法

个性化的签名是近些年的新流行,在我们的生活中很常见,但是如何用电脑设置自己的个性化签名或者说是添加些个性化的落款,地址啊,邮编啊,手机号或QQ号之类的东东呢?blue1000今天跟大家分享的就是教你用word为办公文档巧设置个性化的签名的方法,有需要的朋友快来看看吧. 小贴士:一个快捷键或者鼠标点一下,详细的落款信息就可以出现在文档上,这个效率比起慢慢一项一项的输入,甚至复制粘贴都要高得多,这一切仅需要4步就能OK. 步骤一: 新建一个Word文档,选择"工具→宏→录制新宏",在&qu

win8系统word文档设置为只读文件的方法

  1.返回到win8系统的传统桌面位置,同时按下win8电脑键盘上的win+R快捷键打开电脑的运行窗口,在打开的运行窗口中,输入netplwiz并单击回车; 文档设置为只读文件的方法-mac系统word文档只读"> 2.屏幕中就会弹出用户账户设置的界面了,需要在该窗口中选中你的用户名,点击属性按钮.然后在弹出窗口,选择"组成员"页面; 3.最后选中其他选项,并且在下拉列表里选择Administrators,完成之后,点击窗口下方的确定按钮进行保存就可以了. 为保证文件

Beyond Compare设置smali语法高亮的方法

  Beyond Compare设置smali语法高亮的方法 步骤一:打开Beyond Compare软件,选择文本比较会话,打开会话操作界面.单击"工具"按钮,在展开的菜单中选择"文件格式"选项卡. Beyond Compare文本比较会话操作界面图例 步骤二:在打开的文件格式窗口中,点击界面左侧底部的"+"按钮,新建一个文本格式类型,命名为"smali",文件过滤条件为"*.smali",完成后点击保存

微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)

原文:微信JS-SDK"分享信息设置"API及数字签名生成方法(NodeJS版本) 先上测试地址以示成功: 用微信打开下面地址测试 http://game.4gshu.com/deep-love/index.html 获直接扫二维码君   用异步ajax的方式获取数字签名 异步的方式好 1.前后端分离啊 2.一个服务可以供多个微信公众帐号的数字签名服务   在服务器端用NodeJS跑起一个数字签名生成服务,web端用ajax方式请求NodeJS服务获取数字签名信息 得到信息后配置微信J