在Ubuntu 20.04上使用Apache安裝LibModsecurity

歡迎來到我們的指南,了解如何在Ubuntu 20.04上使用Apache安裝LibModsecurity。 Libmodsecurity(Modsecurity v3)是由Trustwave的SpiderLabs開發的開源,跨平台Web應用程序防火牆(WAF)。它是對ModSecurity v2的完全重寫,並且提供了一種強大的基於事件的編程語言,可以保護Web應用程序免受各種攻擊,例如SQL注入,跨站點腳本(XSS),本地文件包含,遠程文件包含e。 tc。它還允許HTTP流量監視,日誌記錄和實時分析。

在Ubuntu 20.04上使用Apache安裝LibModsecurity

先決條件

運行系統更新

將系統軟件包重新同步到其最新版本。

apt update
apt upgrade

安裝LAMP堆棧

您必須先安裝LAMP Stack並運行服務器,然後才能在Ubuntu 20.04上使用Apache安裝和配置LibModsecurity。請按照下面的鏈接在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源代碼

要安裝最新的穩定版本 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

在繼續在Ubuntu 20.04上使用Apache編譯和安裝LibModsecurity之前,請確保已解決所有依賴性問題(如果有)。

如果以上配置腳本正確無誤地完成,請繼續在Ubuntu 20.04上編譯並安裝LibModSecurity。

make
make install

LibModSecurity aka ModSecurity v3現在已在Ubuntu 20.04上安裝

安裝ModSecurity-Apache連接器

ModSecurity-apache連接器提供了Apache與libModsecurity之間的通信通道。現在已經安裝了libmodsecurity,請按照以下步驟安裝Modsecurity Apache連接器。

克隆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

使用LibModsecurity配置Apache

加載Apache ModSecurity連接器模塊

通過將以下行添加到主Apache配置文件中,配置Apache以加載Modsecurity 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的值以打開ModSecurity SecRuleEngineOn

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.examplecrs-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

接下來,測試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 ""]

從瀏覽器訪問網站並測試命令注入攻擊, http://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正在按預期運行。

這就是我們在Ubuntu 20.04上如何使用Apache安裝LibModsecurity的指南中的相關內容。

參考:

ModSecurity-Apache

ModSecurity

相關指南

使用libModSecurity將對WordPress登錄頁面的訪問限制為特定IP

為ModSecurity日誌創建Kibana可視化儀錶板

在ELK堆棧上處理和可視化ModSecurity日誌

在CentOS 8上使用Nginx配置LibModsecurity

在Fedora 30/29 / CentOS 7上使用Apache安裝LibModsecurity

Sidebar