您的位置:首页 > 其它

IIS7.5安全配置研究

2015-08-28 02:43 441 查看


0x00 测试环境

操作系统:Windows Server 2008 R2 Enterprise Service Pack 1 x64 IIS版本:IIS7.5 程序:asp.net


0x01 IIS7.5的安装



http 常见功能:开启静态内容,默认文档,HTTP错误;目录浏览,WebDAV发布如无特殊要求,不要开启;HTTP重定向可根据需要开启。

应用程序开发:这个可根据实际情况开启,如为asp.net的开启ASP.NET,.NET扩展性,ISAPI扩展,ISAPI筛选;在服务器端的包含文件根据需要开启。

健康和诊断:建议开启HTTP日志记录,日志记录工具,请求监视;其他可根据需要开启。

安全性:建议开启URL授权,请求筛选,IP和域限制;其他根据需要开启。

性能,管理工具,ftp服务器,IIS可承载的Web核心可根据开启。


0x02 IIS7.5权限配置介绍

IIS7.5涉及两个账户,一个为匿名账户,一个为应用程序池账户。在磁盘的NTFS权限设置中,匿名账户只需要拥有对网站目录的读取权限即可;而应用程序池账户需要根据程序实际情况给予相应权限,比如:需要去写文件,则要给予写权限,需要去调用一个程序(如cmd.exe)则需要给予执行权限。总之,对文件的访问,首先需要有匿名账户的访问权限,然后再根据程序的操作需要什么样的权限给予应用程序池账户相应的权限。


研究发现的几个基本问题:

1. 上传目录的写入权限由应用程序池账户决定;
2. 应用程序池默认对于的账户为IIS APPPOOL\{app pool name},且属于IIS_IUSRS组;
3. 默认的匿名账户为IUSR账户,且属于authenticated users 组;
4. 任何用户都属于USERS组,且手工删除后仍然属于USERS组;
5. 上传木马之后,能够看到的目录是由应用程序池账户决定的;
6. 在此测试环境下,USERS组默认拥有网站目录的写入权限;
7. 一个aspx文件的运行跟NTFS的运行权限无关;
8. 对于网站的匿名账户只需要对网站目录有读取权限;
9. 应用程序池账户运行aspx也只需要读取权限,但是如果要写文件需则写权限,要执行其他程序则需要执行权限;


0x03 常见服务器被入侵威胁及解决措施


常见服务器入侵威胁:

1. webdav直接上传webshell
2. 通过程序文件上传漏洞上传webshell
3. webshell的权限过高导致被提权


解决常见问题措施:


1. 解决webdav问题

在安装的时候直接不安装webdav组件


2.防止上传的木马文件执行

可以在IIS中设置需要上传文件的目录,处理程序映射中的编辑功能权限中的脚本去掉,这样即使上传了木马文件在此目录,也是无法执行的。



上传目录取消应用程序池账户的执行权限




3. 防止木马执行后看到网站目录之外的文件

可以设置进程池账户对其他文件夹无读取权限。


4. 防止木马执行后可执行cmd

取消进程池账户的NTFS执行权限。


5. 防止木马执行后运行cmd权限过高

进程池账户选择权限较低的账户,最好就是默认的账户。


0x04 推荐安全配置方案


安全配置简单配置:


1. 匿名账户使用默认的IUSR。




2. 应用程序池使用默认的标识,对于的账户为IIS AppPool\应用程序池名称。




3.IIS中对上传目录设置为脚本不可执行




加强安全配置:

1. 匿名账户使用默认的“应用程序用户”也就是对应的IUSR。
2. 应用程序池账户使用默认的IIS AppPool\应用程序池名称。
3. 删除everyone,users在所有磁盘上的权限。
4. 删除users在system32上的所有权限(需要先修改所有者为administrator)。
5. 在网站目录下给予IUSR读取权限。
6. 在网站目录下给予IIS AppPool\应用程序池名称读取权限,如果程序中有特殊要求的权限,如写入文件等,则再对应的目录下给予相应的权限,如写入权限。
7. 在网站要求的上传目录给予IIS AppPool\应用程序池名称写入权限,但是不给予执行权限。
8. 在IIS中取消上传目录的脚本执行权限。


注意:

以上两种配置均使用默认的应用程序池账户,如果自定义,最好是将自定义加入IIS_IUSRS组。
IIS7.5中建立多个站点的时候,如果使用默认的应用程序池账户,系统会默认产生如IIS AppPool\各个不同的应用程序池名称。
Asp.net程序在第一次访问编译的时候,应用程序池账户需要拥有system32文件夹的读取和执行权限


0x05 疑问

在测试过程中发现,访问aspx程序,如果匿名账户为自定义的账户,则需要给自定义的匿名账户在文件夹
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary
ASP.NET Files
上的写入权限;但是,如果使用默认的匿名账户,也就是IUSR时,需要给予应用程序池账户在此文件夹上的写入权限。疑问点在于此文件夹到底是需要哪个账户的写入权限,因为选择默认的匿名账户时,即时禁止IUSR在此文件的写入权限,只要应用程序池账户在此文件夹有写权限,一样运行正常?

当匿名用户为程序默认的时候,应该就是IUSR,但为什么又传递的进程池账户?

注:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files 这个目录不需要赋予IUSR权限,但需要IIS_IUSRS组的权限

=============================================================================================

一、这样配置的好处?

不知大家有没有听过旁注?我简单的解释一下吧:有个人想黑掉A站点,但找来找去都没发现可利用的漏洞,无意中他发现与A同服务器上还有个B站点,并且在B站点上找到了可利用的漏洞,于是他将木马从B站中上传至服务器,如果服务器权限配置不当,那么现在他就可以黑掉服务器上的所有站点了!如果我们为每个站点都建立一个用户,并设置该用户只有访问本站点的权限,那么就能将访问权限控制在每个站点文件夹内,旁注问题也就解决了。

二、准备工作

1、运行环境:Win2K 服务器版 + IIS 5.0

2、文件系统:各分区文件系统为NTFS

3、站点文件夹:E盘下建立两个文件夹web001和web002

4、新建站点:IIS中新建两个站点web001和web002,站点文件夹分别为E:\web001和E:\web002,都指定IP为192.168.0.146,端口分别为101和102。





OK,在IE中分别输入http://192.168.0.146:101和http://192.168.0.146:102测试两站点是否建立成功。

三、配置过程

1、建立用户组和用户

新建一用户组webs,以后所有站点用户全部隶属于该组,以便于权限分配。





建立用户web01,注意要钩选"密码永不过期"(否则背后会出现"HTTP 401.1 - 未授权:登录失败"),并设置其只隶属于webs用户组。同样在建一个用户web02。









2、各分区NTFS权限设置

打开各分区的安全选项卡依次给各分区授于administrator和system完全控制权限,并设置webs组完全拒绝权限。





3、站点文件夹NTFS权限设置

打开E:\web01文件夹属性窗口,选择安全选项卡,先去掉"允许将来自父系的可继承权限传播给该对象"前的钩,经弹出的对话框中选择删除继承权限。





最终确保administrator、system和web01对该文件夹都有完全控制权限。





E:\web02文件夹也一样设置。

4、设置各站点的匿名访问用户

在IIS中打开web01站点属性,选择目录安全性→匿名访问和验证控制→编辑,去掉"集成Windows验证"前的钩,再编辑匿名访问使用的帐号,设置匿名访问帐号为web01(web02站点也一样设置)。









四、测试

将老兵写的站长助手放至web02站点中进行测试,经测试除站点文件可以浏览外,其他分区均不能访问。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: