在CentOS 8上使用Apache配置LibModsecurity

在本指南中,我们将学习如何在CentOS 8上使用Apache配置LibModsecurity。 LibMosecurity 也称为ModSecurity版本3,是一个开源的跨平台Web应用程序防火墙(WAF)引擎,可提供针对各种Web应用程序攻击的保护。

在CentOS 8上使用Apache配置LibModsecurity

运行系统更新

首先更新系统软件包。

dnf update

安装所需的构建工具和依赖项

Nginx和LibModsecurity都将从源代码进行编译,因此需要许多构建工具和依赖项。运行以下命令以安装它们。

dnf config-manager --set-enabled PowerTools

安装其他存储库。

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf config-manager --set-enabled remi

安装所需的依赖项。

dnf install gcc-c++ flex bison yajl curl-devel curl zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config git wget openssl openssl-devel vim GeoIP-devel doxygen yajl-devel libmaxminddb libmaxminddb-devel GeoIP-devel lmdb lmdb-devel ssdeep-devel lua-devel

下载LibModsecurity源代码

创建一个临时目录来存储源tarball。

mkdir ~/modsec

您可以选择使用 /opt 代替。

导航 ModSecurity发布页面 并下载ModSecurity源代码。您可以简单地使用wget将其拉出。

cd ~/modsec
wget -P ~/modsec https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.4/modsecurity-v3.0.4.tar.gz

提取ModSecurity源代码。

cd ~/modsec
tar xzf modsecurity-v3.0.4.tar.gz

编译并安装LibModsecurity

导航到LibModsecurity源目录,配置,编译并安装它

cd modsecurity-v3.0.4

配置LibModsecurity使其适应您的系统,并检查是否缺少任何必需的依赖项。

./build.sh

您可以放心地忽略 致命的:找不到名字,无法描述任何东西 消息。

./configure

修复任何依赖关系问题,以防万一,您可以继续在CentOS上使用Apache编译和安装LibModsecurity时

编译并安装LibModSecurity。

make
make install

在CentOS 8上安装ModSecurity-Apache Connector

一旦完成LibModsecurity的安装,请继续安装ModSecurity-apache连接器,该连接器提供Apache与libModsecurity之间的通信通道。

克隆ModSecurity Apache连接器的git存储库。

cd ~
git clone https://github.com/SpiderLabs/ModSecurity-apache

导航到ModSecurity-apache目录,然后运行以下命令进行编译和安装。

cd ModSecurity-apache
./autogen.sh
./configure --with-libmodsecurity=/usr/local/modsecurity/
make
make install

在CentOS 8上使用LibModsecurity配置Apache

接下来,通过将以下行添加到主Apache配置文件中,配置Apache以加载Modsecurity Apache连接器模块。

echo "LoadModule security3_module /usr/lib64/httpd/modules/mod_security3.so" | sudo tee -a /etc/httpd/conf/httpd.conf

在下面创建ModSecurity配置目录 /etc/httpd/conf.d

mkdir /etc/httpd/conf.d/modsecurity.d

将示例ModSecurity配置文件从源代码目录复制到上面创建的ModSec配置目录中,重命名过程如下。

cp ~/modsec/modsecurity-v3.0.4/modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.d/modsecurity.conf

同时复制 unicode.mapping 文件从ModSecurity源目录到Apache Modsecurity配置目录。

sudo cp ~/modsec/modsecurity-v3.0.4/unicode.mapping /etc/httpd/conf.d/modsecurity.d/

通过更改的值激活ModSecurity SecRuleEngineOn

sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/httpd/conf.d/modsecurity.d/modsecurity.conf

更改Modsecurity的默认日志目录

sed -i 's#/var/log/modsec_audit.log#/var/log/httpd/modsec_audit.log#' /etc/httpd/conf.d/modsecurity.d/modsecurity.conf

通过创建一个文件来配置ModSecurity规则,您可以在其中定义要包括的规则。

vim /etc/httpd/conf.d/modsecurity.d/rules.conf
Include "/etc/httpd/conf.d/modsecurity.d/modsecurity.conf"
Include "/etc/httpd/conf.d/modsecurity.d/owasp-crs/crs-setup.conf"
Include "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/*.conf"

由于我们包含了OWASP规则,因此请继续安装它们。

安装OWASP ModSecurity核心规则集(CRS)

OWASP ModSecurity核心规则集(CRS) 是与ModSecurity一起使用的一组通用攻击检测规则。它旨在保护Web应用程序免受各种各样的攻击,包括OWASP十大错误警报的最少性。

从克隆CRS GitHub存储库/etc/apache2/modsecurity.d/ 如下所示;

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /etc/httpd/conf.d/modsecurity.d/owasp-crs

接下来,重命名 crs-setup.conf.examplecrs-setup.conf

cp /etc/httpd/conf.d/modsecurity.d/owasp-crs/crs-setup.conf{.example,}

在CentOS 8上激活ModSecurity 3

完成所有这些之后,在默认站点配置文件或任何虚拟主机配置文件上激活modsecurity。在本指南中,我们使用Apache的默认站点配置文件。

请注意,您必须为每个目录上下文启用ModSecurity。

vim /etc/httpd/conf/httpd.conf

请参阅下面的内容,在默认Apache配置上对默认Web根目录进行的更改;

...

    modsecurity on
    modsecurity_rules_file /etc/httpd/conf.d/modsecurity.d/rules.conf
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

...

线;

 modsecurity on
 modsecurity_rules_file /etc/httpd/conf.d/modsecurity.d/rules.conf

打开Modsecurity并分别指定Modsecurity规则的位置。

检查Apache是​​​​否存在配置错误,然后重新启动。

httpd -t
Syntax OK
systemctl restart httpd

测试Modsecurity

接下来,例如,使用命令注入,使用OWASP规则测试Modsecurity的有效性。运行下面的命令;

curl localhost/index.html?exec=/bin/bash


403 Forbidden

Forbidden

You don't have permission to access /index.html on this server.

如果你看到, 403 Forbidden 那么就意味着您已经钉牢了。

您也可以检查Modsecurity日志;

tail /var/log/httpd/modsec_audit.log
...
ModSecurity: Warning. Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:exec' (Value: `/bin/bash' ) [file "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [line "496"] [id "932160"] [rev ""] [msg "Remote Command Execution: Unix Shell Code Found"] [data "Matched Data: bin/bash found within ARGS:exec: /bin/bash"] [severity "2"] [ver "OWASP_CRS/3.2.0"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION"] [tag "WASCTC/WASC-31"] [tag "OWASP_TOP_10/A1"] [tag "PCI/6.5.2"] [hostname "centos8.kifarunix-demo.com"] [uri "/index.html"] [unique_id "158386776469.002836"] [ref "o1,8v21,9t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase"]
ModSecurity: Access denied with code 403 (phase 2). Matched "Operator `Ge' with parameter `5' against variable `TX:ANOMALY_SCORE' (Value: `5' ) [file "/etc/httpd/conf.d/modsecurity.d/owasp-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "79"] [id "949110"] [rev ""] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [data ""] [severity "2"] [ver ""] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "centos8.kifarunix-demo.com"] [uri "/index.html"] [unique_id "158386776469.002836"] [ref ""]

好吧,你去。现在已安装,激活ModSecurity 3或LibModSeceurity并保护您的站点免受Web攻击。

随意设置更多规则,并保护您的Web应用程序。

这标志着我们关于如何在CentOS 8上使用Apache安装和配置LibModsecurity的指南的结尾。

Sidebar