Apache Web 服务器是高度可定制的,可以通过多种方式进行配置以满足我们的需求。我们还可以使用许多第三方模块来配置 Apache。
ModSecurity 是 Apache 网络服务器原生的开源 WAF(Web 应用程序防火墙)。它最初只是一个 Apache 模块,但现在已经发展成为一个成熟的 Web 应用程序防火墙。
ModSecurity 根据一组预定义的规则,来检查网络服务器的传入请求。通常,它提供一组称为 CRS(核心规则集)的规则,用于保护网站免受 Web 应用程序攻击,例如 SQL 注入、XSS 和会话劫持等攻击。
ModSecurity 应用程序防火墙是 PCI DSS合规性的组成部分,可保护网站免受外部攻击。启用该模块后,它会触发“ 403 Forbiden Error ”,这仅表示您没有足够的权限访问网络服务器上的资源。
在本文中,我们将向大家介绍如何在Debian和Ubuntu Linux上配置 ModSecurity 以与 Apache一起使用。
第 1 步:在 Ubuntu 上安装 ModSecurity
第一步是安装 ModSecurity。我们将首先刷新包列表,如下所示:
$ sudo apt update
接下来,将 ModSecurity 包与其他依赖项和库一起安装。
$ sudo apt install libapache2-mod-security2
之后,启用该模块。
$ 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
保存更改并退出文件。
要在 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
然后重新启动 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 ”标签设置为任何想要的值。
然后重新启动 Apache 网络服务器,以应用对虚拟主机配置文件所做的更改。
$ sudo systemctl restart apache2
在浏览器上尝试访问最后显示的 URL ?testparam=test
。
http://server-ip/?testparam=test
将会收到“403 禁止错误”,表明已被阻止访问该资源。
可以通过查看错误日志进一步确认客户端被阻止,如下所示。
$ cat /var/log/apache2/error.log | grep “Test Successful”
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-set-up-modsecurity-with-apache-on-debian-ubuntu/