配置ModSecurity防火墻與OWASP規(guī)則
0x00 背景
ModSecurity是一個(gè)免費(fèi)、開源的Apache模塊,可以充當(dāng)Web應(yīng)用防火墻(WAF)。ModSecurity是一個(gè)入侵探測與阻止的引擎.它主要是用于Web應(yīng)用程序所以也可以叫做Web應(yīng)用程序防火墻.ModSecurity的目的是為增強(qiáng)Web應(yīng)用程序的安全性和保護(hù)Web應(yīng)用程序避免遭受來自已知與未知的攻擊.
OWASP是一個(gè)安全社區(qū),開發(fā)和維護(hù)著一套免費(fèi)的應(yīng)用程序保護(hù)規(guī)則,這就是所謂OWASP的ModSecurity的核心規(guī)則集(即CRS)。我們可以通過ModSecurity手工創(chuàng)建安全過濾器、定義攻擊并實(shí)現(xiàn)主動(dòng)的安全輸入驗(yàn)證.
所以,在這篇文章中,我們將配置ModSecurity防火墻與OWASP的核心規(guī)則集。我們也將學(xué)習(xí)如何可以根據(jù)我們的需要自定義OWASP的核心規(guī)則集或創(chuàng)建自己的定制規(guī)則。
0x01 安裝過程
本文是在Centos環(huán)境中安裝和配置的,步驟如下:
第1步
以root用戶身份登錄到您的服務(wù)器,登錄之后我們在安裝ModSecurity之前需要安裝一些依賴包,可以通過以下的命令安裝:
yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel –y

第2步
安裝依賴包后,我們將安裝ModSecurity。我們可以通過運(yùn)行以下命令進(jìn)行安裝:
yum install mod_security –y

現(xiàn)在ModSecurity已經(jīng)成功地安裝在系統(tǒng)中。
第3步
ModSecurity安裝后,我們需要重新啟動(dòng)Apache服務(wù)器。我們可以通過下面的命令重啟Apache服務(wù)器:
Services httpd restart
或
在/etc/init.d/httpd restart

現(xiàn)在,我們已經(jīng)成功地在服務(wù)器中安裝了ModSecurity,下一個(gè)步驟是下載和配置OWASP的ModSecurity規(guī)則。所以,我們必須將當(dāng)前工作目錄切換到/etc/httpd的。這可以通過cd命令來完成。
cd /etc/httpd.

第4步
正如我們在文章的前面所提到的,我們的ModSecurity安裝是不完美的,但我們需要增加我們的規(guī)則集。這可以通過Github的網(wǎng)站來完成。Github上是一個(gè)開源的平臺,讓許多開發(fā)人員分享他們的項(xiàng)目和應(yīng)用程序。通過git命令使用clone選項(xiàng),可以下載Github服務(wù)器上的任何內(nèi)容。因此,我們將導(dǎo)入預(yù)定義的OWASP的ModSecurity規(guī)則到我們的服務(wù)器。我們可以通過下面的命令做到這一點(diǎn)。
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
("https://github.com/SpiderLabs/owasp-modsecurity-crs.git")

執(zhí)行該命令后,OWASP的ModSecurity規(guī)則將在OWASP-MODSecurity-src目錄下保存。可以通過ls命令如下進(jìn)行查看。

現(xiàn)在,我們必須重新命名OWASP-MODSecurity-src文件夾到ModScurity-CRS。這可以通過mv命令來完成。
mv owasp-modsecurity-crs modsecurity-crs

我們可以通過運(yùn)行l(wèi)s命令驗(yàn)證。
第5步
我們必須將工作目錄更改為mod security-crs。這可以通過cd命令來完成。
cd modsecurity-crs

Modsecurity_crs_10_setup.conf是ModSecurity工作的主配置文件。默認(rèn)情況下,它帶有.example擴(kuò)展名。要初始化ModSecurity,我們要重命名此文件。我們可以用mv命令重命名。
mv modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf

之后,我們要在Apache的配置文件中添加模塊。要裝入新的ModSecurity模塊,編輯Apache的配置文件/etc/httpd/conf/httpd.conf。我們需要在終端中輸入以下命令。
vi /etc/httpd/conf/httpd.conf

復(fù)制/粘貼以下內(nèi)容到文件的末尾并保存文件。
<IfModule security2_module>
Include modsecurity-crs/modsecurity_crs_10_config.conf
Include modsecurity-crs/base_rules/*.conf
</IfModule>

我們將重新啟動(dòng)Apache服務(wù)器。
第7步
現(xiàn)在的ModSecurity已經(jīng)成功配置了OWASP的規(guī)則,但能夠按照我們的選擇讓它工作,我們將不得不作出一個(gè)新的配置文件與我們自己的規(guī)則,這就是所謂的白名單文件。通過這個(gè)文件,我們就可以控制整個(gè)防火墻,創(chuàng)建自己的ModSecurity規(guī)則。我們將在modsecurity.d目錄中創(chuàng)建的。打開/通過下面的命令來創(chuàng)建這個(gè)文件。
vi /etc/httpd/modsecuirty.d/whitelist.conf

復(fù)制下面的規(guī)則并保存到該文件中。
#Whitelist file to control ModSec
<IfModule mod_security2.c>
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecDataDir /tmp
</IfModule>

現(xiàn)在,我們保存文件并重新啟動(dòng)Apache服務(wù)器。下面對各行的意義進(jìn)行說明。
0x02 配置說明
1.SecRuleEngine
是接受來自ModSecurity-CRS目錄下的所有規(guī)則的安全規(guī)則引擎。因此,我們可以根據(jù)需求設(shè)置不同的規(guī)則。要設(shè)置不同的規(guī)則有以下幾種。
SecRuleEngine On: 將在服務(wù)器上激活ModSecurity防火墻。它會(huì)檢測并阻止該服務(wù)器上的任何惡意攻擊。
SecRuleEngine Detection Only: 如果這個(gè)規(guī)則是在whitelist.conf文件中設(shè)置的,它只會(huì)檢測到所有的攻擊,并根據(jù)攻擊產(chǎn)生錯(cuò)誤,但它不會(huì)在服務(wù)器上阻止任何東西。
SecRuleEngine Off:: 這將在服務(wù)器上上停用ModSecurity的防火墻。
2.SecRequestBodyAccess: 它會(huì)告訴ModSecurity是否會(huì)檢查請求。它起著非常重要的作用,當(dāng)一個(gè)Web應(yīng)用程序配置方式中,所有的數(shù)據(jù)在POST請求中。它只有兩個(gè)參數(shù),ON或OFF。我們可以根據(jù)需求設(shè)置。
3.SecResponseBodyAccess: 在whiltelist.conf文件,如果此參數(shù)設(shè)置為ON,然后ModeSecurity可以分析服務(wù)器響應(yīng),并做適當(dāng)處理。它也有只有兩個(gè)參數(shù),ON和Off。我們可以根據(jù)求要進(jìn)行設(shè)置。
4.SetDataDirectory: 在本文中,我們定義的ModSecurity的工作目錄。該目錄將作為ModSecurity的臨時(shí)目錄使用。
ModSecurity現(xiàn)在已經(jīng)成功配置了OWASP的規(guī)則?,F(xiàn)在,我們將測試對一些最常見的Web應(yīng)用攻擊。將測試ModSecurity是否擋住了攻擊。
為了做到這一點(diǎn),我們將嘗試在一個(gè)存在存儲(chǔ)性xss漏洞的網(wǎng)站上進(jìn)行測試,我們已經(jīng)配置ModSecurity。在一個(gè)網(wǎng)站中最常見的XSS漏洞的位置將是搜索框,用戶可以在網(wǎng)站上搜索任何東西。如果惡意用戶試圖在搜索框中注入Java腳本或HTML腳本,它會(huì)在瀏覽器中執(zhí)行。我們可以在搜索框中輸入 。在正常情況下(當(dāng)我們的服務(wù)器上的沒有任何類型的應(yīng)用程序防火墻),它會(huì)在網(wǎng)站顯示一個(gè)彈窗上本。
如果在服務(wù)器上已經(jīng)平配置ModSecurity,服務(wù)器會(huì)根據(jù)配置阻止XSS攻擊,以及生成錯(cuò)誤日志。
我們可以檢查ModSecurity的錯(cuò)誤日志文件。
在/var/logs/httpd/error_logs
我們可以通過下面的命令來檢查文件的最后更新的行。
tail –f /var/logs/httpd/error_logs

ModSecurity核心規(guī)則集(CRS)提供以下類別的保戶來防止攻擊。
◆HTTP Protection (HTTP防御) - HTTP協(xié)議和本地定義使用的detectsviolations策略。
◆Real-time Blacklist Lookups(實(shí)時(shí)黑名單查詢) -利用第三方IP信譽(yù)。
◆HTTP Denial of Service Protections(HTTP的拒絕服務(wù)保護(hù)) -防御HTTP的洪水攻擊和HTTP Dos 攻擊。
◆Common Web Attacks Protection(常見的Web攻擊防護(hù)) -檢測常見的Web應(yīng)用程序的安全攻擊。
◆Automation Detection(自動(dòng)化檢測) -檢測機(jī)器人,爬蟲,掃描儀和其他表面惡意活動(dòng)。
◆Integration with AV Scanning for File Uploads(文件上傳防病毒掃描) -檢測通過Web應(yīng)用程序上傳的惡意文件。
◆Tracking Sensitive Data(跟蹤敏感數(shù)據(jù)) -信用卡通道的使用,并阻止泄漏。
◆Trojan Protection(木馬防護(hù)) -檢測訪問木馬。
◆Identification of Application Defects (應(yīng)用程序缺陷的鑒定)-應(yīng)用程序的錯(cuò)誤配置警報(bào)。
◆Error Detection and Hiding(錯(cuò)誤檢測和隱藏) -偽裝服務(wù)器發(fā)送錯(cuò)誤消息。
0x03 參考文章:
https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
http://spiderlabs.github.io/owasp-modsecurity-crs/
http://www.modsecurity.org/demo/crs-demo.html
http://www.atomicorp.com/wiki/index.php/Mod_security
https://github.com/SpiderLabs/owasp-modsecurity-crs
https://www.owasp.org/index.php?title=Projects/OWASP_ModSecurity_Core_Rule_Set_Project/Releases/ModSecurity_2.0.6/Assessment&setlang=es
原文地址:http://resources.infosecinstitute.com/configuring-modsecurity-firewall-owasp-rules/