IIS权限设置的安全相关设置

  现在很多人的服务器都开始用Apache平台,虽然Apache的名声可能比IIS好,但IIS来做Web服务器的人一定也不少,因为很多站长都是从asp慢慢走过来的,然后慢慢到php、jsp……
海天这几天搞一个cms的网站,但不知道用什么核心,网上找了下,貌似jtbc的程序二次开发的扩展性很大,于是就决定用这个核心了,但总不能老是上传到服务器上测试吧,于是自己在XP环境下安装搭建了一个IIS,来用作测试。

IIS简单的设置,海天原来也用过,但一直没深入了解每个选项是做什么用的,正好这次搭建后文件夹有一点权限的问题,就在网上找了一篇不错的文章,了解不少安全相关的设置。就比如打开网站所在文件夹的“写入”权限,和在IIS中控制面板打开写入权限,效果是截然不同的,后者直接能被黑客利用,可见权限设置还是很重要的啊。

IIS Web服务器的权限设置有两个地方,一个是NTFS文件系统本身的权限设置,另一个是IIS下网站->站点->属性->主目录(或站点下目录->属性->目录)的面板上。

IIS WEB服务器下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上有:脚本资源访问、读取、写入、浏览、记录访问、索引资源6 个选项。在这6个选项中,其中“记录访问”和“索引资源”跟安全性关系不大,一般可以设置。但如果前四个权限都没有设置的话,这两个权限也没有必要设置。在设置权限时,记住这个规则即可,后面的例子中不再特别说明这两个权限的设置。 
另外在这 6 个选项下面的执行权限下拉列表中还有:无、纯脚本、纯脚本和可执行程序3 个选项。


现在的网站目录大多是在NTFS分区,这样还需要对NTFS 分区上的这个目录的文件夹设置相应权限,许多地方都介绍设置使用everyone的权限来达到控制访问权限,实际上这是不好的。其实只要设置好Internet来宾帐号(IUSR_xxxxxxx)或IIS_WPG 组的帐号权限就可以了。如果是设置 ASP、PHP 程序的目录权限,那么只需要设置Internet 来宾帐号的权限,而对于ASP.NET 程序,则需要设置 IIS_WPG 组的帐号权限。 

有些人在XP系统下可能会发现没有“安全”设置选项,你只需要打开我的电脑-工具-文件夹选项-查看,将“使用简单文件共享(推荐)”这个选项的勾去掉,就可以了。

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 共享会给其更多权限,可能会造成不安全因素。  
总结:也就是说一般不要打开IIS控制面板下主目录的(写入),(脚本资源访问) 这两项,以及不要选上(纯脚本和可执行程序),选(纯脚本)就可以了。需要asp.net的应用程序的如果应用程序目录不止应用程序一个程序的可以在应用程序文件夹上(属性)-目录-点创建就可以了。不要在文件夹上选web共享。 

上传目录的权限设置: 
网站上可能会设置一个或几个目录允许上传文件,上传的方式一般是通过ASP、PHP、ASP.NET等程序来完成。这时需要注意,一定要将上传目录的执行权限(IIS控制面板下的)设为“无”,这样即使黑客上传了 ASP、PHP 等脚本程序或者exe程序,也不能在用户浏览器里就触发执行。 
同样,如果不需要用户用PUT指令上传,那么不要打开控制面板该上传目录的“写入”权限。而应该设置目录的NTFS权限中的Internet来宾帐号(ASP.NET 程序的上传目录是 IIS_WPG 组)的写权限。 
如果下载时,是通过网站程序读取文件内容然后再转发给用户的话,那么连IIS控制面板的“读取”权限也不要设置。这样可以保证用户上传的文件只能被网站程序中已授权的用户所下载。而不是知道文件存放目录的用户所下载。“浏览”权限也不要打开,除非你就是希望用户可以浏览你的上传目录,并可以选择自己想要下载的东西。 
总结:一些asp.php等程序都有一个上传目录。比如论坛,他们继承了上面的属性可以运行脚本的,我们应该将这些目录从新设置一下属性,将执行权限(纯脚本)改成(无)。 

Access数据库所在目录的权限设置: 
许多IIS用户常常采用将Access数据库的后缀名mdb改名(改为asp或者aspx等)或者放在发布目录之外的方法来避免浏览者下载数据库。而实际上,这是不必要的。其实只需要在IIS控制面板设置数据库所在目录(或者该文件)的“读取”、“写入”权限都去掉就可以防止被人下载或篡改了。
不必担心这样设置,网站程序会无法读取和写入你的 Access 数据库。网站程序需要的是NTFS 上Internet来宾帐号或IIS_WPG组帐号的权限,你只要将这些用户的权限设置为可读、可写就完全可以保证网站程序能够正确运行了。 
总结:NTFS设置Internet 来宾帐号或IIS_WPG组帐号的权限可读可写.那么IIS控制面板中数据库所在目录(或者该文件)的“读取”、“写入”权限都去掉就可以防止被人下载或篡改了。 

其它目录的权限设置: 
你的网站下可能还有纯图片目录、纯 html 模版目录、纯客户端 js 文件目录或者样式表目录等,这些目录只需要ISS控制面板设置“读取”权限即可,执行权限设成“无”即可。其它权限一概不需要设置。

其实,海天的理解就是:IIS控制面板设置的是访客在IE浏览器下浏览的权限,而NTFS文件夹设置是给网站程序执行时需要的权限。
还有其他需要注意的设置,大家知道的话补充下,让更多人多注意一下网站的安全。
对了,还有谁比较了解JTBC的,联系下,海天以后有问题去请教了。

你可能感兴趣的:(网络吧)