在ubuntu16.04中安裝apache2+modsecurity以及自定義WAF規則詳解

来源:http://www.cnblogs.com/tppt/archive/2017/10/15/7672815.html
-Advertisement-
Play Games

ubuntu16.04,Apache2,modsecurity,自定義規則,開源WAF,示例,實驗 ...


一、Modsecurity規則語法示例

SecRuleModSecurity主要的指令,用於創建安全規則。其基本語法如下:

SecRule VARIABLES OPERATOR [ACTIONS]

  • VARIABLES

    代表HTTP包中的標識項,規定了安全規則針對的對象。常見的變數包括:ARGS(所有請求參數)、FILES(所有文件名稱)等。

  • OPERATOR

    代表操作符,一般用來定義安全規則的匹配條件。常見的操作符包括:@rx(正則表達式)、@streq(字元串相同)、@ipmatch(IP相同)等。

  • ACTIONS

    代表響應動作,一般用來定義數據包被規則命中後的響應動作。常見的動作包括:deny(數據包被拒絕)、pass(允許數據包通過)、id(定義規則的編號)、severity(定義事件嚴重程度)等。

值得註意的是,如需獲取更加深入的語法,請參考官方手冊。由於本實驗中涉及到了自定義安全規則,故將其中涉及到的三條規則做詳細說明,如下:

規則1:防XSS攻擊

SecRule ARGS|REQUEST_HEADERS "@rx <script>" "id:001,msg: 'XSS Attack',severity:ERROR,deny,status:404"

  • VARIABLES

    ARGS:所有請求參數;REQUEST_HEADERS:請求數據頭部。

  • OPERATOR

    @rx <script>:如果正則匹配字元串"<script>"成功,則規則執行。

  • ACTIONS

    id:001規定該條規則編號為001msg: 'XSS Attack'代表記錄信息為:XSS Attackseverity:ERROR表示嚴重程度為ERRORdeny表示拒絕所有請求包;status:404表示伺服器響應狀態編號為404

    說明:嚴重程度分為8級: EMERGENCY (0)ALERT (1)CRITICAL (2)ERROR (3)WARNING (4)NOTICE (5)INFO (6) DEBUG (7)

該規則表明:所有請求參數中包含字元串"<script>"HTTP包均會被伺服器攔截並記錄。

規則2:設置白名單

SecRule REMOTE_ADDR "@ipmatch 192.168.1.9" "id:002,phase:1,t:none,

nolog,pass,ctl:ruleEngine=off"

  • VARIABLES

    REMOTE_ADDR:遠程主機IP

  • OPERATOR

    @ipmatch 192.168.1.9:如果請求主機IP地址為192.168.1.9,則規則執行。

  • ACTIONS

    id:002規定該條規則編號為002phase:1表示規則執行的範圍為請求頭部;t:none表示VARIABLES的值不需要轉換(t代表transform);nolog代表不記錄日誌;pass代表繼續下一條規則;ctl:ruleEngine=off代表關閉攔截模式,所有規則失效。

    說明:phase編號規定如下:Request Headers (1), Request Body (2), Response Headers (3), Response Body (4) and Logging (5).

該規則表明:對於主機192.168.1.9發送的HTTP包,伺服器關閉攔截模式,允許所有包通過。

規則3chain規則

SecRule ARGS:username "@streq admin" chain,denyid:003

SecRule REMOTE_ADDR "!streq 192.168.1.9"

  • VARIABLES

    ARGS:username所有表示請求參數中的用戶名信息。

  • OPERATOR

    @streq admin表示用戶名等於字元串"admin",則執行ACTIONS

  • ACTIONS

    id:003規定該條規則編號為003chain表示用戶名等於admin的情況下,必須完成第二行規則的匹配(遠程主機IP不是192.168.1.9),才能執行下一個動作;deny表示所有請求包被拒絕。

該規則表明:所有主機名為admin,但對應主機IP地址不是192.168.1.9的請求包均會被伺服器拒絕。也就意味著只有某一臺主機可以用admin用戶登錄(一般情況是系統管理員的主機),大大提高了系統安全性。

二、一鍵安裝LAMP環境

  1. 執行命令apt-get update
  2. 執行命令apt-get install lamp-server^
    1. 在安裝過程中會跳出Mysql資料庫root用戶密碼設置視窗,按要求輸入密碼:123,按Tab鍵選擇"Ok",按回車進入下一步,如下圖所示:

  3. 重覆輸入密碼:123,按Tab鍵選中"Ok",按回車繼續安裝,如下圖所示:

  4. 打開瀏覽器,在地址欄輸入:http://localhost,可以驗證apache2安裝成功,如下圖所:

 

 

5.輸入命令mysql -u root -p ,成功進入mysql視窗,mysql安裝成功。

三、安裝modsecurity

  1. 安裝libapache2-modsecurity模塊及其依賴包,輸入:

    $ apt-get install libxml2 libxml2-dev libxml2-utils libapache2-modsecurity

  2. 查詢ModSecurity版本號,驗證安裝是否成功,輸入:

    $ dpkg -s libapache2-modsecurity | grep Version

    註意:看清Version的大小寫。

  3. 重啟Apache服務,輸入:

    $ service apache2 reload

  4. 配置modsecurity,啟用攔截模式,輸入:

    $ cd /etc/modsecurity

    $ mv modsecurity.conf-recommended modsecurity.conf

    $ vim modsecurity.conf

    上述操作將安裝包中的推薦配置文件改名為標準的配置文件名,並啟用Vim編輯器編輯該配置文件。

  5. 編輯modsecurity.conf,將"SecRuleEngine DetectionOnly"改為"SecRuleEngine On",保存並退出。如下圖所示:

    上述操作將開啟安全規則引擎,即啟用攔截模式,過濾HTTP流量。

四、配置自定義規則

  1. 進入文件夾activated_rules,將啟動文件關聯到此文件夾中,採用軟鏈接的方式,輸入:

    $ cd /usr/share/modsecurity-crs/activated_rules

    $ ln -s ../modsecurity_crs_10_setup.conf ./modsecurity_crs_10_setup.conf

    $ tree

  2. 執行命令vim MY.conf,創建自己的規則文件MY.conf。寫入防XSS規則(編號001)如下:

    SecRule ARGS|REQUEST_HEADERS "@rx <script>" "id:003,msg: 'XSS Attack',severity:ERROR,deny,status:404"

  3. 設置配置文件security2.conf,輸入:

    $ vim /etc/apache2/mods-available/security2.conf

  4. 在該文件中添加:IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf,如下圖所示:

  5. 重啟apache服務,輸入:

    $ service apache2 reload

五、驗證防護效果

  1. 登錄主機"hacker",進入攻擊者模式。在瀏覽器地址欄輸入:http://localhost/ ?q=<script> alert(1)</script>。實驗結果如下圖所示:

  2. 執行命令vim /var/log/apache2/modsec_audit.log,查看WAF攔截日誌,如下圖所示:

    由上圖可知,從本地主機發出的GET請求被規則文件MY.conf中的001號規則準確命中,消息中包含的惡意代碼被攔截。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Linux grep命令 1、簡介 grep是Linux下的一種強大的文本搜索工具,使用正則表達式進行文本搜索,並把匹配的行列印出來。 2、用法 用法: grep [選項]... PATTERN [FILE]...在每個 FILE 或是標準輸入中查找 PATTERN。預設的 PATTERN 是一個基 ...
  • zabbix3.0安裝註意: 1、PHP要5.4版本以上 2、防火牆關閉 3、selinux關閉 臨時關閉selinux: setenforce 0 //設置SELinux 成為permissive模式 徹底禁用selinux: 使用root用戶,vim /etc/sysconfig/selinux ...
  • 一、需求分析 1.前端需支持更大的訪問量,單台Web伺服器已無法滿足需求了,則需擴容Web伺服器; 2.雖然動態內容可交由後端的PHP伺服器執行,但靜態頁面還需要Web伺服器自己解析,那是否意味著多台Web伺服器都需要在各自的系統中都存有一份靜態頁面數據呢?那麼如果能將靜態頁面集中存放,所有Web服 ...
  • 1、軟體包管理簡介 1.軟體包分類 源碼包 腳本安裝包 二進位包(RPM包、系統預設包) 2.源碼包 源碼包的優點是: 開源,如果有足夠的能力,可以修改源代碼 可以自由選擇所需要的功能 軟體設計編譯安裝,所以更加適合自己的系統,更加穩定有效 卸載方便 源碼包的缺點: 安裝過程步驟較多,尤其是安裝較大 ...
  • 什麼是HTML l HTML(HyperText Mark-up Language)即超文本標記語言或超文本標簽語言。 l 何為超文本:“超文本”可以實現頁面內可以包含圖片、鏈接,甚至音樂、程式等。 l 網頁文件本身是一種文本文件,它通過標記符號來標記要顯示的網頁中的各個部分。 l 何為標記:當瀏覽 ...
  • 這是本人第一次寫博客,若有什麼錯誤的地方或者不對的地方,還請各位不吝賜教!!! 一、磁碟配額的概念 由於Linux是一個多用戶管理的操作系統,而Linux預設情況下並不限制每個用戶使用磁碟空間的大小,假如某個用戶疏忽或者惡意占滿磁碟空間,將導致系統磁碟無法寫入甚至崩潰;為了保證系統磁碟的有足夠的剩餘 ...
  • 買了Bandwagon的vps,連接上預設terminal是英文的,有時沒有中文方便,所以想讓其支持中文。 主要步驟為以下兩步: 1. 安裝中文包 chinese-support: 安裝非常簡單,如是其他版本linux系統,使用相應的線上升級命令即可,如apt-get 2.修改字元編碼配置文件 可以 ...
  • 1.背景介紹 作為運維,在公司經常遇到一些機械性重覆工作要做,例如:為新機器裝系統,一臺兩台機器裝系統,可以用光碟、U盤等介質安裝,1小時也完成了,但是如果有成百台的伺服器還要用光碟、U盤去安裝,就顯得有些力不從心了。PXE技術就能很好的解決這個問題,本文將會對PXE的工作原理有所介紹,而cobbl ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...