我有一个 asp.net Web 应用程序,作为网站的内容管理系统运行。
它最初位于 IIS6 服务器上。但是,Web 应用程序最近被移至 II7 服务器。移动后,我的 CMS 系统不再工作,因为我收到了一条错误消息:
拒绝访问路径“C:\inetpub\SITEFOLDER\FILENAME”。
每次我在 CMS 系统中保存页面时,我都需要写入服务器上的 aspx 文件以及更新服务器上的 web.sitemap 文件。
我比较了两台服务器之间的文件权限,发现旧的 IIS6 服务器对“网络服务”用户的 inetpub 文件夹具有写/修改权限,并且该权限也适用于服务器上的所有站点文件。
新服务器没有在 inetpub 文件夹上设置具有写入/修改权限的“网络服务”。这显然是我的 CMS 系统无法在新服务器上运行的原因。
当然,解决方案是在新服务器上设置 Inetpub 文件夹的写入/修改权限,以便 ASP.NET 具有适当的权限来写入和修改站点内的任何文件。
我的问题是,这在生产 Web 服务器上是否是一种例外解决方案。允许网络服务对 inetpub 文件夹具有写入/修改权限是否会造成任何安全漏洞?我知道授予 IUSER 对整个 inetpub 文件夹的写入/修改权限可能会导致安全问题,您必须小心为 IUSER 授予哪些文件的写入权限,我只是不知道同样的规则是否适用于“网络服务”用户。
答案1
在 IIS 7.5 中,默认情况下使用 applicationpoolidentity(又名 i_AppPoolName)。我不会授予写入权限,而只会授予支持您的应用程序所需的文件夹的权限。网络服务是 IIS 6 中的默认帐户,但并不是最佳帐户。MS 在 7.x 中进行了更改。
'请注意,默认应用程序池名称应更改为您拥有的任何名称。ICACLS C:\inetpub\wwwroot /grant "IIS AppPool\DefaultAppPool":(M)
您可以从 r2/iis 7.5 中的 GUI 执行此操作
另一个选项是授予 IIS_IUSRS 组修改权限,上面的应用程序池命令行是最安全的。我只是不会授予所有文件夹的修改权限。就我个人而言,我使用 IIS_IUSRS 权限架构,因为我的服务器不是共享托管服务器。