欢迎阅读我们关于如何安装 LibModsecurity 的指南 Apache 在 Ubuntu 20.04 上。 Libmodsecurity (Modsecurity v3),是由 Trustwave 的 SpiderLabs 开发的开源、跨平台 Web 应用程序防火墙 (WAF)。 它是对 ModSecurity v2 的完全重写,它提供了一种强大的基于事件的编程语言,可以保护 Web 应用程序免受各种攻击,例如 SQL 注入、跨站点脚本 (XSS)、本地文件包含、远程文件包含 e. tc。 它还允许进行 HTTP 流量监控、日志记录和实时分析。
安装 LibModsecurity Apache 在 Ubuntu 20.04 上
先决条件
运行系统更新
将您的系统包重新同步到它们的最新版本。
apt update
apt upgrade
安装 LAMP 堆栈
在安装和配置 LibModsecurity 之前 Apache 在 Ubuntu 20.04 上,您需要安装 LAMP Stack 并运行您的服务器。 按照下面的链接在 Ubuntu 20.04 上设置 LAMP 堆栈。
在 Ubuntu 20.04 上安装 LAMP Stack
安装所需的构建工具和依赖项
要在 Ubuntu 20.04 上安装 Libmodsecurity 或 Modsecurity v3,我们将从源代码构建它。 因此,您需要安装一些必需的构建工具和依赖项才能成功构建。
apt install g++ flex bison curl apache2-dev doxygen libyajl-dev ssdeep liblua5.2-dev libgeoip-dev libtool dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev libxml2-dev git
在 Ubuntu 20.04 上编译安装 LibModsecurity
系统设置好后,您可以继续在 Ubuntu 20.04 上安装 Modsecurity v3。
下载 LibModsecurity 源代码
安装最新的稳定版本 自由模组安全,你需要从源代码编译它。
因此,导航到 ModSecurity 发布页面并下载 ModSecurity 源代码。 你可以简单地使用 wget 来拉它。
wget https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.4/modsecurity-v3.0.4.tar.gz
提取 ModSecurity 源代码。
tar xzf modsecurity-v3.0.4.tar.gz
编译安装LibModsecurity
导航到LibModsecurity源目录,配置、编译和安装
cd modsecurity-v3.0.4
配置 LibModsecurity 以使其适应您的系统并检查是否缺少任何必需的依赖项。
./build.sh
您可以放心地忽略 fatal: not a git repository (or any of the parent directories): .git
错误信息。
./configure
在继续编译和安装 LibModsecurity 之前,请务必修复任何依赖问题(如果有) Apache 在 Ubuntu 20.04 上。
如果上面的配置脚本完成没有错误,继续在 Ubuntu 20.04 上编译和安装 LibModSecurity。
make
make install
LibModSecurity 又名 ModSecurity v3 现已安装在 Ubuntu 20.04 上
安装 ModSecurity-Apache 连接器
ModSecurity-apache 连接器提供了一个通信通道 Apache 和 libModsecurity。 既然安装了libmodsecurity,请按照以下步骤安装Modsecurity Apache 连接器。
克隆 ModSecurity 的 git 存储库 Apache 连接器。
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
配置 Apache 使用 LibModsecurity
加载 Apache ModSecurity 连接器模块
配置 Apache 加载 Modsecurity Apache 通过将下面的行添加到主连接器模块 Apache 配置文件。
echo "LoadModule security3_module /usr/lib/apache2/modules/mod_security3.so" | sudo tee -a /etc/apache2/apache2.conf
配置 ModSecurity
在下创建 ModSecurity 配置目录 /etc/apache2
sudo mkdir /etc/apache2/modsecurity.d
将示例 ModSecurity 配置文件从源代码目录复制到上面创建的 ModSec 配置目录,将其重命名如下。
sudo cp ~/modsecurity-v3.0.4/modsecurity.conf-recommended /etc/apache2/modsecurity.d/modsecurity.conf
也复制 unicode.mapping
文件从 ModSecurity 源目录到 Apache Modsecurity 配置目录。
sudo cp ~/modsecurity-v3.0.4/unicode.mapping /etc/apache2/modsecurity.d/
通过更改的值打开 ModSecurity SecRuleEngine
到 On
.
sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/apache2/modsecurity.d/modsecurity.conf
接下来,您需要配置 ModSecurity 规则。 因此,创建一个文件,您可以在其中定义要包含的规则,例如, /etc/apache2/modsecurity.d/modsec_rules.conf
.
cat > /etc/apache2/modsecurity.d/modsec_rules.conf << 'EOL' Include "/etc/apache2/modsecurity.d/modsecurity.conf" Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf" Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf" EOL
由于我们已将 OWASP 规则包含在 ModSecurity 3 规则中,因此请继续安装它们。
在 Ubuntu 上安装 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/apache2/modsecurity.d/owasp-crs
接下来重命名 crs-setup.conf.example
到 crs-setup.conf
.
sudo cp /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf{.example,}
激活 ModSecurity
毕竟,在默认站点配置文件或任何虚拟主机配置文件上激活 modsecurity。 在本指南中,我们使用 Apache的默认站点配置文件。
cp /etc/apache2/sites-available/000-default.conf{,.old}
查看我们的示例默认站点虚拟主机配置,没有注释;
cat > /etc/apache2/sites-available/000-default.conf << 'EOL' <VirtualHost *:80> modsecurity on modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> EOL
线条;
modsecurity on modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf
打开 Modsecurity 并指定 Modsecurity 规则的位置。
查看 Apache 配置错误并重新启动它。
apachectl -t
如果没有错误,你应该得到输出, 语法确定.
systemctl restart apache2
测试模组安全
接下来测试Modsecurity的有效性,例如命令注入。 运行下面的命令;
curl localhost?doc=/bin/ls
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access this resource.</p> <hr> <address>Apache/2.4.41 (Ubuntu) Server at localhost Port 80</address> </body></html>
检查 Modsecurity 日志;
tail /var/log/modsec_audit.log
ModSecurity: Warning. Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:doc' (Value: `/bin/ls' ) [file "/etc/apache2/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/ls found within ARGS:doc: /bin/ls"] [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 "127.0.1.1"] [uri "/"] [unique_id "161428003146.366446"] [ref "o1,6v10,7t: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/apache2/modsecurity.d/owasp-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "80"] [id "949110"] [rev ""] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [data ""] [severity "2"] [ver "OWASP_CRS/3.2.0"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "127.0.1.1"] [uri "/"] [unique_id "161428003146.366446"] [ref ""]
从浏览器访问站点并测试命令注入攻击, https://domain.name/?exec=/bin/bash
.
尾随 Apache 错误日志;
tail -f /var/log/apache2/error.log
[Thu Feb 25 19:29:06.385428 2021] [:error] [pid 38210] [client 192.168.57.1:45916] ModSecurity: Warning. Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:exec' (Value: `/bin/bash' ) [file "/etc/apache2/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 "127.0.1.1"] [uri "/"] [unique_id "161428134623.117562"] [ref "o1,8v11,9t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase"]
因此,这证实了 Modsecurity 正在按预期运行。
这就是我们关于如何安装 LibModsecurity 的指南 Apache 在 Ubuntu 20.04 上。
参考:
ModSecurity-apache
模组安全
相关指南
使用 libModSecurity 将 WordPress 登录页面的访问权限限制为特定 IP
为 ModSecurity 日志创建 Kibana 可视化仪表板
在 ELK Stack 上处理和可视化 ModSecurity 日志
在 CentOS 8 上使用 Nginx 配置 LibModsecurity
安装 LibModsecurity Apache 在 Fedora 30/29 / CentOS 7