[新手教程]IIS下的相关安全的设置

2010/6/10

     在windows 2003 系统里,如何建立多个站点,且互相用独立用户访问,权限隔离好,需要按以下步骤建立。

     首先删掉c:/inetpub目录,删除iis不必要的映射

     这里重点是每一个web站点使用单独的IIS用户,譬如这里,新建立了一个名为www.315safe.com ,权限为guest的。



 

在IIS里的站点属性里“目录安全性”---“身份验证和访问控制“里设置匿名访问使用下列Windows 用户帐户”的用户名密码都使用www.315safe.com 这个用户的信息.在这个站点相对应的web目录文件,默认的只给IIS用户的读取和写入权限(后面有更BT的设置要介绍)。

 




    在“应用程序配置”里,我们给必要的几种脚本执行权限:ASP.ASPX,PHP,

ASP,ASPX默认都提供映射支持了的,对于PHP,需要新添加响应的映射脚本,然后在web服务扩展将ASP,ASPX都设置为允许,对于php以及CGI的支持,需要新建web服务扩展,在扩展名(X):下输入 php ,再在要求的文件(E):里添加地址 C:\php\sapi\php4isapi.dll ,并勾选设置状态为允许(S)。然后点击确定,这样IIS就支持PHP了。支持CGI同样也是如此。



    要支持ASPX,还需要给web根目录给上users用户的默认权限,才能使ASPX能执行。


     另外在应用程序配置里,设置调试为向客户端发送自定义的文本信息,这样能对于有ASP注入漏洞的站点,可以不反馈程序报错的信息,能够避免一定程度的攻击。




    在自定义HTTP错误选项里,有必要定义下譬如404,500等错误,不过有有时候为了调试程序,好知道程序出错在什么地方,建议只设置404就可以了。



   

     IIS6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,



     可以在每天凌晨的时候回收一下工作进程。

 



 


       新建立一个站,采用默认向导,在设置中注意以下几个地方:

       在应用程序设置里:执行权限为默认的纯脚本,应用程序池使用独立的名为:315safe的程序池。



 

 

     名为315safe的应用程序池可以适当设置下“内存回收”:这里的最大虚拟内存为:1000M,最大使用的物理内存为256M,这样的设置几乎是没限制这个站点的性能的。

 

    

      在应用程序池里有个“标识”选项,可以选择应用程序池的安全性帐户,默认才用网络服务这个帐户,大家就不要动它,能尽量以最低权限去运行大,隐患也就更小些。在一个站点的某些目录里,譬如这个“uploadfile"目录,不需要在里面运行asp程序或其他脚本的,就去掉这个目录的执行脚本程序权限,在“应用程序设置”的“执行权限”这里,默认的是“纯脚本”,我们改成“无”,这样就只能使用静态页面了。依次类推,大凡是不需要asp运行的目录,譬如数据库目录,图片目录等等里都可以这样做,这样主要是能避免在站点应用程序脚本出现bug的时候,譬如出现从前流行的upfile漏洞,而能够在一定程度上对漏洞有扼制的作用。

 


 

      在默认情况下,我们一般给每个站点的web目录的权限为IIS用户的读取和写入,如图:


      但是我们现在为了将SQL注入,上传漏洞全部都赶走,我们可以采取手动的方式进行细节性的策略设置。

      1.  给web根目录的IIS用户只给读权限。如图:



     然后我们对响应的uploadfiles/或其他需要存在上传文件的目录额外给写的权限,并且在IIS里给这个目录无脚本运行权限,这样即使网站程序出现漏洞,入侵者也无法将asp木马写进目录里去,呵呵, 不过没这么简单就防止住了攻击,还有很多工作要完成。如果是MS-SQL数据库的,就这样也就OK了,但是Access的数据库的话,其数据库所在的目录,或数据库文件也得给写权限,然后数据库文件没必要改成.asp的。这样的后果大家也都知道了把,一旦你的数据库路径被暴露了,这个数据库就是一个大木马,够可怕的。其实完全还是规矩点只用mdb后缀,这个目录在IIS里不给执行脚本权限。然后在IIS里加设置一个映射规律,如图:




     这里用任意一个dll文件来解析.mdb后缀名的映射,只要不用asp.dll来解析就可以了,这样别人即使获得了数据库路径也无法下载。这个方法可以说是防止数据库被下载的终极解决办法了。