IIS 6 备忘

用IIS7久了, 回到IIS6 总被搞混,因此记录下,以备忘记。 如下是转载和整合了他人的资源,原出处不详。
 
IIS Web 服务器的权限设置有两个地方,一个是 NTFS 文件系统自己的权限设置,另外一个是 IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上。这两个地方是密切相关的。下面我会以实例的方 式来说解如何设置权限。
IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上有:
脚本资源访问 
读取 
写入 
浏览 
记录访问 
索引资源 
6 个选项。这 6 个选项中,“记录访问”和“索引资源”跟安全性关系不大,通常都设置。可是若是前面四个权限都没有设置的话,这两个权限也没有必要设置。在设置权限时,记住这个规则便可,后面的例子中再也不特别说明这两个权限的设置。
另外在这 6 个选项下面的执行权限下拉列表中还有:
无 
纯脚本 
纯脚本和可执行程序 
3 个选项。
而 网站目录若是在 NTFS 分区(推荐用这种)的话,还须要对 NTFS 分区上的这个目录设置相应权限,许多地方都介绍设置 everyone 的权限,实际上这是很差的,其实只要设置好 Internet 来宾账号(IUSR_xxxxxxx)或 IIS_WPG 组的账号权限就能够了。若是是设置 ASP、PHP 程序的目录权限,那么设置 Internet 来宾账号的权限,而对于 ASP.NET 程序,则须要设置 IIS_WPG 组的账号权限。在后面提到 NTFS 权限设置时会明确指出,没有明确指出的都是指设置 IIS 属性面板上的权限。
例1 —— ASP、PHP、ASP.NET 程序所在目录的权限设置:
如 果这些程序是要执行的,那么须要设置“读取”权限,而且设置执行权限为“纯脚本”。不要设置“写入”和“脚本资源访问”,更不要设置执行权限为“纯脚本和 可执行程序”。NTFS 权限中不要给 IIS_WPG 用户组和 Internet 来宾账号设置写和修改权限。若是有一些特殊的配置文件(并且配置文件自己也是 ASP、PHP 程序),则须要给这些特定的文件配置 NTFS 权限中的 Internet 来宾账号(ASP.NET 程序是 IIS_WPG 组)的写权限,而不要配置 IIS 属性面板中的“写入”权限。
IIS 面板中的“写入”权限其实是对 HTTP PUT 指令的处理,对于普通网站,通常状况下这个权限是不打开的。
IIS 面板中的“脚本资源访问”不是指能够执行脚本的权限,而是指能够访问源代码的权限,若是同时又打开“写入”权限的话,那么就很是危险了。
执行权限中“纯脚本和可执行程序”权限能够执行任意程序,包括 exe 可执行程序,若是目录同时有“写入”权限的话,那么就很容易被人上传并执行木马程序了。
对 于 ASP.NET 程序的目录,许多人喜欢在文件系统中设置成 Web 共享,实际上这是没有必要的。只须要在 IIS 中保证该目录为一个应用程序便可。若是所在目录在 IIS 中不是一个应用程序目录,只须要在其属性->目录面板中应用程序设置部分点建立就能够了。Web 共享会给其更多权限,可能会形成不安全因素。
剑 心总结:也就是说通常不要打开-主目录-(写入),(脚本资源访问) 这两项以及不要选上(纯脚本和可执行程序),选(纯脚本)就能够了.须要asp.net的应用程序的若是应用程序目录不止应用程序一个程序的能够在应用程 序文件夹上(属性)-目录-点建立就能够了.不要在文件夹上选web共享.
例2 —— 上传目录的权限设置:
用 户的网站上可能会设置一个或几个目录容许上传文件,上传的方式通常是经过 ASP、PHP、ASP.NET 等程序来完成。这时须要注意,必定要将上传目录的执行权限设为“无”,这样即便上传了 ASP、PHP 等脚本程序或者 exe 程序,也不会在用户浏览器里就触发执行。
一样,若是不须要用户用 PUT 指令上传,那么不要打开该上传目录的“写入”权限。而应该设置 NTFS 权限中的 Internet 来宾账号(ASP.NET 程序的上传目录是 IIS_WPG 组)的写权限。
如 果下载时,是经过程序读取文件内容而后再转发给用户的话,那么连“读取”权限也不要设置。这样能够保证用户上传的文件只能被程序中已受权的用户所下载。而 不是知道文件存放目录的用户所下载。“浏览”权限也不要打开,除非你就是但愿用户能够浏览你的上传目录,并能够选择本身想要下载的东西。
剑心总结:通常的一些asp.php等程序都有一个上传目录.好比论坛.他们继承了上面的属性能够运行脚本的.咱们应该将这些目录重新设置一下属性.将(纯脚本)改为(无).
例3 —— Access 数据库所在目录的权限设置:
许 多 IIS 用户经常采用将 Access 数据库更名(改成 asp 或者 aspx 后缀等)或者放在发布目录以外的方法来避免浏览者下载它们的 Access 数据库。而实际上,这是没必要要的。其实只须要将 Access 所在目录(或者该文件)的“读取”、“写入”权限都去掉就能够防止被人下载或篡改了。你没必要担忧这样你的程序会没法读取和写入你的 Access 数据库。你的程序须要的是 NTFS 上 Internet 来宾账号或 IIS_WPG 组账号的权限,你只要将这些用户的权限设置为可读可写就彻底能够保证你的程序可以正确运行了。
剑心总结:Internet 来宾账号或 IIS_WPG 组账号的权限可读可写.那么Access所在目录(或者该文件)的“读取”、“写入”权限都去掉就能够防止被人下载或篡改了

例4 —— 其它目录的权限设置:
你的网站下可能还有纯图片目录、纯 html 模版目录、纯客户端 js 文件目录或者样式表目录等,这些目录只须要设置“读取”权限便可,执行权限设成“无”便可。其它权限一律不须要设置。
php

-----------------------------------------------------我是分割线------------------------------------------------------html

首先要有这样的思路:2000对应iis5.0 ,xp对应iis5.1 ,2003对应iis6.0web

配置 Web 权限
 如下是根据发布的材料的用途来配置 Web 权限的各类方法:
  • 启用读取、写入和目录浏览:启用这些权限容许客户端查看资源列表并进行修改(除非对这些资源没有写入权限)、发布本身的资源以及处理文件。

 

  •  启用写入;并禁用读取和目录浏览: 若是只想让客户端在目录中发布私人信息,而不但愿别人查看所发布的内容,能够设置写入权限,但不设置读取和目录浏览权限。该配置在客户端端提交选票或性能检查时很是有用。

 

  •  启用读取和写入;并禁用目录浏览:若是但愿经过隐藏文件名来提升安全性,可设置该配置。然而,请注意,经过隐藏文件名来设置安全性是一种低级的安全防范措施,由于一个故意破坏 者可经过试探和错误信息来猜想出文件名。
  •  启用索引资源:若是打算让客户端搜索目录资源,请确保启用了索引服务。

 

 

保护脚本代码
若是在发布目录中有一些不想让客户端看到的脚本文件,您能够经过不授予“脚本资源访问”权限来拒绝访问。可执行文件将做为静态 HTML 文件处理,除非为该目录启用了“脚本和可执行文件”。
要阻止 .exe 文件下载并做为 HTML 文件来查看,但容许其运行,可在发布目录的“虚拟目录”属性页中,将执行权限更改成“脚本和可执行文件”。
这一权限级别使全部可执行文件受“脚本资源访问”设置的影响。换句话说,若是选中了“脚本资源访问”,有读取权限的客户端能够看到全部的可执行文件;有写入权限的客户端既可运行它们,也能够编辑它们。
使用下面的权限,客户端能够在未出如今应用程序映射中的可执行文件中写入信息:
  •  已授予写入权限。
  •  执行权限设置为“纯脚本”。
使用下面的权限,客户端能够向任何可执行文件中写入信息,不论它们是否出如今应用程序映射中:
  •  已授予“脚本资源访问”权限。
  •  执行权限设置为“脚本和可执行文件”。
让咱们打开一个IIS服务器来看看。在IIS 服务管理器中,选择一个目录,看他的属性,在目录属性项有有这么一些选项(日志访问和索引此资源不计):
  • 脚本资源访问: 对网站的脚本能够读取原文件。
  • 读取      读取目录里面的静态资源。
  • 写入      用户能够创建以及删除资源
  • 目录浏览    用户能够浏览目录内容。
  • 应用程序设置的执行许可中有三个选项:
  • 无        只能访问静态页面
  • 纯脚本       只容许容许脚本 如ASP脚本
  • 脚本和可执行程序  能够访问和执行各类文件类型
那么,如何肯定服务器上面的这些开关设置呢? 别着急,一个一个来。
 

执行权限数据库

    如何肯定某个目录是否开了执行权限呢?很简单,向服务器发送一个下面得请求:
http://iis-server/dir/no-such-file.dll     /dir/为要判断得目录,no-such-file.dll是随便取得一个名字,服务器上面没有这个文件。 
服务器对咱们得请求会返回一个信息。若是返回的是一个500错误: 
  HTTP 500 - 内部服务器错误 (Internal Server error) :那么就说明这个目录的执行权限是开着的。 对于服务器,能不开执行权限的就不要开。特别是虚拟目录的执行权限,你们想想UNICODE和二次解码漏洞的利用过程就明白了。 
    HTTP 404 - 未找到文件,那么就说明这个目录的执行权限没有开。
 
写权限 
  测试一个目录对于web用户是否具备写权限,采用以下方法:
telnet 到服务器的web端口(80)并发送一个以下请求:
  PUT /dir/my_file.txt HTTP/1.1
Host: iis-server
Content-Length: 10 <enter><enter>
这时服务器会返回一个100( 继续)的信息:
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Thu, 28 Feb 2002 15:56:00 GMT
接着,咱们输入10个字母:
 AAAAAAAAAA
送出这个请求后,看服务器的返回信息,若是是一个 201 Created响应:
HTTP/1.1 201 Created
Server: Microsoft-IIS/5.0
Date: Thu, 28 Feb 2002 15:56:08 GMT
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND,
PROPPATCH, SEARCH, LOCK, UNLOCK
那么就说明这个目录的写权限是开着的,反之,若是返回的是一个 403 错误,那么写权限就是
没有开起来,若是须要你认证,而且返回一个 401(权限禁止) 的响应的话,说明是开了写权限,可是匿名用户不容许。 若是一个目录同时开了”写”和“脚本和可执行程序”的话,那么web用户就能够上传一个程序而且执行它,恐怖哦%^#$!~
 
纯脚本执行权限
  这样的目录就太多了。不少不须要给执行权限的目录也被管理员给了脚本执行权限,我记得在
shotgun的一篇文章里面他说过:最小的权限+最少的服务= 最大的安全 ; 一点也没有错。给目录任何多余的权限都是没有必要的。判断一个目录是否能够执行纯脚本文件也很简单,发送一个以下一个请求: 
  
http://iis-server/dir/no-such-file.asp  返回404文件不存在说明有执行权限,返回403则是没有开。
 
浏览目录权限
  判断一个目录是否容许浏览可能须要一点点小技巧,可是,在网站的默认首页(如:default.asp)不存在的话,那么就再简单不过了。 在浏览器里面输入:
若是权限开着的,那么会返回200响应,而且列出当前目录里面的内容,反之,没有列出目录的话就是关了。 可是,若是默认页面default.asp存在呢?敲入上面的地址就直接打开这个页面了。别急,
WebDAV 里面有一个请求方法叫:PROFIND。这个方法使得咱们能够从服务器资源里面获得一些如文件名,建立时间,最后修改时间等等的信息。利用它咱们也能够绕 过 default.asp 来判断目录浏览权限的状况, telnet到IIS-server的web端口,发送以下请求:
  PROPFIND /dir/ HTTP/1.1
Host: iis-server
Content-Length: 0
这 时,服务器会送回一个207 Multi Status的响应,若是目录是容许浏览的,那么同时会列出目录里面的资源以及他们的属性。若是目录浏览不容许,返回的信息就会少的多。目录浏览通常来讲 只能算是一个低危险等级的漏洞,好比一个images目录,里面除了图片没有别的东西了,那对于服务器的安全就没有什么危害,可是,若是目录里面放了一个 管理页面adminpage.asp或者一些数据库链接信息文件,可能会致使你的服务器拱手相让给入侵者。
读权限
 
 判断这点很容易,发一个带 txt文件的请求就能够:
http://iis-server/dir/no-such-file.txt  若是返回一个 404 文件不存在的响应,就说明读权限是开着的,反正,返回403错误则说明都权限没有开。早几年接触安全的人必定知道 ::$DATA泄露ASP源代码的漏洞,其实若是一个目录里面权势asp脚本的话,那么读权限也能够不用开的,ASP只须要脚本执行权限就能够了。
默认应用程序映射判断 
判断默认映射是否存在比较简单,这里只简单的给出了在映射存在的状况下对于相应请求的响应: 
扩展名:  .printer 
请求: 
http://iis-server/foo.printer  
响应:  HTTP 500 - 内部服务器错误 
扩展名:.idc 
请求: 
http://iis-server/foo.idc  
响应: code 500 Internal Server Error 
扩展名:.idq 
请求: 
http://iis-server/foo.idq  
响应码:200 OK 
响应: 找不到 IDQ 文件 D:\dir\\foo.idq
扩展名:.ida 
请求: 
http://iis-server/foo.ida  
响应码:200 OK 
响应: 找不到 IDQ 文件 D:\dir\foo.ida
扩展名:.htr 
请求: 
http://iis-server/foo.htr  
响应: HTTP 404 - 未找到文件 
扩展名:.htw 
请求: 
http://iis-server/foo.htw
响应码: 200 OK 
响应: QUERY_STRING 的格式无效 
扩展名:.stm 
请求: 
http://iis-server/foo.stm  
响应: HTTP 404 - 未找到文件 
扩展名:.shtm 
请求: 
http://iis-server/foo.shtm  
响应:  HTTP 404 - 未找到文件 
扩展名:.shtml

响应: HTTP 404 - 未找到文件 
判断操做系统是否为我的版本(Professional/Workstation )
IIS安装在windows上面时候,同时进行的链接数最大为10个,利用这一点咱们能够简单判断操做系统版本:建立10个 HTTP 1.1的持续链接,第11个链接请求将放回403错误信息。
相关文章
相关标签/搜索