将“网络服务”帐户添加到管理员组

7
我的Web应用程序在Windows Server 2003下的IIS 6.0中运行,我们都知道,在这种情况下,IIS使用用户帐户“Network Service”。
我需要允许某些用户在我的网页上执行某些操作,并且该操作需要管理员特权。
对我来说,最懒的解决方案似乎是将“Network Service”添加到Administrators组中,它实际上也起作用了。
我的问题是,这种解决方案有多危险?它会以何种方式危及我的Web服务器的安全性?

1
可能有一些比那更危险的事情可以做。但我怀疑。 - SLaks
3个回答

6
这通常是“一个坏主意”。如果这是一个面向公众的服务器,那么这真的是一个非常糟糕的主意。
你应该做的是,像我们处理这类问题一样,在另一个进程中沙盒化需要执行的特定管理员任务,例如具有提升权限的Windows服务。
然后,我们在Windows服务中托管一个Remoting服务器,并通过命名管道或TCP/IP(如果是机器与机器之间,且这是在后端私有网络上)与服务通信。
有关更多信息,请参见我为另一个用户留下的有关类似问题的答案:

仅执行IIS7配置的Windows用户帐户

甚至更好的方法是永远不要直接在Web应用程序和Windows服务之间进行通信,而是通过作业或消息队列等中介进行通信。 低权限应用程序发出执行管理员任务的请求,高权限服务从队列中读取这些任务并执行它们。
在两种情况下,您都应确保不超出每个任务的责任范围。 也就是说,确保如果任务是在服务器上创建新的Windows帐户,则不允许该新帐户获得比其所需更多的权限。

2
如果我要编写一些需要盒级管理员的Web功能,我会将其作为独立应用程序放在自己的应用程序池中,并尽可能地限制该应用程序的权限。如果在Active Directory上,则为该应用程序池提供命名帐户(域资源),然后为该帐户授予盒子上的管理员权限。将其保留在自己的应用程序池中有效地将其锁定,使其与常规应用程序分开。
NT Authority / Network Service 与机器上的许多内容进行交互。我无法想出任何获得Network Service管理员权限的好理由。

2

绝不要这样做。

如果您将Network Service添加到管理员组中,则所有匿名用户访问您的Web应用程序时都将默认成为管理员,潜在的损害巨大。

根据您的问题

我必须允许某些用户在我的网页上执行某些操作,而该操作需要管理员权限。

那很好-在该网页上使用Windows身份验证,并将用户设置为普通的Windows管理员。现在他们和所有其他管理员都可以执行您设置的任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接