如何在 Debian/Ubuntu 上为 Apache 安装和配置 ModSecurity

Apache Web 服务器是高度可定制的,可以通过多种方式进行配置以满足我们的需求。我们还可以使用许多第三方模块来配置 Apache。

ModSecurity 是 Apache 网络服务器原生的开源 WAFWeb 应用程序防火墙)。它最初只是一个 Apache 模块,但现在已经发展成为一个成熟的 Web 应用程序防火墙。

ModSecurity 根据一组预定义的规则,来检查网络服务器的传入请求。通常,它提供一组称为 CRS核心规则集)的规则,用于保护网站免受 Web 应用程序攻击,例如 SQL 注入、XSS 和会话劫持等攻击。

ModSecurity 应用程序防火墙是 PCI DSS合规性的组成部分,可保护网站免受外部攻击。启用该模块后,它会触发“ 403 Forbiden Error ”,这仅表示您没有足够的权限访问网络服务器上的资源。

在本文中,我们将向大家介绍如何在DebianUbuntu Linux上配置 ModSecurity 以与 Apache一起使用。

第 1 步:在 Ubuntu 上安装 ModSecurity

第一步是安装 ModSecurity。我们将首先刷新包列表,如下所示:

$ sudo apt update

接下来,将 ModSecurity 包与其他依赖项和库一起安装。

$ sudo apt install libapache2-mod-security2
在 Ubuntu 上安装 ModSecurity
在 Ubuntu 上安装 ModSecurity

之后,启用该模块。

$ sudo a2enmod security2

然后重新启动 Apache 网络服务器以应用更改。

$ sudo systemctl restart apache2

至此,ModSecurity 已安装成功。现在我们要简单配置一下。

第 2 步:在 Ubuntu 中配置 ModSecurity

默认情况下,ModSecurity 仅配置为检测和记录可疑活动。我们需要通过额外的步骤,将其配置为不仅可以检测而且还可以阻止可疑活动。

将默认的 ModSecurity 配置文件 – modsecurity.conf-recommended – 复制到新的配置文件中。

$ sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

使用可用的文本编辑器,打开该文件:

$ sudo nano /etc/modsecurity/modsecurity.conf

找到下面的行:

SecRuleEngine DetectionOnly

将其设置为:

SecRuleEngine On
在 Ubuntu 上配置 ModSecurity
在 Ubuntu 上配置 ModSecurity

保存更改并退出文件。

要在 Apache 中应用更改,请重新启动网络服务器。

$ sudo systemctl restart apache2

第 3 步:下载 OWASP ModSecurity 核心规则集

下一步是从 GitHub 页面下载最新的 OWASP ModSecurity Core Rule Set (CRS) 。

如下所示,克隆 OWASP git 存储库。

$ git clone https://github.com/coreruleset/coreruleset.git

导航到目录。

$ cd coreruleset/

确保将 crs-setup.conf.example 文件移动到 modsecurity 目录,并将其重命名为 crs-setup.conf

$ sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

此外,将规则目录移动到 modsecurity 目录。

$ sudo mv rules/ /etc/modsecurity/

接下来,编辑 security2.conf 文件。

$ sudo nano /etc/apache2/mods-enabled/security2.conf

确保它包含以下行。

IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
在 Ubuntu 上配置 ModSecurity 规则
在 Ubuntu 上配置 ModSecurity 规则

然后重新启动 Apache

$ sudo systemctl restart apache2

现在,让我们测试 ModSecurity 配置。

第 4 步:在 Ubuntu 上测试 ModSecurity 配置

最后,我们需要测试 ModSecurity 是否可以检测和阻止可疑的 HTTP 流量。为此,我们需要编辑默认的虚拟主机文件。

$ sudo nano /etc/apache2/sites-available/000-default.conf

接下来,我们将创建一个阻止规则,该规则将在 Web 浏览器访问时阻止对特定 URL 的访问。

将下面的行添加到“ Virtualhost ”结束标记之前的位置。

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"

随意将“ id ”和“ msg ”标签设置为任何想要的值。

在 Ubuntu 上测试 ModSecurity
在 Ubuntu 上测试 ModSecurity

然后重新启动 Apache 网络服务器,以应用对虚拟主机配置文件所做的更改。

$ sudo systemctl restart apache2

在浏览器上尝试访问最后显示的 URL ?testparam=test

http://server-ip/?testparam=test

将会收到“403 禁止错误”,表明已被阻止访问该资源。

ModSecurity 403 禁止错误
ModSecurity 403 禁止错误

可以通过查看错误日志进一步确认客户端被阻止,如下所示。

$ cat /var/log/apache2/error.log | grep “Test Successful”
检查 Apache 日志
检查 Apache 日志

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-set-up-modsecurity-with-apache-on-debian-ubuntu/

(0)
牛奇网牛奇网
上一篇 2022年6月26日 上午10:12
下一篇 2022年6月28日 上午9:13

相关推荐

发表回复

登录后才能评论