iis配置权限的问题

来源:互联网 发布:程序员的素质要求 编辑:程序博客网 时间:2024/04/27 14:05

如果Web服务器的权限没有设置好,那么网站就会出现漏洞并且很可能会出现被不怀好意的人黑掉的情况。我们不应该把这归咎于   IIS   的不安全。如果对站点的每个目录都配以正确的权限,出现漏洞被人黑掉的机会还是很小的(Web   应用程序本身有问题和通过其它方式入侵黑掉服务器的除外)。下面是我在配置过程中总结的一些经验,希望对大家有所帮助。
  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   文件目录或者样式表目录等,这些目录只需要设置“读取”权限即可,执行权限设成“无”即可。其它权限一概不需要设置。
  上面的几个例子已经包含了大部分情况下的权限设置,只要掌握了设置的基本原理,也就很容易地完成能其它情况下的权限设置
  HTTP错误401   -   您未被授权查看该页   在配置IIS的时候,如果安全稍微做的好一些。就会出现各式各样的问题。比如,常见的访问网页会弹出用户名密码的登陆界面,或者是访问某种页面比如html,asp没事情,但是访问jsp或者php就有问题,显示401.3   ACL   禁止访问资源等   通常的解决办法是。

1、错误号401.1 
症状:HTTP   错误   401.1   -   未经授权:访问由于凭据无效被拒绝。 
分析: 
由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。 
解决方案: 
  (1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用: 
控制面板- >管理工具- >计算机管理- >本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。 
  (2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限: 
开始- >程序- >管理工具- >本地安全策略- >安全策略- >本地策略- >用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。 
注意:一般自定义 IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。

2、错误号401.2 
症状:HTTP   错误   401.2   -   未经授权:访问由于服务器配置被拒绝。 
原因:关闭了匿名身份验证 
解决方案: 
运行inetmgr,打开站点属性- >目录安全性- >身份验证和访问控制- >选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后确定。

3、错误号:401.3 
症状:HTTP   错误   401.3   -   未经授权:访问由于   ACL   对所请求资源的设置被拒绝。 
原因:IIS匿名用户一般属于Guests组,而我们一般把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,导致IIS匿名用户访问该文件的NTFS权限不足,从而导致页面无法访问。 
解决方案: 
给IIS匿名用户访问网站文件夹的权限,方法:进入该文件夹的安全选项,添加IIS匿名用户,并赋予相应权限,一般是读、写。

原创粉丝点击