如何使用IIS Web应用池保护你的企业

你能描述一下IIS Web应用池是怎样工作的吗?Web应用池怎样与企业的安全相关联,它是一个值得使用的功能吗?

在任何运行多个应用或站点的IIS Web服务器上,IIS的Web应用池都是一个值得实施的功能。因为它能将多个应用彼此隔离,即使它们位于同一个服务器上。它能提高服务器和运行在其上应用的整体可靠性,并且同样能用于提高安全性。

一个应用池是由按照URL定义的一个或多个应用构成的组,共享同样的工作进程。工作进程运行web站点。每个应用池拥有一个或多个工作进程。这些工作进程对于应用池来说是唯一的且不会跨应用池共享。

由于每个工作进程作为一个单独的实例运作,它提供了一个进程边界,使在应用池中的单个应用不会受到其它池问题的影响。如果某个应用崩溃或是内存泄漏,它不会影响到在其它应用池中的站点,因为每个应用池拥有自己的工作进程和服务器资源。

多个应用池能同时运行,根据资源使用率对其进行不同的配置,甚至可以在一段静止期后关闭直到再次需要它。CPU监控能预防某个站点耗尽服务器的CPU,且工作进程循环地更换应用在内存中的实例,这有助于让有问题的应用保持顺利地运行,同时减小问题的发生,比如内存泄漏。

多个应用池不仅增加了应用的可用性,它们还有助于安全性。例如,你可能想为需要更高安全级别的每个应用创建单独的应用池,同时允许需要较低安全级别的多个应用共享同一个应用池。这种类型的配置让你充分使用应用池的身份,这允许你以唯一的虚拟帐户来运行应用池,而不用必须创建和管理域或本地帐户,后者对于建立理想的特权访问级别来说通常是乏味和不适用的。

默认情况下,工作进程以本地的NetworkService帐户运行,它是在Windows中内建立的具有相对较低特权的身份。尽管以较低特权的帐户运行服务是一项好的安全实践,但许多Windows的系统服务同样使用这个帐户。任何以NetworkService身份运行的服务都可能访问它拥有的其它服务。一个IIS工作进程通常运行定制的代码如ASP.NET和PHP,它们应该通过使用不同的应用池身份来和其它的Windows系统服务分隔开来。

我当然推荐你定制应用池并使用不同的身份,从而实现根据你的特殊环境建立所需要的应用隔离程度。