-1

我想将 mod_security 设置为保护 Tomcat 实例免受 Web 应用程序攻击的独立实例。有谁知道通过将 mod_security 安装为 Apache 模块而不是在反向代理上安装 mod_security 这样做的利弊?有没有人以这两种方式实现 mod_security ?如果是这样,一个比另一个更受欢迎吗?

4

2 回答 2

0

你的两个选项真的没有区别。你会在什么非反向代理上安装模块来保护 Tomcat?

于 2015-08-14T16:40:10.143 回答
0

这个问题真的没有意义,因为它们对你来说都是一样的。

如果您已经有 Apache 服务器,那么您可以通过以下两种方式之一安装 ModSecurity:

  1. 在嵌入式模式下,通过将 ModSecurity 作为模块安装在您已经拥有的现有 Apache 实例中。优点是您不必设置单独的 Apache 实例,并且 ModSecurity 将可以访问 Apache 运行的环境(因此可以查看环境变量或登录到相同的日志文件)。

  2. 在反向代理模式下。这涉及设置一个单独的 Apache 实例,仅在其上使用 ModSecurity,并通过它汇集所有请求,然后将请求发送到您的普通 Apache。这里的优点是专门用于 ModSecurity 的 Web 服务器,因此如果现有版本的 Apache 已经资源匮乏,您将不会与它共享资源。缺点是它会使您的基础架构和带来的复杂性增加一倍。

我个人更喜欢选项1。

但是,由于您想在 TomCat 前面设置一个专用的 Web 服务器,这两个选项对您来说是相同的。您设置的新 Apache(或 Nginx)实例将以嵌入式模式运行,并将充当 Tomcat 服务器的反向代理。

就我个人而言,我一直认为最好在任何应用服务器(如 Tomcat)之前运行像 Apache 这样的专用 Web 服务器——尤其是在面向公众的网站上。诚然 Tomcat 确实包含一个非常好的 Web 服务器(称为 Coyote),它可以满足您的大部分 Web 服务器需求,但是像 Apache 这样的专用 Web 服务器更适合于提供静态内容,并包含其他性能和安全特性,使其成为更好的端点服务器(例如,包括运行 ModSecurity 的能力!)。

为了以防万一,Apache 实际上是 Apache HTTP Server 的缩写,有时在它运行的进程之后被称为 Apache httpd。它是 Apache 最受欢迎的软件,因此名称被缩短,但 Apache 实际上有很多软件(包括 Apache Tomcat - 通常简称为 Tomcat)。

于 2015-09-07T17:31:06.693 回答