论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 1674阅读
  • 2回复

[求助-网络问题]保护Web服务器从数据库开始 [复制链接]

上一主题 下一主题
离线风晨
 

发帖
2652
今日发帖
最后登录
2018-03-03
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-09-23 12:48:23
— (quen2008) 好像不全啊,帮你更新了,加了点图片,我想这样会好点的! (2009-09-23 13:57) —
数据库是Web服务器的命脉,对于Web站点的正常运行起着至关重要的作用。但是,数据库在Web结合的存在着诸多安全隐患,它往往攻击者入侵Web的入口。如何来加固Web数据库呢?我们就以当前使用比较广泛的Access和MSSQL数据库为例,说是如何加强Web数据库的安全性。

  1、Access数据库防下载

  数据库被下载这对Web来说几乎是毁灭性的,因为攻击者从中可以获取包括管理员帐户及密码等在内的敏感信息,然后实施进一步的攻击。可被下载的数据库主要是Access数据库,采用这种数据库的Web站点不在少数。防止Access数据库下载,可以从以下几个方面入手。

  (1).数据库改名

  数据库改名包括两部分,首先将其改成比较生僻的名称,建议名字足够长并使用某些特殊字符以防被攻击者猜中。另外,将mdb后缀改为asp,以防数据库被下载。当然数据库改名后,数据库连接配置文件也要进行修改。(图1)



  (2).改变数据库路径

  站点系统都有默认的数据库路径,由于安全意识淡薄,部署Web站点时有很多人不去修改数据库路径,因而攻击者很容易地猜到该站点的数据库路径。

  更改数据库路径,大家可以在站点目录下创建比较生僻的目录,然后将数据库文件拷贝到该目录中。当然,更改数据库路径后,需要修改站点系统的数据库连接文件。一般asp站点系统的数据库连接文件是conn.asp。打开该文件后,然后根据实际情况进行修改,使得其跟当前的数据库路径相一致。(图2)



(3).设置好目录权限

  要设置好数据库目录的访问权限,原则是权限最小化以防止非正常的访问。因为Web程序是通过IIS用户运行的,我们只要给IIS用户读取和写入权限,然后通过“IIS管理器”把这个目录的脚本执行权限去掉,防止入侵者在该目录中通过上传获得webshell了。(图3)



  (4).添加mdb的扩展映射

  IIS对于不能解析的文件类型就会弹出下载对话框让用户下载,我们可以通过在IIS管理器中添加对mdb的扩展映射,防止数据库被下载。其设置方法是:打开IIS管理器定位到相应的Web站点,右键选择“属性”,然后依次点击“主目录→配置→映射”,在“应用程序扩展”里面添加.mdb文件应用解析,至于用于解析它的可执行文件大家可以自己进行选择,只要让攻击者无法访问数据库文件就可以了。(图4)





保护Web服务器从数据库开始(3)


  (5).数据库改造

  思路是将数据库后缀名(.mdb)修改为.asp,然后在数据库中加上一个NotDownLoad的表以防数据库被下载。具体操作方法如下:

  首先新建一个.asp文件(notdown.asp),其代码如下:

  db="DataShop.asp" '这里改成你的数据库地址,这是相对根目录的地址

  set conn=server.createobject("Adodb.Connection")

  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)

  conn.open connstr

  conn.execute("create table notdownload(notdown oleobject)")

  set rs=server.createobject("adodb.recordset")

  sql="select * from notdownload"

  rs.open sql,conn,1,3

  rs.addnew

  rs("notdown").appendchunk(chrB(asc("<")) & chrB(asc("%")))

  rs.update

  rs.close

  set rs=nothing

  conn.close

  set conn=nothing

  然后在服务器端运行notdown.asp,这样在数据库添加了包含notdown字段的notdownload数据表,即可防止数据库的下载,因为notdown有一个值是"< %",asp运行是因缺少"% >"关闭标记而拒绝访问,下载当然会失败。(图5)





2、MSSQL数据库防注入

  MSSQL数据库是大中型Web站点常采用的数据库,对于SQL数据最大的威胁是注入。攻击者通过注入来调用SQL语句执行系统命令,因此其危险性更大。一个注入点,有可能造成整个Web服务器的沦陷。防MSSQL注入可以从下面几个方面入手。

  (1).慎重选择建站系统

  通过站点系统建立一个Web站点是非常容易的,但是某些站点系统代码编写不够严谨,考虑不周,变量过滤不严等使得可被攻击者利用。因此,选择一款安全的站点系统是至关重要的。当然,没有百分之百安全的站点系统。管理员如果懂代码的话可以进行检测分析,看看是否有漏洞。另外,可以扮演入侵者进行入侵检测。最后,及时打补丁也是非常重要的。

  (2).最小权限连接数据库

  Web站点连接数据库都是通过相应的帐户进行连接,在这些帐户中SA是权限最大的也是最危险的。数据库不要用SA帐户,使用SA帐户连接数据库对服务器来说就是一场灾难。一般来说可以使用DB_OWNER权限帐户连接数据库,如果可以正常运行,使用public用户最安全的。设置成dbo权限连接数据库之后,入侵者基本就只能通过猜解用户名和密码或者是差异备份来获得webshell了,对于前者,我们可以通过加密和修改管理后台的默认登陆地址来防御。对于差异备份,我们知道它的条件是有备份的权限,并且要知道web的目录。这样被攻击的可能性大大地降低。(图6)



  (3).删除危险的存储过程

  MSSQL数据库系统集成了较多的存储过程,这些命令集方便了我们的操作当然也为攻击者入侵Web提供了便利。因此我们要根据需要删除某些在Web中用不到的,并且可被攻击者利用才存储过程。比如xp_regread和xp_dirtree这两个存储过程可被攻击者用来读取注册表信息和列目录,我们可以删除。另外,xp_cmdshell可被用来执行dos命令比如建立系统帐户等等,是非常危险的。sp_makwebtask过程,可以读取SQL SELECT命令所得到的结果到表格形式的HTML文件中。这些比较危险可被攻击者利用的存储过程我们可以删除。比如删除xp_cmdshell可以执行“exec master..sp_dropextendedproc xp_cmdshell”,其它的类似。(图7)




保护Web服务器从数据库开始(5)



  (4).修改错误页,误导攻击者

  SQL注入入侵是根据IIS给出的ASP错误提示信息来入侵的,如果我们把IIS设置成不管出什么样的ASP错误,只给出一种错误提示信息,即http 500错误,那么攻击者就无法获得敏感信息实施入侵了。打开IIS管理器选择相应的Web站点打开其站点属性窗口,在“自定义错误”选项卡下选择“500:100”点击“编辑”打开“编辑自定义错误属性”窗口,消息类型选择“文件”,然后通过浏览定位到自己构造的错误页,比如“c:\test.htm”,然后确定即可。(图8)



  总结:防下载、防注入这是从Web安全的角度出发实施的非常规措施,在常态下我们一定要做好Web数据库的备份,这才是最基本的。相信做好了这两方面的工作,才能未雨绸缪让数据库更好地为Web服务。

本篇文章来源于 新世纪网安基地 (www.520hack.com) 原文出处:http://www.520hack.com/Article/Text5/server/200808/11106.html
[ 此帖被quen2008在2009-09-23 13:56重新编辑 ]
离线quen2008
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 沙发  发表于: 2009-09-23 13:57:53
好像不全啊,帮你更新了,加了点图片,我想这样会好点的!
离线风晨

发帖
2652
今日发帖
最后登录
2018-03-03
只看该作者 板凳  发表于: 2009-09-23 18:03:19
回 1楼(quen2008) 的帖子
斑斑费心了