ModSecurity 第一章 簡(jiǎn)介

    ModSecurity是一款用于幫助用戶保護(hù)其Web應(yīng)用程序的工具佩厚。有了它,就可以讓用戶在晚上睡得更好匙睹;在這本書中异剥,我們將介紹它是怎樣實(shí)現(xiàn)該目標(biāo)的瑟由。我們通常稱ModSecurity為web應(yīng)用防火墻(web application firewall,WAF),這個(gè)普遍被接受的術(shù)語指的是一類用于保護(hù)web應(yīng)用程序的產(chǎn)品届吁;其它時(shí)間错妖,我們稱它為HTTP入侵檢測(cè)工具(HTTP intrusion detection tool)绿鸣,我們認(rèn)為這個(gè)名稱能夠更好地描述ModSecurity是什么疚沐。這兩個(gè)名字都不完全合適,但我們沒有一個(gè)更好的被普遍接受的名稱潮模。然而亮蛔,我們叫它什么并不重要。關(guān)鍵是擎厢,web應(yīng)用程序——您的究流,我們的,每個(gè)人的——都非常不安全动遭;我們都在努力克服安全問題芬探,使用任何能夠獲取的辦法來處理這些問題。

? ? ? ? ? ? Ivan在負(fù)責(zé)多個(gè)基于web的產(chǎn)品時(shí)想創(chuàng)建ModSecurity厘惦。他看到很多web應(yīng)用程序非常不安全偷仿,工程師在設(shè)計(jì)這些web應(yīng)用程序時(shí)花費(fèi)了很少的時(shí)間,在理解安全問題時(shí)花費(fèi)的時(shí)間就更少。不僅web應(yīng)用程序不安全酝静,而且人們很少意識(shí)到他們是否被攻擊或者被滲透节榜。很多web應(yīng)用程序僅僅保留標(biāo)準(zhǔn)訪問和錯(cuò)誤日志,而這些日志并不能提供太多有用信息别智。

    ModSecurity將幫助你在晚上睡的更好宗苍,最重要的是,它解決了可見性問題:它允許您查看web流量薄榛』淇撸可見性對(duì)于安全至關(guān)重要,一旦您能夠查看HTTP流量敞恋,你可以實(shí)時(shí)地分析它挪钓,記錄它,并對(duì)事件作出響應(yīng)耳舅。該概念最優(yōu)特點(diǎn)是在沒有實(shí)際接觸web應(yīng)用程序的情況下完成所有工作碌上。更好的是,這個(gè)概念可以應(yīng)用于任何程序——即使你不能獲取它們的源代碼浦徊。

1.1? ModSecurity簡(jiǎn)史

     像很多其它開源工程一樣馏予,ModSecurity開始時(shí)只是作為一個(gè)愛好】裕回到2002年霞丧,生產(chǎn)安全的web應(yīng)用程序幾乎是不可能的事情。(可悲的是冕香,如今的情況也是一樣的蛹尝。)然而,這種情況導(dǎo)致了一個(gè)在web應(yīng)用程序前面設(shè)置工具的想法悉尾,這個(gè)工具可以控制進(jìn)出系統(tǒng)的數(shù)據(jù)流突那。其第一版本在2002年9月發(fā)布,但是在這個(gè)工具變得有用之前還需要幾個(gè)月的時(shí)間构眯。其它人開始學(xué)習(xí)ModSecurity愕难,并且其流行度開始增加。

      最初惫霸,該工具的大部分開發(fā)工作都是針對(duì)Apache進(jìn)行的猫缭,以使請(qǐng)求體檢查成為可能。Apache 1.3.x不包括任何截取或過濾api壹店,但是仍然有辦法誘騙它進(jìn)行提交內(nèi)容猜丹。Apache 2.x通過提供能夠截獲內(nèi)容的API改變了這一現(xiàn)狀,但是沒有可用的文檔硅卢。

     到了2004年射窒,Ivan從沉迷于軟件開發(fā)轉(zhuǎn)變?yōu)槌撩杂赪eb應(yīng)用程序安全妖混。他辭掉了工作,開始將ModSecurity作為一個(gè)事業(yè)轮洋。在2006年夏天制市,ModSecurity在由Forrester research進(jìn)行的評(píng)估中與其它web應(yīng)用防火墻針鋒相對(duì)。他取得了巨大的成功弊予。同年晚些時(shí)候祥楣,它被Breach Security收購。一個(gè)人的團(tuán)隊(duì)最終變成了由很多人組成的團(tuán)隊(duì):Brian Rectanus來研究ModSecurity汉柒,Ofer Shezaf著手規(guī)則误褪,Ryan C. Barnett處理社區(qū)管理和教育。ModSecurity 2.0碾褂,一個(gè)完整的重寫版本兽间,在2006年晚些時(shí)候發(fā)布。Breach Security同樣發(fā)布了ModSecurity社區(qū)控制器正塌,將遠(yuǎn)程日志傳感器的功能與監(jiān)視和報(bào)告GUI結(jié)合起來嘀略。

    在2009年,Ivan離開了Breach Security乓诽。他在ModSecurity中呆了一段時(shí)間帜羊,但是更多時(shí)間是在這本書的第一版上。拿他的話說鸠天,如果沒有完善的文檔記錄讼育,他不能離開這個(gè)項(xiàng)目。Brian Rectanus領(lǐng)頭稠集,與此同時(shí)奶段,Ryan C. Barnett負(fù)責(zé)ModSecurity規(guī)則,并對(duì)核心規(guī)則第二版本進(jìn)行了重大改進(jìn)剥纷。2010年痹籍,Trustwave收購了Breach Security,并承諾振興ModSecurity筷畦。然后词裤,這個(gè)項(xiàng)目交給了Ryan C. Barnett和Breno Silva刺洒。

    在2011年3月發(fā)生了重大事件:Trustwave宣布將把ModSecurity的許可從GPLv2更改為Apache軟件許可證(ASLv2)鳖宾。這是邁向更廣泛使用ModSecurity的一大步,因?yàn)锳SL屬于許可許可證的范疇逆航。后來鼎文,核心規(guī)則集項(xiàng)目也宣布了同樣的變化,該項(xiàng)目由開放Web應(yīng)用程序安全項(xiàng)目(OWASP)托管因俐。隨后拇惋,商業(yè)WAF產(chǎn)品開始集成ModSecurity引擎周偎,并添加了OWASP ModSecurity,將核心規(guī)則作為默認(rèn)規(guī)則集撑帖。從2.7.0開始蓉坎,ModSecurity被移植到nginx和IIS web服務(wù)器上,但是這些移植從未達(dá)到原始版本的穩(wěn)定性胡嘿。這最終導(dǎo)致了一個(gè)重大的重寫蛉艾,它將能夠很好地支持多個(gè)平臺(tái)。這將成為ModSecurity 3.0衷敌,目前正在制作中勿侯。

? ? ? ? 在2013年,F(xiàn)elipe Costa接手了Breno的首席開發(fā)員職位缴罗,當(dāng)Ryan在2015年離開Trustwave時(shí)助琐,他將規(guī)則集項(xiàng)目交給了Chaim Sanders;Chaim Sanders于2014年加入Trustwave面氓,維護(hù)項(xiàng)目的編碼和社區(qū)管理兵钮。

1.2 ModSecurity能夠做什么?

    ModSecurity是一個(gè)用于實(shí)時(shí)web應(yīng)用程序監(jiān)視舌界、日志記錄矢空、調(diào)試和訪問控制的工具包。我認(rèn)為它是一個(gè)推動(dòng)者禀横。沒有硬性規(guī)定告訴你該做什么屁药,相反,由您通過可用的特性來選擇您自己的方按柏锄。這就是為什么這個(gè)部分的標(biāo)題會(huì)問ModSecurity能做什么酿箭,而不是它做了什么。

    選擇要做事情的自由是ModSecurity特性的一個(gè)重要組成部分趾娃,并且與它的開放源碼特性很好地結(jié)合在一起缭嫡。通過對(duì)源代碼的完全訪問,您可以選擇擴(kuò)展到自定義和擴(kuò)展工具本身以滿足你的需求的能力抬闷。這不是意識(shí)形態(tài)的問題妇蛀,而是實(shí)用性的問題。我只是不想我的工具限制我所能做的笤成。

     下面是ModSecurity最重要的使用場(chǎng)景:

1.2.1 實(shí)時(shí)應(yīng)用程序安全監(jiān)視和訪問控制

? ? ? ? ? 其核心评架,ModSecurity允許你實(shí)時(shí)訪問HTTP流,和檢查流的能力炕泳,這對(duì)于實(shí)時(shí)安全監(jiān)控來說已經(jīng)足夠了纵诞。通過ModSecurity的持久性存儲(chǔ)機(jī)制,可以增加一個(gè)維度培遵,這使您能夠跟蹤系統(tǒng)元素并執(zhí)行事件關(guān)聯(lián)分析浙芙。如果您愿意登刺,您可以可靠地阻塞,因?yàn)镸odSecurity使用了完整的請(qǐng)求和響應(yīng)緩沖嗡呼。

1.2.2 虛擬補(bǔ)丁

? ? ? ? ? 虛擬補(bǔ)丁是一個(gè)概念纸俭,它在一個(gè)單獨(dú)的分層中進(jìn)行漏洞消除;應(yīng)用程序中南窗,您可以在不觸及應(yīng)用程序的情況下修復(fù)應(yīng)用程序中的問題掉蔬。虛擬補(bǔ)丁適用于使用任何通信協(xié)議的應(yīng)用程序,但它對(duì)HTTP尤其有用矾瘾,因?yàn)橥ǔ女轿?梢酝ㄟ^中間設(shè)備了解流量。ModSecurity擅長(zhǎng)虛擬補(bǔ)丁壕翩,因?yàn)樗锌煽康钠帘文芰挽`活的規(guī)則語言蛉迹,可以適應(yīng)任何需要。到目前為止放妈,ModSecurity提供的虛擬補(bǔ)丁只需要最少的投資北救,它是最容易執(zhí)行的,而且大多數(shù)組織都可以直接受益芜抒。

1.2.3全HTTP流日志

    出于安全考慮珍策,Web服務(wù)器在日志記錄方面通常做得很少。默認(rèn)情況下宅倒,它們的日志非常少攘宙,即使進(jìn)行了大量調(diào)整,也無法獲得所需的所有數(shù)據(jù)拐迁。我還沒有遇到能夠記錄完整事務(wù)數(shù)據(jù)的web服務(wù)器——但是蹭劈,ModSecurity使您能夠記錄所有內(nèi)容,包括原始事務(wù)數(shù)據(jù)线召,這對(duì)于取證非常重要铺韧。另外,您可以選擇哪些事務(wù)被記錄缓淹,哪些部分被記錄哈打,哪些部分被清理。此外讯壶,這種詳細(xì)的日志記錄也有助于應(yīng)用程序故障排除——而不僅僅是安全性料仗。

1.2.4連續(xù)被動(dòng)安全評(píng)估

     安全評(píng)估在很大程度上被看作是一個(gè)活動(dòng)的預(yù)定事件,在這個(gè)事件中鹏溯,一個(gè)獨(dú)立的團(tuán)隊(duì)被提供來試圖執(zhí)行模擬攻擊罢维。持續(xù)被動(dòng)安全評(píng)估是一種實(shí)時(shí)監(jiān)控的變體,它不關(guān)注外部各方的行為丙挽,而是關(guān)注系統(tǒng)本身的行為肺孵。這是一種早期預(yù)警系統(tǒng),可以在被利用之前檢測(cè)到許多異常和安全缺陷的痕跡颜阐。

1.2.5Web應(yīng)用程序加固

     ModSecurity中我最喜歡的用途之一是攻擊表面消減平窘,在這種情況下,您可以選擇性地縮小您愿意接受的HTTP特性(例如凳怨,請(qǐng)求方法瑰艘、請(qǐng)求頭、內(nèi)容類型等)肤舞。ModSecurity直接或通過與其他Apache模塊的協(xié)作紫新,可以幫助您執(zhí)行許多類似的限制。例如李剖,可以修復(fù)許多會(huì)話管理問題芒率,以及跨站點(diǎn)請(qǐng)求的偽造漏洞。

1.2.6一件小事篙顺,但對(duì)你卻很重要

? ? ? ? ? ? ? ? 現(xiàn)實(shí)生活經(jīng)常會(huì)對(duì)我們提出不同尋常的要求偶芍,當(dāng)你處理這些需求時(shí),當(dāng)你最需要ModSecurity時(shí)德玫,它的靈活性就派上了用場(chǎng)匪蟀。你可能需要解決安全問題,或者你有一個(gè)完全不同的問題宰僧。例如材彪,有些人將ModSecurity作為XML web服務(wù)路由器,結(jié)合其解析XML和應(yīng)用XPath表達(dá)式的能力來代理請(qǐng)求琴儿。誰知道呢?


注意:

經(jīng)常有人問我查刻,ModSecurity是否可以用來保護(hù)Apache本身。答案是凤类,在某些有限的情況下穗泵,它可以,但這不是它設(shè)計(jì)的目的谜疤。在Apache或第三方模塊中佃延,您有時(shí)可以在ModSecurity中捕捉到攻擊,但是在ModSecurity之前有大量代碼運(yùn)行夷磕。如果該區(qū)域存在漏洞履肃,ModSecurity將無法對(duì)此采取任何行動(dòng)。


Web應(yīng)用防火墻是什么?

我說過ModSecurity是一個(gè)web應(yīng)用程序防火墻坐桩,但鮮為人知的是尺棋,沒有人真正知道什么是web應(yīng)用程序防火墻。一般認(rèn)為绵跷,web應(yīng)用程序防火墻是一種中介元素(既可以作為軟件附加組件或過程實(shí)現(xiàn)膘螟,也可以作為網(wǎng)絡(luò)設(shè)備)來增強(qiáng)web應(yīng)用程序的安全性成福,但是一旦深入挖掘,就會(huì)產(chǎn)生不同的觀點(diǎn)荆残。有許多理論試圖解釋不同的觀點(diǎn)奴艾,但我能想到的最好的理論是,與我們以前所擁有的不同内斯,web應(yīng)用程序空間是如此復(fù)雜蕴潦,沒有簡(jiǎn)單的方法可以將我們所做的安全區(qū)分開來。不要只關(guān)注名字俘闯,你應(yīng)該關(guān)注一個(gè)特定的工具所做的事情以及它是如何幫助你的潭苞。

1.3指導(dǎo)原則

    ModSecurity的三個(gè)指導(dǎo)原則:

靈活性

ModSecurity是根據(jù)一個(gè)特定的用戶設(shè)計(jì)和構(gòu)建的:一個(gè)需要能夠攔截、分析和存儲(chǔ)HTTP流量的安全專家真朗。我在硬編碼的功能上沒有看到太多的價(jià)值此疹,因?yàn)楝F(xiàn)實(shí)生活是如此的復(fù)雜,以至于每個(gè)人都需要做一些稍微不同的事情蜜猾。ModSecurity通過提供一種強(qiáng)大的規(guī)則語言來實(shí)現(xiàn)靈活性秀菱,它允許您精確地執(zhí)行您需要的操作,并結(jié)合使用規(guī)則的能力蹭睡,只需要將規(guī)則細(xì)化到單個(gè)字節(jié)衍菱。

被動(dòng)

另一個(gè)關(guān)鍵的設(shè)計(jì)決策是盡可能地使模式安全成為被動(dòng);因此,除非得到指示肩豁,否則它不會(huì)對(duì)事務(wù)數(shù)據(jù)進(jìn)行更改脊串。這樣做的主要原因是為了讓用戶有信心使用完全被動(dòng)的規(guī)則集來部署ModSecurity,這樣他們就可以在知道自己的應(yīng)用程序不會(huì)受到影響的情況下清钥,安全地進(jìn)行觀察琼锋。這就是為什么ModSecurity會(huì)給你很多信息,但是最終祟昭,把決定權(quán)留給你缕坎。

可預(yù)測(cè)性

沒有完美的工具,但是可以預(yù)測(cè)下一個(gè)最好的工具篡悟。有了所有的事實(shí)谜叹,你就能理解ModSecurity的弱點(diǎn),并圍繞它工作搬葬。

ModSecurity中的一些元素不在這些原則的范圍之內(nèi)荷腊。例如,ModSecurity可以改變Apache對(duì)外部世界的識(shí)別方式急凰,將Apache進(jìn)程限制在一個(gè)范圍內(nèi)女仰,甚至將安全令牌注入到流量中。盡管這些功能是有用的,但我認(rèn)為它們偏離了ModSecurity的主要目的疾忍,它是一種可靠的乔外、可預(yù)測(cè)的工具,可以實(shí)現(xiàn)HTTP流量檢查锭碳。

1.4部署選項(xiàng)

  ModSecurity支持兩種部署選項(xiàng):嵌入式和反向代理部署袁稽。沒有一種正確的方法來使用它們;根據(jù)最適合你的情況選擇一個(gè)選項(xiàng)。兩種選擇都有利有弊:

? ? ? ? 嵌入式

? ? ? ? 因?yàn)镸odSecurity是一個(gè)Apache模塊,所以您可以將它添加到任何兼容的Apache版本中帕翻。目前墅垮,這意味著,最適合modsecurity的最新Apache版本饥漫,是從2.4.x以后的版本。這就是說,2.2.x以后的版本Modsecurity都可以工作诊胞。ModSecurity已經(jīng)被移植到Nginx和IIS,它引入了更廣泛的平臺(tái)選項(xiàng)锹杈。嵌入式選項(xiàng)對(duì)于那些已經(jīng)設(shè)計(jì)并不想更改其架構(gòu)的人來說是一個(gè)很好的選擇撵孤。如果需要保護(hù)數(shù)百個(gè)web服務(wù)器,嵌入式部署首選竭望。在這種情況下邪码,構(gòu)建一個(gè)單獨(dú)的基于代理的安全層是不切實(shí)際的。嵌入式ModSecurity不僅不會(huì)引入新的失敗點(diǎn)咬清,而且還會(huì)隨著底層web基礎(chǔ)設(shè)施的規(guī)模而無縫伸縮闭专。嵌入式部署的主要挑戰(zhàn)是服務(wù)器資源在web服務(wù)器和ModSecurity之間共享。嵌入式選項(xiàng)對(duì)于那些已經(jīng)設(shè)計(jì)并不想更改其架構(gòu)的人來說是一個(gè)很好的選擇旧烧。

? ? ? ? 反向代理

? ? ? ? 反向代理是有效的HTTP路由器影钉,設(shè)計(jì)為站在web服務(wù)器和它們的客戶機(jī)之間。當(dāng)您安裝一個(gè)專用的Apache反向代理并為其添加ModSecurity時(shí)掘剪,您會(huì)得到一個(gè)“適當(dāng)?shù)摹本W(wǎng)絡(luò)web應(yīng)用程序防火墻平委,您可以使用它來保護(hù)同一網(wǎng)絡(luò)上的任意數(shù)量的web服務(wù)器。許多安全從業(yè)人員希望有一個(gè)單獨(dú)的安全層夺谁,這樣您就可以完全隔離所保護(hù)的系統(tǒng)廉赔。在性能方面,一個(gè)獨(dú)立的ModSecurity安裝將會(huì)有專門的資源予权,這意味著您將能夠做更多的事情(例如昂勉,有更復(fù)雜的規(guī)則)。這種方法的主要缺點(diǎn)是新的故障點(diǎn)扫腺,需要使用兩個(gè)或多個(gè)反向代理的高可用性設(shè)置來解決這個(gè)問題岗照。

1.5 開始

? ? ? ? ? ? 在本書的第一個(gè)實(shí)用章節(jié)中,我將簡(jiǎn)要介紹ModSecurity的內(nèi)部信息,以幫助您入門攒至。

1.5.1混合ModSecurity的性質(zhì)

? ? ? ? ? ? ModSecurity是一個(gè)混合的WAF引擎厚者,它的一些工作依賴于主機(jī)web服務(wù)器。ModSecurity最初是為Apache web服務(wù)器編寫的迫吐,但后來被移植到Nginx和IIS上库菲。盡管Nginx和IIS兩個(gè)版本的ModSecurity都被積極維護(hù),但它們受到ModSecurity的傳統(tǒng)和與Apache源代碼緊密集成的影響志膀。ModSecurity的下一個(gè)主要版本正在重新實(shí)現(xiàn)熙宇,以將其與Apache分離,從而使它能夠同樣地支持所有web服務(wù)器溉浙。在此之前烫止,運(yùn)行ModSecurity的最好的web服務(wù)器是Apache 2.x。

    Apache為ModSecurity提供了它為所有其他模塊所做的工作—它處理以下基礎(chǔ)設(shè)施任務(wù):

1戳稽、解密SSL

2馆蠕、將入站連接流分解為HTTP請(qǐng)求。

3惊奇、部分解析HTTP請(qǐng)求

4互躬、調(diào)用ModSecurity,選擇正確的配置上下文颂郎。

5吼渡、在必要時(shí)將請(qǐng)求體刪除。

    Apache在反向代理中執(zhí)行了一些額外的任務(wù):

1祖秒、將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器(使用或不使用SSL)

2诞吱、部分解析HTTP響應(yīng)

3、在必要時(shí)將響應(yīng)體刪除竭缝。

   混合實(shí)現(xiàn)的優(yōu)點(diǎn)是它是高效的;當(dāng)涉及到HTTP解析時(shí)房维,工作的重復(fù)是最小的。這種方法的一些缺點(diǎn)是抬纸,您不總是能夠訪問原始數(shù)據(jù)流咙俩,并且web服務(wù)器有時(shí)不以安全意識(shí)工具的方式處理數(shù)據(jù)。在Apache的情況下湿故,混合方法運(yùn)行得相當(dāng)好阿趁,有幾個(gè)小問題:

    請(qǐng)求行和報(bào)頭均為空終止。

這通常不是問題坛猪,因?yàn)锳pache看不到的東西不會(huì)傷害任何模塊或應(yīng)用程序脖阵。然而,在一些罕見的情況下墅茉,空字節(jié)逃避的目的是隱藏一些東西命黔,而這種Apache行為只會(huì)幫助隱藏呜呐。

     請(qǐng)求頭轉(zhuǎn)換

Apache將規(guī)范化請(qǐng)求頭,合并多個(gè)使用相同名稱的頭悍募,并將跨越兩個(gè)或多個(gè)行的標(biāo)題合并蘑辑。這種轉(zhuǎn)化可能會(huì)讓人很難察覺到輕微的閃避,但實(shí)際上坠宴,這還不是問題洋魂。

      快速的請(qǐng)求處理

Apache將快速處理一些請(qǐng)求,使得ModSecurity在日志記錄階段不能做任何事情喜鼓。特別是無效的HTTP請(qǐng)求副砍,將會(huì)被Apache拒絕,而沒有ModSecurity參與颠通。

      無法訪問某些響應(yīng)頭

由于Apache的工作方式址晕,在嵌入式模式下膀懈,服務(wù)器和日期響應(yīng)頭是不可見的顿锰。他們不能被檢查或記錄。

1.5.2主要領(lǐng)域的功能

ModSecurity提供的功能大致分為四個(gè)方面:

    解析

ModSecurity試圖弄清楚可用的數(shù)據(jù)启搂。受支持的數(shù)據(jù)格式由具有安全意識(shí)的解析器支持硼控,這些解析器提取數(shù)據(jù)位并將其存儲(chǔ)在規(guī)則中。

    緩沖

在典型的安裝中胳赌,請(qǐng)求和響應(yīng)主體都將被緩沖牢撼。這意味著ModSecurity通常在將完整的請(qǐng)求傳遞給應(yīng)用程序進(jìn)行處理之前,并在它們被發(fā)送到客戶端之前完成響應(yīng)疑苫。緩沖是一個(gè)重要的特性熏版,因?yàn)樗翘峁┛煽孔枞奈ㄒ环椒ā>彌_的缺點(diǎn)是需要額外的RAM來存儲(chǔ)請(qǐng)求和響應(yīng)體數(shù)據(jù)捍掺。

    日志記錄

完整的事務(wù)日志(也稱為審計(jì)日志記錄)是ModSecurity的重要組成部分撼短。這個(gè)特性允許您記錄完整的HTTP流量,而不只是基本的訪問日志信息挺勿。請(qǐng)求標(biāo)頭曲横、請(qǐng)求體、響應(yīng)頭不瓶、響應(yīng)體——所有這些位都將可用禾嫉。只有有能力看到正在發(fā)生的事情,你才能控制住自己蚊丐。

     規(guī)則引擎

規(guī)則引擎以所有其他組件執(zhí)行的工作為基礎(chǔ)熙参。當(dāng)規(guī)則引擎開始運(yùn)行時(shí),它所需要的各種數(shù)據(jù)位和數(shù)據(jù)塊都將準(zhǔn)備就緒麦备,以便進(jìn)行檢查孽椰。在這一點(diǎn)上讲竿,規(guī)則將接管評(píng)估事務(wù)并在必要時(shí)采取行動(dòng)。

     請(qǐng)注意

有一件事是ModSecurity有意避免做的:作為一個(gè)設(shè)計(jì)問題弄屡,ModSecurity不支持?jǐn)?shù)據(jù)清理题禀。我不相信清洗處理,純粹因?yàn)槲蚁嘈潘y了膀捷。如果你確定你被攻擊了(你必須在你決定進(jìn)行清洗之前)迈嘹,那么你應(yīng)該拒絕處理所有的違規(guī)請(qǐng)求。試圖清洗只是打開了一個(gè)新的戰(zhàn)場(chǎng)全庸,在這個(gè)戰(zhàn)場(chǎng)上秀仲,你的攻擊者沒有任何東西可以失去,但卻擁有一切來贏得勝利壶笼。另一方面神僵,你沒有任何東西可以贏,但一切都會(huì)輸覆劈。

1.6規(guī)則是什么樣子

ModSecurity的每一部分都圍繞著兩件事:配置和規(guī)則保礼。配置告訴ModSecurity如何處理它看到的數(shù)據(jù);規(guī)則決定如何處理處理后的數(shù)據(jù)。雖然現(xiàn)在討論規(guī)則如何工作還為時(shí)過早责语,但我將在這里舉一個(gè)簡(jiǎn)單的例子炮障,讓您了解它們的外觀。例如:

    SecRule ARGS "@rx" \

      "id:2000,log,deny,status:404"

即使沒有進(jìn)一步的幫助坤候,您也可以識(shí)別規(guī)則中指定我們想要在輸入數(shù)據(jù)( )中尋找的內(nèi)容的部分胁赢。類似地,如果我們找到所需的模式(log,deny,status:404)白筹,您很容易就會(huì)知道會(huì)發(fā)生什么智末。當(dāng)您查看一般規(guī)則語法時(shí),情況將變得更加清晰:

SecRule VARIABLES OPERATOR ACTIONS

    這三部分含義如下:

1徒河、變量部分告訴ModSecurity在哪里看系馆。在示例中使用的ARGS變量表示所有請(qǐng)求參數(shù)。

2虚青、操作符部分告訴ModSecurity如何看待它呀。在示例中,我們有一個(gè)正則表達(dá)式模式棒厘,它將與ARGS匹配纵穿。

3、動(dòng)作部分用于向規(guī)則添加元數(shù)據(jù)奢人,并指定當(dāng)匹配發(fā)生時(shí)ModSecurity應(yīng)該做什么谓媒。前一個(gè)示例的規(guī)則指定ID 2000,以唯一標(biāo)識(shí)規(guī)則何乎,并在匹配上指定以下操作:日志問題句惯、停止事務(wù)處理和返回HTTP響應(yīng)代碼404土辩。

    我希望您不會(huì)對(duì)第一個(gè)規(guī)則的簡(jiǎn)單性感到失望。我向您保證抢野,通過結(jié)合ModSecurity提供的各種設(shè)施拷淘,您將能夠編寫有用的規(guī)則,在必要時(shí)實(shí)現(xiàn)復(fù)雜的邏輯指孤。

1.7事務(wù)生命周期

在ModSecurity中启涯,每個(gè)事務(wù)都經(jīng)過五個(gè)步驟或階段。在每個(gè)階段中恃轩,ModSecurity將在開始時(shí)執(zhí)行一些工作(例如结洼,解析已成為可用的數(shù)據(jù)),調(diào)用指定在該階段工作的規(guī)則叉跛,或者在階段規(guī)則完成后執(zhí)行一兩個(gè)任務(wù)松忍。乍一看,似乎五個(gè)階段太多了筷厘,但每個(gè)階段都存在一個(gè)原因鸣峭。總是有一個(gè)任務(wù)敞掘,有時(shí)是幾個(gè)叽掘,只能在事務(wù)生命周期的某個(gè)特定時(shí)刻執(zhí)行。

請(qǐng)求頭(1)

請(qǐng)求標(biāo)頭階段是ModSecurity的第一個(gè)入口點(diǎn)玖雁。此階段的主要目的是允許規(guī)則編寫人員在進(jìn)行昂貴的請(qǐng)求體處理之前評(píng)估請(qǐng)求。類似地盖腕,經(jīng)常需要影響如何處理請(qǐng)求主體赫冬,且在這個(gè)階段是進(jìn)行該過程的時(shí)間。例如溃列,ModSecurity在默認(rèn)情況下不會(huì)解析XML或JSON請(qǐng)求體劲厌,但是您可以通過將適當(dāng)?shù)囊?guī)則放到第1階段來指導(dǎo)它。

請(qǐng)求主體(2)

請(qǐng)求體階段是主請(qǐng)求分析階段听隐,在接收和處理完請(qǐng)求體之后立即進(jìn)行补鼻。這個(gè)階段的規(guī)則擁有所有可用的請(qǐng)求數(shù)據(jù)。之后雅任,web服務(wù)器將生成響應(yīng)本身(在嵌入式模式中)风范,或者將事務(wù)轉(zhuǎn)發(fā)到后端web服務(wù)器(反向代理模式)。

響應(yīng)頭(3)

響應(yīng)頭階段發(fā)生在響應(yīng)頭可用之后沪么,但在響應(yīng)主體讀取之前硼婿。需要決定是否檢查響應(yīng)主體的規(guī)則應(yīng)該在此階段運(yùn)行。

響應(yīng)主體(4)

響應(yīng)體階段是主要的響應(yīng)分析階段禽车。在此階段開始時(shí)寇漫,將讀取響應(yīng)主體并將其所有數(shù)據(jù)提供給規(guī)則以進(jìn)行決策刊殉。

日志(5)

日志記錄階段是特殊的。這是你不能阻止的唯一階段州胳。在此階段運(yùn)行時(shí)记焊,事務(wù)將完成,因此您可以做的事情很少栓撞,但可以記錄發(fā)生的事實(shí)亚亲。在這個(gè)階段的規(guī)則是用來控制日志記錄是如何執(zhí)行的,或者是在持久存儲(chǔ)中保存信息腐缤。

1.8生命周期的例子

為了讓您更好地了解每個(gè)事務(wù)中發(fā)生了什么捌归,我們將檢查一個(gè)POST事務(wù)的詳細(xì)調(diào)試日志。調(diào)試日志是由ModSecurity提供的一個(gè)額外的日志工具岭粤,它允許您非常詳細(xì)地觀察模塊的執(zhí)行步驟惜索。我故意選擇了一個(gè)事務(wù)類型,它將請(qǐng)求主體作為其傳輸數(shù)據(jù)的主要方法剃浇,因?yàn)檫@樣的事務(wù)將執(zhí)行ModSecurity的大部分巾兆。為了使事情保持相對(duì)簡(jiǎn)單,我使用了一個(gè)沒有任何規(guī)則的配置虎囚,刪除了一些調(diào)試日志角塑,以使其更加清晰,并從每個(gè)日志行刪除了時(shí)間戳和一些額外的元數(shù)據(jù)淘讥。

請(qǐng)注意

此時(shí)圃伶,請(qǐng)不要試圖了解有關(guān)日志的所有內(nèi)容。我們的想法是讓大家了解ModSecurity的工作原理以及調(diào)試日志的介紹蒲列。在您開始使用ModSecurity后不久窒朋,您將發(fā)現(xiàn)調(diào)試日志是必不可少的規(guī)則編寫和故障排除工具。

在本節(jié)中蝗岖,我使用的事務(wù)非常簡(jiǎn)單侥猩。我把請(qǐng)求數(shù)據(jù)放到兩個(gè)不同的位置,參數(shù)a在查詢字符串中抵赢,參數(shù)b在請(qǐng)求體中欺劳,但是這個(gè)請(qǐng)求沒有別的意思。

POST /?a=test HTTP/1.0

Content-Type: application/x-www-form-urlencoded

Content-Length: 6

b=test

響應(yīng)是完全不起眼的:

HTTP/1.1 200 OK

Date: Fri, 22 Jul 2016 04:59:13 GMT

Server: Apache

Content-Length: 12

Connection: close

Content-Type: text/html

Hello World!

在請(qǐng)求頭(如果有的話)被讀取之前铅鲤,Apache首先會(huì)調(diào)用ModSecurity划提。首先是初始化消息,其中包含mod_unique_id生成的唯一事務(wù)ID彩匕。有了這個(gè)腔剂,您應(yīng)該能夠?qū)⒄{(diào)試日志中的信息與訪問和審計(jì)日志中的信息結(jié)合起來。此時(shí)驼仪,ModSecurity將解析請(qǐng)求行和請(qǐng)求頭中的信息掸犬。在本例中袜漩,查詢字符串部分包含一個(gè)單獨(dú)的參數(shù)(a),因此您將看到一個(gè)記錄其發(fā)現(xiàn)的消息湾碎。然后ModSecurity將創(chuàng)建一個(gè)事務(wù)上下文并調(diào)用REQUEST_HEADERS階段:

[4]Initialising transaction (txid V5LjWH8AAQEAAFPTr64AAAAA).

[5]Adding request argument (QUERY_STRING): name "a", value "test"

[4]Transaction context created (dcfg 1154668).

[4]Starting phase REQUEST_HEADERS.

假設(shè)規(guī)則沒有阻塞事務(wù)宙攻,ModSecurity現(xiàn)在將返回對(duì)Apache的控制,允許其他模塊在控制權(quán)返回之前處理請(qǐng)求介褥。

在第二階段座掘,ModSecurity將首先讀取并處理請(qǐng)求主體,如果它存在的話柔滔。在下面的示例中溢陪,您可以看到來自輸入過濾器的三條消息,它們告訴您所讀的內(nèi)容睛廊。第四個(gè)消息告訴您從請(qǐng)求主體中提取了一個(gè)參數(shù)形真。該請(qǐng)求中使用的內(nèi)容類型(應(yīng)用程序/x-www-form-urlencode)是ModSecurity自動(dòng)識(shí)別和解析的類型之一。一旦請(qǐng)求主體被處理超全,就會(huì)處理request_body規(guī)則咆霜。

[4]Second phase starting (dcfg 1154668).

[4]Input filter: Reading request body.

[9]Input filter: Bucket type HEAP contains 6 bytes.

[9]Input filter: Bucket type EOS contains 0 bytes.

[5]Adding request argument (BODY): name "b", value "test"

[4]Input filter: Completed receiving request body (length 6).

[4]Starting phase REQUEST_BODY.

日志中提到的過濾器是處理請(qǐng)求和響應(yīng)主體的ModSecurity的一部分:

[4] Hook insert_filter: Adding input forwarding filter (r 7f5fc8002970).

[4] Hook insert_filter: Adding output filter (r 7f5fc8002970).

每次ModSecurity將一組數(shù)據(jù)發(fā)送到請(qǐng)求處理程序時(shí),調(diào)試日志中將會(huì)有一條消息嘶朱,最后一條消息是蛾坯,緩沖區(qū)中不再有任何數(shù)據(jù):

[4] Input filter: Forwarding input: mode=0, block=0, nbytes=8192 (f 7f5fc800ae90, r 7f5fc8002970).

[4] Input filter: Forwarded 6 bytes.

[4] Input filter: Sent EOS.

[4] Input filter: Input forwarding complete.

請(qǐng)求現(xiàn)在在Apache的請(qǐng)求處理程序的手中。如果web服務(wù)器在嵌入式模式下運(yùn)行疏遏,請(qǐng)求處理程序?qū)⒆约荷身憫?yīng)脉课。如果它以反向代理模式運(yùn)行,服務(wù)器將把事務(wù)轉(zhuǎn)發(fā)到后端服務(wù)器改览。

此后不久下翎,輸出過濾器將開始接收數(shù)據(jù),此時(shí)將調(diào)用response_header規(guī)則:

[9] Output filter: Receiving output (f 7f5fc800aeb8, r 7f5fc8002970).

[4] Starting phase RESPONSE_HEADERS.

一旦所有的規(guī)則都運(yùn)行了宝当,ModSecurity將繼續(xù)在其緩沖區(qū)中存儲(chǔ)響應(yīng)主體,之后它將運(yùn)行response_body規(guī)則:

[9]Content Injection: Not enabled.

[9]Output filter: Bucket type MMAP contains 13 bytes.

[9]Output filter: Bucket type EOS contains 0 bytes.

[4]Output filter: Completed receiving response body (buffered full - 12 bytes).

[4]Starting phase RESPONSE_BODY.

同樣胆萧,假設(shè)沒有一個(gè)規(guī)則被阻塞庆揩,那么累積的響應(yīng)主體將被轉(zhuǎn)發(fā)給客戶端:

[4] Output filter: Output forwarding complete.

最后,日志記錄階段將開始跌穗。日志規(guī)則將首先運(yùn)行订晌,以允許它們影響日志記錄,之后將調(diào)用審核日志子系統(tǒng)以在必要時(shí)記錄事務(wù)蚌吸。來自審計(jì)日志子系統(tǒng)的消息將是日志中的最后一個(gè)事務(wù)消息锈拨。在這個(gè)示例中,ModSecurity告訴我們它在事務(wù)中沒有找到任何感興趣的東西羹唠,它認(rèn)為沒有理由記錄它:

[4]Initialising logging.

[4]Starting phase LOGGING.

[4]Recording persistent data took 0 microseconds.

[4]Audit log: Ignoring a non-relevant request.

1.8文件上傳的例子

包含文件的請(qǐng)求的處理方式略有不同奕枢。通過再次遵循調(diào)試日志中的活動(dòng)娄昆,可以更好地理解這些變化:

[4] Input filter: Reading request body.

[9] Multipart: Boundary: ------------------------ce3de83f6cf79943

[9] Input filter: Bucket type HEAP contains 140 bytes.

[9] Multipart: Added part header "Content-Disposition" "form-data; name=\"f\"; filename=\"eicar.com.txt

[9] Multipart: Added part header "Content-Type" "text/plain"

[9] Multipart: Content-Disposition name: f

[9] Multipart: Content-Disposition filename: eicar.com.txt

[9] Input filter: Bucket type HEAP contains 116 bytes.

[4] Multipart: Created temporary file 1 (mode 0600): /usr/local/modsecurity/var/tmp/20160723-054018-V5L

[9] Multipart: Added file part 7f67b400fd50 to the list: name "f" file name "eicar.com.txt" (offset 140

[9] Input filter: Bucket type EOS contains 0 bytes.

[4] Request body no files length: 96

[4] Input filter: Completed receiving request body (length 256)

除了在操作中查看Multipart解析器之外,您還將看到ModSecurity創(chuàng)建一個(gè)臨時(shí)文件(它將從中提取pload),并調(diào)整其特權(quán)以匹配所需的配置缝彬。

然后萌焰,在事務(wù)結(jié)束時(shí),您將看到清理和臨時(shí)文件被刪除:

[4] Multipart: Cleanup started (remove files 1).

[4] Multipart: Deleted file (part) "/usr/local/modsecurity/var/tmp/20160723-054427-V5LoG38AAQEAAF4SFAoA

如果ModSecurity決定保留上傳的文件谷浅,該臨時(shí)文件將不會(huì)被刪除扒俯。相反,它將被轉(zhuǎn)移到存儲(chǔ)區(qū):

[4] Multipart: Cleanup started (remove files 0).

[4] Input filter: Moved file from "/usr/local/modsecurity/var/tmp/20160723-054018-V5LnIn8AAQEAAFurQfQAA

在示例跟蹤中一疯,您已經(jīng)觀察到存儲(chǔ)在RAM中的一個(gè)小文件的上傳撼玄。當(dāng)出現(xiàn)較大的上傳時(shí),ModSecurity首先會(huì)嘗試使用RAM墩邀,一旦發(fā)現(xiàn)文件更大掌猛,就切換到磁盤上的存儲(chǔ)空間:

[9] Input filter: Bucket type HEAP contains 6080 bytes.

[9] Input filter: Bucket type HEAP contains 2112 bytes.

[9] Input filter: Bucket type HEAP contains 5888 bytes.

[9] Input filter: Bucket type HEAP contains 2304 bytes.

[9] Input filter: Bucket type HEAP contains 5696 bytes.

[9] Input filter: Bucket type HEAP contains 2496 bytes.

[9] Input filter: Bucket type HEAP contains 5504 bytes.

[9] Input filter: Bucket type HEAP contains 2688 bytes.

[9] Input filter: Bucket type HEAP contains 5312 bytes.

[9] Input filter: Bucket type HEAP contains 2880 bytes.

[9] Input filter: Bucket type HEAP contains 5120 bytes.

[9] Input filter: Bucket type HEAP contains 3072 bytes.

[4] Input filter: Request too large to store in memory, switching to disk.

將創(chuàng)建一個(gè)新文件來存儲(chǔ)整個(gè)原始請(qǐng)求主體:

[4] Input filter: Created temporary file to store request body: /usr/local/modsecurity/var/tmp/20160723

[4] Input filter: Wrote 128146 bytes from memory to disk.

這個(gè)文件總是在清理階段被刪除:

[4] Multipart: Deleted file (part) "/usr/local/modsecurity/var/tmp/20160723-054813-V5Lo-X8AAQEAAF4SFAsA

[4] Input filter: Removed temporary file: /usr/local/modsecurity/var/tmp/20160723-054813-V5Lo-X8AAQEAAF

1.9對(duì)Web服務(wù)器的影響

添加ModSecurity將改變你的web服務(wù)器的運(yùn)行方式。和所有的Apache模塊一樣磕蒲,你要為額外的靈活性和安全模式付出代價(jià)留潦,ModSecurity增加了服務(wù)器上的CPU和內(nèi)存消耗。確切的數(shù)量將取決于您的modsecurity配置——即規(guī)則——以及您的服務(wù)器的使用情況辣往。以下是增加資源消耗的各種活動(dòng)的詳細(xì)清單:

?ModSecurity將增加Apache已經(jīng)執(zhí)行的解析兔院,這將導(dǎo)致CPU消耗略有增加。

?復(fù)雜的解析器(例如站削,XML)比較昂貴坊萝。

?文件上傳的處理可能需要I/O操作。在某些情況下许起,入站數(shù)據(jù)會(huì)被復(fù)制到磁盤上十偶。

?解析將增加RAM的消耗,因?yàn)槊總€(gè)提取的元素(例如园细,一個(gè)請(qǐng)求參數(shù))都需要復(fù)制到它自己的空間中惦积。

?請(qǐng)求體和響應(yīng)體通常是緩沖的,以支持可靠的阻塞猛频。

?配置中的每一條規(guī)則都將使用一些CPU時(shí)間(用于操作符)和RAM(在分析輸入數(shù)據(jù)之前)狮崩。

?規(guī)則中使用的一些運(yùn)算符(例如正則表達(dá)式運(yùn)算符)是cpu密集型的。在非常大的請(qǐng)求或響應(yīng)體上運(yùn)行正則表達(dá)式可能需要很長(zhǎng)時(shí)間——甚至是秒鹿寻。

?完整事務(wù)日志是一個(gè)昂貴的I/O操作睦柴。

在實(shí)踐中,這份清單很重要毡熏,因?yàn)樗茏屇懔私馇闆r;重要的是您有足夠的資源來支持您的ModSecurity需求坦敌。如果你這樣做了,那么不管ModSecurity有多昂貴,都不重要狱窘。而且杜顺,對(duì)一個(gè)人來說,昂貴的東西可能不是別人训柴。如果您沒有足夠的資源來完成所有您想要的ModSecurity哑舒,您將需要監(jiān)視系統(tǒng)的操作,并刪除一些功能以減少資源消耗;實(shí)際上幻馁,ModSecurity所做的一切都是可配置的洗鸵,所以您應(yīng)該沒有問題。

通常仗嗦,在反向代理模式下運(yùn)行ModSecurity更容易膘滨,因?yàn)檫@樣你通常會(huì)有一個(gè)完整的服務(wù)器(有自己的CPU和RAM)。在嵌入式模式中稀拐,ModSecurity將添加到已經(jīng)由web服務(wù)器執(zhí)行的處理中火邓,因此在繁忙的服務(wù)器上這種方法更具挑戰(zhàn)性。

為了實(shí)現(xiàn)它的價(jià)值德撬,ModSecurity通常使用最少的必要資源來執(zhí)行所需的功能铲咨,所以這實(shí)際上是一個(gè)為了速度而交換功能的例子;如果你想做得更多,你就得付出更多蜓洪。

1.20接下來是什么?

本節(jié)的目的是繪制未來的ModSecurity活動(dòng)纤勒,并幫助確定從何處進(jìn)行。你的去向取決于你想要實(shí)現(xiàn)的目標(biāo)以及需要花費(fèi)多少時(shí)間隆檀∫√欤可以說,完整的ModSecurity經(jīng)驗(yàn)包括以下幾個(gè)要素:

安裝和配置

這是所有用戶必須學(xué)習(xí)如何執(zhí)行的基本步驟恐仑。接下來的三章將教你如何使ModSecurity操作泉坐、執(zhí)行安裝、一般配置和日志配置裳仆。一旦完成了這些任務(wù)腕让,就需要決定如何使用modsecurity——這就是本書剩余部分的內(nèi)容。

規(guī)則編寫

規(guī)則編寫是一項(xiàng)基本技能歧斟。您現(xiàn)在可以將規(guī)則視為檢測(cè)應(yīng)用程序安全性攻擊的工具记某。他們是那樣的,但他們也有更多功能构捡。在ModSecurity中,您編寫規(guī)則來了解更多關(guān)于HTTP客戶端的信息(例如壳猜,地理定位和IP地址的聲譽(yù))勾徽,執(zhí)行長(zhǎng)期的活動(dòng)跟蹤(例如IP地址、會(huì)話和用戶)统扳,執(zhí)行策略決策(使用可用的信息來做出警告或阻塞的決策)喘帚,編寫虛擬補(bǔ)丁畅姊,甚至檢查ModSecurity本身的狀態(tài)。

的確吹由,攻擊檢測(cè)規(guī)則是屬于其獨(dú)特的特性若未,但為了成功地編寫它們,您需要了解大量關(guān)于應(yīng)用程序安全性的知識(shí)倾鲫。出于這個(gè)原因粗合,許多ModSecurity用戶通常都專注于使用第三方規(guī)則集進(jìn)行攻擊檢測(cè)。這是一個(gè)合理的選擇乌昔。不是每個(gè)人都有時(shí)間和意愿成為應(yīng)用安全專家隙疚。即使最終不使用任何檢驗(yàn)規(guī)則,編寫虛擬修補(bǔ)程序的能力也足以使用ModSecurity磕道。

規(guī)則集

使用現(xiàn)有的規(guī)則集是最簡(jiǎn)單的方法供屉,可以達(dá)到眾所周知效果:

投入少量的精力,獲得巨大的利益溺蕉。傳統(tǒng)上伶丐,ModSecurity規(guī)則的主要來源是CRS項(xiàng)目,現(xiàn)在由OWASP托管疯特。另一方面哗魂,如果你想要勤寫代碼,我可以告訴你辙芍,我很樂意寫自己的規(guī)則啡彬。這是了解應(yīng)用程序安全性的好方法。唯一的缺點(diǎn)是它需要大量的時(shí)間投資故硅。

遠(yuǎn)程日志和警報(bào)管理GUI

在沒有遠(yuǎn)程日志解決方案和沒有GUI的情況下庶灿,ModSecurity是完全可用的(兩者通常是在一起的)。重要的錯(cuò)誤消息被復(fù)制到Apache的錯(cuò)誤日志中吃衅。完整的事務(wù)通常記錄到審計(jì)日志中往踢。有了一個(gè)通知系統(tǒng),您就會(huì)知道什么時(shí)候發(fā)生了什么事情徘层,并且可以訪問審計(jì)日志峻呕。例如,許多安裝會(huì)將Apache的錯(cuò)誤日志轉(zhuǎn)移到一個(gè)中央日志系統(tǒng)(通過syslog)趣效。

使用多個(gè)傳感器來管理這個(gè)過程會(huì)變得更加困難瘦癌。此外,GUIs使整個(gè)監(jiān)控的體驗(yàn)更加愉快跷敬。出于這個(gè)原因讯私,您可能打算安裝一個(gè)可用的遠(yuǎn)程集中工具,并使用它的GUI。下面的參考資料部分列出了可用選項(xiàng)斤寇。

1.21資源

本節(jié)包含各種可幫助您工作的ModSecurity資源列表桶癣。

通用資源

以下資源是最基本的:

ModSecurity網(wǎng)站

ModSecurity的網(wǎng)站可能會(huì)成為你的主要信息來源。您應(yīng)隨時(shí)訪問網(wǎng)站娘锁,以及訂閱來自博客的更新牙寞。

官方文檔

官方的ModSecurity文檔是在wiki中維護(hù)的,但是它的副本都是為了包含在每個(gè)版本中莫秆。

問題跟蹤器

您將希望訪問ModSecurity問題跟蹤器间雀,原因有二:報(bào)告一個(gè)ModSecurity本身的問題(例如,當(dāng)您發(fā)現(xiàn)一個(gè)bug)或檢查下一個(gè)(主要的或次要的)版本的進(jìn)展馏锡。在報(bào)告任何問題之前雷蹂,檢查一下支持清單,它將幫助您收集幫助解決問題所需的信息杯道。提供盡可能多的信息將幫助開發(fā)人員理解并復(fù)制問題匪煌,并快速提供修復(fù)(或解決方案)。

用戶的郵件列表

用戶的郵件列表(mod-security-users@lists.sourceforge.net)是一個(gè)通用的郵件列表党巾,您可以通過它討論ModSecurity萎庭。可以自由提問齿拂,提出改進(jìn)意見驳规,并討論想法。您將首先通過這個(gè)列表了解新的ModSecurity版本署海。

核心規(guī)則集郵件列表

CRS項(xiàng)目是OWASP的一部分吗购,并且有一個(gè)單獨(dú)的郵件列表(owasp-modsecuri-core -core- rules -set@lists.owasp.org)。關(guān)于假陽性和新規(guī)則的開發(fā)的討論也發(fā)生在核心規(guī)則GitHub庫中砸狞。

1.22開發(fā)人員資源

如果您對(duì)開發(fā)工作感興趣捻勉,您需要訪問以下資源:

開發(fā)人員郵件列表

開發(fā)人員的郵件列表是討論ModSecurity軟件開發(fā)的資源。如果您決定開始使用源代碼刀森,請(qǐng)使用此列表來尋求建議并討論您的工作踱启。還有一個(gè)ModSecurity開發(fā)人員指南和示例。

源代碼的訪問

ModSecurity的源代碼托管在GitHub存儲(chǔ)庫中研底,它允許您直接訪問或通過基于web的UI訪問它埠偿。

1.23AuditConsole

從命令行完全使用ModSecurity是很有趣的,但審查審計(jì)和調(diào)試日志在沒有特殊腳本或高級(jí)工具的情況下是很困難的榜晦。日志集中和GUI工具的最佳選擇是由Christian Bockermann創(chuàng)建的AuditConsole冠蒋。

AuditConsole是免費(fèi)的,提供以下功能:

.事件集中來自多個(gè)遠(yuǎn)程ModSecurity安裝乾胶。

.Event存儲(chǔ)和檢索

.支持多個(gè)用戶帳戶浊服,支持不同的視圖统屈。

.Event標(biāo)簽

.事件觸發(fā)器,在控制臺(tái)中執(zhí)行牙躺。

1.24總結(jié)

本章提供了一個(gè)學(xué)習(xí)ModSecurity的指南。我在一個(gè)較高的層次上介紹了ModSecurity腕扶,討論了它是什么孽拷,它不是什么,它能做什么半抱,不能做什么脓恕。我還讓您了解了ModSecurity是什么樣子,并描述了它的常見使用場(chǎng)景窿侈,并介紹了它的一些有趣的操作部分炼幔。

你現(xiàn)在所擁有的基礎(chǔ)應(yīng)該足以幫助你踏上ModSecurity探索之旅。下一章討論安裝史简。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乃秀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子圆兵,更是在濱河造成了極大的恐慌跺讯,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殉农,死亡現(xiàn)場(chǎng)離奇詭異刀脏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)超凳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門愈污,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人轮傍,你說我怎么就攤上這事暂雹。” “怎么了金麸?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵擎析,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我挥下,道長(zhǎng)揍魂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任棚瘟,我火速辦了婚禮现斋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘偎蘸。我一直安慰自己庄蹋,他們只是感情好瞬内,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著限书,像睡著了一般虫蝶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倦西,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天能真,我揣著相機(jī)與錄音,去河邊找鬼扰柠。 笑死粉铐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卤档。 我是一名探鬼主播蝙泼,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼劝枣!你這毒婦竟也來了汤踏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤哨免,失蹤者是張志新(化名)和其女友劉穎茎活,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琢唾,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡载荔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了采桃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懒熙。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖普办,靈堂內(nèi)的尸體忽然破棺而出工扎,到底是詐尸還是另有隱情,我是刑警寧澤衔蹲,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布肢娘,位于F島的核電站,受9級(jí)特大地震影響舆驶,放射性物質(zhì)發(fā)生泄漏橱健。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一沙廉、第九天 我趴在偏房一處隱蔽的房頂上張望拘荡。 院中可真熱鬧,春花似錦撬陵、人聲如沸珊皿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蟋定。三九已至粉臊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溢吻,已是汗流浹背维费。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留促王,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓而晒,卻偏偏與公主長(zhǎng)得像蝇狼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倡怎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容