ModSecurity第二章 安裝

 來源:modsecurity handbook second edition   

在安裝ModSecurity之前烁挟,您需要決定是否要從源代碼編譯它掠河,還是使用二進(jìn)制版本——要么是包含在您的操作系統(tǒng)中肥照,要么是由第三方生成的败富。每個(gè)選項(xiàng)都有優(yōu)點(diǎn)和缺點(diǎn)舟山,如表2.1所列。


? ? ? 在某些情況下谎碍,你沒有選擇的余地鳞滨。例如,如果您已經(jīng)從源代碼安裝了Apache蟆淀,那么您也需要從源代碼中安裝ModSecurity(當(dāng)然拯啦,您將能夠重用系統(tǒng)包)澡匪。以下的問題可以幫助你做出決定:

?你打算認(rèn)真使用ModSecurity嗎?

?從源代碼中編譯程序是否合適?

?你有足夠的時(shí)間花在編譯和連續(xù)維護(hù)一個(gè)定制的程序上嗎?

?您是否需要更改ModSecurity或編寫自己的擴(kuò)展?

普通用戶通常應(yīng)盡量使用二進(jìn)制包(在大多數(shù)分布情況下都可用)。

2.1? 從源代碼安裝

當(dāng)我們構(gòu)建專用的反向代理安裝時(shí)褒链,我們傾向于從源代碼構(gòu)建所有的東西唁情,因?yàn)檫@允許我們?cè)L問最新的Apache和ModSecurity版本,并且在我們想要的時(shí)候更容易調(diào)整元素(通過更改Apache或ModSecurity的源代碼)碱蒙。

2.1.1下載發(fā)布

要下載ModSecurity荠瘪,請(qǐng)?jiān)L問其網(wǎng)站或GitHub項(xiàng)目頁面。您將需要源代碼的主要發(fā)行版和它的加密簽名:

$ wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz

$ wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz.asc

在做其他事情之前先驗(yàn)證簽名赛惩,確保你剛剛下載的包不包含第三方植入的特洛伊木馬,并且在傳輸過程中沒有被損壞趁餐。

$ gpg --verify modsecurity-2.9.1.tar.gz.asc

gpg: Signature made Wed 09 Mar 2016 19:48:15 CET using DSA key ID E8B11277

gpg: Can't check signature: public key not found

您的第一次嘗試可能沒有提供預(yù)期的結(jié)果喷兼,但是可以通過從一個(gè)密鑰服務(wù)器導(dǎo)入引用的密鑰輕松地解決這個(gè)問題:

$ gpg --keyserver pgp.mit.edu --recv-keys E8B11277gpg: requesting key E8B11277 from hkp server pgp.mit.edugpg: key E8B11277: public key "Felipe Zimmerle da Nobrega Costa ..." imported

gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model

gpg: depth: 0 valid:3 signed:5 trust: 0-, 0q, 0n, 0m, 0f, 3u

gpg: depth: 1 valid:5 signed:5 trust: 2-, 0q, 0n, 2m, 1f, 0u

gpg: depth: 2 valid:4 signed:0 trust: 1-, 0q, 0n, 0m, 3f, 0u

gpg: next trustdb check due at 2018-09-26

gpg: Total number processed: 1

gpg:imported: 1

現(xiàn)在你可以再試一次:

$ gpg --verify modsecurity-2.9.1.tar.gz.ascgpg: Signature made Wed 09 Mar 2016 19:48:15 CET using DSA key ID E8B11277gpg: Good signature from "Felipe Zimmerle da Nobrega Costa ..."

gpg:aka "Felipe Zimmerle"gpg:aka "Felipe Costa"gpg:aka "Felipe Zimmerle (gmail)"

gpg:aka "[jpeg image of size 7280]"

gpg:aka "[jpeg image of size 14514]"

gpg: WARNING: This key is not certified with a trusted signature!

gpg:There is no indication that the signature belongs to the owner.

Primary key fingerprint: 190E FACC A1E9 FA46 6A8E CD9C E6DF B08C E8B1 1277

前面代碼片段中的警告可能看起來很嚴(yán)重,但通常不是問題;這與gpg希望你驗(yàn)證個(gè)人身份的方式有關(guān)后雷。這個(gè)警告基本上告訴你季惯,你從某個(gè)地方下載了斐利貝的鑰匙,但你并不真正知道它是屬于他的臀突。就gpg而言勉抓,唯一能確定的方法就是在現(xiàn)實(shí)生活中與斐利貝見面,或者與認(rèn)識(shí)他的人見面候学。如果你想了解更多藕筋,在維基百科上查一下信任網(wǎng)。

2.1.2從存儲(chǔ)庫下載

如果您希望處于最前沿梳码,直接從GitHub存儲(chǔ)庫下載最新的開發(fā)版本(ModSecurity項(xiàng)目使用的源代碼控制系統(tǒng))是可行的隐圾。當(dāng)你這樣做的時(shí)候,你會(huì)得到新的功能掰茶,甚至是在他們正式發(fā)布之前的幾個(gè)月就可獲得最新功能暇藏。話雖如此,但我們稱某些版本為“穩(wěn)定”是有原因的濒蒋。當(dāng)您使用存儲(chǔ)庫版本的ModSecurity時(shí)盐碱,您需要接受沒有任何保證可以確保它能夠正常工作。

在安裝ModSecurity的開發(fā)版本之前沪伙,您需要知道在哪里找到它瓮顽。存儲(chǔ)庫由GitHub托管,可以通過瀏覽器查看焰坪。GitHub上的默認(rèn)視圖是主源代碼樹趣倾,它顯示了最新的開發(fā)版本和最新的已被接受的更改。提議的更改可以通過pull請(qǐng)求或通過它們自己的分支來訪問某饰。這些活動(dòng)分支有時(shí)可能包含一個(gè)未被主源代碼所接受的特性或修復(fù)儒恋。如果您想下載一個(gè)發(fā)布候選版本或測(cè)試版本善绎,您可以通過一個(gè)單獨(dú)的子菜單訪問這些存檔。

一旦確定了要使用的ModSecurity版本的位置诫尽,就可以使用Git的克隆命令來獲得它:

$ git clone https://github.com/SpiderLabs/ModSecurity.git modsecurity-master

在modsecurity主文件夾中禀酱,您可以使用與下載版本時(shí)獲得的內(nèi)容相同的內(nèi)容。不過牧嫉,有些文件需要首先通過一個(gè)特殊的命令生成剂跟。此外,文檔可能不同步酣藻。主文檔保存在一個(gè)wiki中曹洽,其中包含了發(fā)布的wiki副本。

2.1.3在Unix下安裝

在開始編譯ModSecurity之前辽剧,您必須確保已經(jīng)安裝了完整的開發(fā)工具鏈送淆。請(qǐng)參考您正在使用的操作系統(tǒng)的文檔。如果您要將ModSecurity添加到操作系統(tǒng)提供的Apache中怕轿,您可能還需要安裝特定的Apache開發(fā)包偷崩。例如,在Debian和Ubuntu中撞羽,您需要使用apache2-dev阐斜。



如果已經(jīng)安裝了Apache,則只需要處理libcurl诀紊、libxml2谒出、Lua、ssdeep和YAJL渡紫。通過從源代碼編譯的Apache到推,您還需要PCRE庫。Apache不再與它捆綁在一起惕澎。要解決這個(gè)問題莉测,請(qǐng)分別安裝PCRE,然后告訴Apache使用外部副本;我將在本節(jié)后面解釋如何做唧喉。

如果您是從源代碼安裝捣卤,請(qǐng)?jiān)L問包的web站點(diǎn)并下載并安裝tarball。如果您使用的是托管包八孝,那么您只需要確定調(diào)用了哪些缺失的包董朝。在Debian家族的發(fā)行版中,以下命令安裝缺失的包:

# apt-get install libcurl3-dev liblua5.3-dev libxml2-dev libfuzzy-dev libyajl-dev

請(qǐng)參閱您的平臺(tái)使用的包管理系統(tǒng)的文檔干跛,以確定如何搜索包數(shù)據(jù)庫子姜。

請(qǐng)注意

用于遠(yuǎn)程登錄的Libcurl,可以被編譯為使用OpenSSL或GnuTLS楼入。建議您使用OpenSSL哥捕,因?yàn)楫?dāng)使用GnuTLS時(shí)牧抽,存在關(guān)于遠(yuǎn)程登錄問題的投訴。APR-Util通常是在不支持加密操作的情況下編譯的遥赚。如果您想要使用帶有參數(shù)密碼的指令秘密扬舒,您需要自己編譯APR-Util。

從這里開始凫佛,這個(gè)過程應(yīng)該很簡(jiǎn)單讲坎。如果您克隆了GitHub存儲(chǔ)庫并沒有下載一個(gè)版本,那么您需要生成配置腳本愧薛,該腳本用于準(zhǔn)備編譯過程:

$ ./autogen.sh

如果您下載了一個(gè)版本晨炕,那么您可以跳過這一步并直接執(zhí)行以下命令:

$ ./configure

$ make

這組命令假設(shè)您不需要任何編譯時(shí)選項(xiàng)。如果有毫炉,請(qǐng)參見下面的小節(jié)府瞄。

請(qǐng)注意

在編譯后運(yùn)行額外的測(cè)試(make test和make test-regression)始終是一個(gè)好主意,在使用ModSecurity的開發(fā)版本時(shí)尤其是個(gè)好主意碘箍。如果您有任何問題,您希望在安裝之前發(fā)現(xiàn)他們鲸郊,而不是之后丰榴。

在構(gòu)建完ModSecurity之后,還需要進(jìn)行安裝:

$ sudo make install

該命令將模塊添加到Apache安裝中秆撮,但不激活它;你必須手動(dòng)操作四濒。(當(dāng)您這樣做時(shí),請(qǐng)確認(rèn)是否啟用了mod_unique_id;ModSecurity需要它职辨。)該命令還將創(chuàng)建一個(gè)文件夾(默認(rèn)為/usr/local/modsecurity)盗蟆,并存儲(chǔ)其中的各種運(yùn)行時(shí)文件。以下是你得到的:

bin/

? ? ? mlogc

? ? ? ? mlogc-batch-load.pl

? ? ? ? rules-updater.pl

lib/

? ? ? ? mod_security2.so

編譯時(shí)選擇

前一節(jié)的配置示例假設(shè)這些依賴項(xiàng)都是作為系統(tǒng)庫安裝的舒裤。它還假設(shè)configure腳本將自己處理所有事情喳资。它可能會(huì),也可能不會(huì)腾供,但很有可能你偶爾需要做一些不同的事情;這就是表2.3中列出的編譯時(shí)選項(xiàng)派上用場(chǎng)的地方仆邓。


對(duì)于ModSecurity的審計(jì)日志格式,還有一些其他選項(xiàng)伴鳖。它們很少在實(shí)踐中使用节值,但請(qǐng)查看configure腳本以獲得概述。

自定義編譯Apache安裝

使用帶有定制編譯版本的Apache的ModSecurity非常簡(jiǎn)單榜聂。在Apache 2.2中搞疗,曾經(jīng)出現(xiàn)過PCRE和mod_unique_id模塊在默認(rèn)情況下無法啟用的問題须肆,但是這些問題都是在Apache 2.4中解決了匿乃。

要配置ModSecurity桩皿,可以使用- with_apxs編譯時(shí)選項(xiàng)來指定Apache安裝的位置。在下面的例子中扳埂,我假設(shè)Apache安裝在/usr/local/apache:

$ ./configure \

? ? ? ? ? --with-apxs=/usr/local/apache/bin/apxs

從這里開始业簿,按照上一節(jié)的描述安裝ModSecurity。

在安裝了Apache和ModSecurity之后阳懂,您應(yīng)該確認(rèn)兩個(gè)產(chǎn)品都鏈接到同一個(gè)PCRE庫梅尤,使用ldd:

$ ldd /usr/local/apache/bin/httpd | grep pcre

libpcre.so.3 => /lib64/libpcre.so.3 (0x00007ff2a11fd000)

編譯ModSecurity時(shí),應(yīng)該得到相同的結(jié)果:

$ ldd /usr/local/apache/modules/mod_security2.so | grep pcre

libpcre.so.3 => /lib64/libpcre.so.3 (0x00007f85995c5000)

提示

Mac OS X沒有l(wèi)dd岩调,但是您可以通過運(yùn)行otool與選項(xiàng)-L來獲得等價(jià)的功能巷燥。如果您確實(shí)遇到了瓶頸,請(qǐng)考慮使用install_name_tool在ModSecurity編譯后更改庫依賴項(xiàng)号枕。

很可能有一個(gè)配置缰揪,在這個(gè)配置中,Apache使用其綁定的PCRE葱淳,而ModSecurity使用系統(tǒng)上可用的另一個(gè)PCRE版本钝腺。

ModSecurity報(bào)告在啟動(dòng)時(shí)檢測(cè)到的庫版本號(hào)(在錯(cuò)誤日志中),并將它們與編譯時(shí)使用的數(shù)據(jù)進(jìn)行比較赞厕。如果發(fā)現(xiàn)不匹配艳狐,將發(fā)出一個(gè)或多個(gè)警告。這個(gè)特性對(duì)于解決各種庫沖突(可能發(fā)生在奇怪的情況下)來說特別方便皿桑。

ModSecurity for Apache/2.9.1 (http://www.modsecurity.org/) configured.

ModSecurity: APR compiled version="1.5.2"; loaded version="1.5.2"

ModSecurity: PCRE compiled version="8.39 "; loaded version="8.39 2016-06-14"

ModSecurity: LUA compiled version="Lua 5.2"

ModSecurity: YAJL compiled version="2.0.4"

ModSecurity: LIBXML compiled version="2.9.1"

2.2從二進(jìn)制文件安裝

    正如前面所討論的毫目,使用ModSecurity的二進(jìn)制版本通常是最簡(jiǎn)單的選擇,因?yàn)樗怯行У幕逦辍2恍业氖嵌婆埃诎惭b時(shí)所獲得的便利,有時(shí)會(huì)被限制在較舊版本上沟绪。此外刮便,packager通常不包括mlogc,這有助于遠(yuǎn)程日志集中化近零。一般來說诺核,如果您對(duì)模塊的編譯方式?jīng)]有問題,那么您就可以使用二進(jìn)制包了久信。

2.3Fedora Core, CentOS窖杀,紅帽企業(yè)Linux。

如果您是Fedora用戶裙士,您可以直接從官方發(fā)行版安裝ModSecurity入客,使用yum:

# yum install mod_security

在CentOS和Red Hat Enterprise Linux上,您必須使用來自企業(yè)Linux的額外軟件包(EPEL)的包,這是Fedora社區(qū)的一部分桌硫。安裝過程與Fedora相同夭咬。

2.4Debian和Ubuntu

Debian是第一個(gè)包含ModSecurity的發(fā)行版。Alberto Gonzalez Iniesta一直是Debian的ModSecurity的長(zhǎng)期支持者铆隘,在他自己的(非官方的)存儲(chǔ)庫中支持ModSecurity卓舵,后來成為官方的包裝器。

如果您運(yùn)行的是Debian家族的版本膀钠,安裝很簡(jiǎn)單:

# apt-get install libapache2-mod-security2

此單個(gè)命令將下載軟件包并安裝掏湾,然后激活A(yù)pache配置中的模塊。

請(qǐng)注意

不要忘記Debian使用了一個(gè)特殊的命名配置文件系統(tǒng)來管理Apache模塊和站點(diǎn)肿嘲。要激活和停用模塊融击,分別使用a2enmod和a2dismod。為了管理Apache雳窟,使用apache2ctl尊浪。

2.5在Windows上安裝

ModSecurity早在2003年就被移植到Windows上,此后一直運(yùn)行良好封救。Windows二進(jìn)制包的ModSecurity由Steffen Land維護(hù)拇涤,他管理Apache Lounge,這個(gè)社區(qū)是為那些在Windows上運(yùn)行Apache的人提供的誉结,除了ModSecurity之外工育,Steffen還維護(hù)了他自己的Apache版本,以及許多第三方模塊搓彻。

您可能想在Windows上運(yùn)行。ModSecurity二進(jìn)制包一直都是最新的嘱朽,所以如果你想運(yùn)行最新版本旭贬,你會(huì)遇到一點(diǎn)麻煩。下載包括ModSecurity和mlogc搪泳。

請(qǐng)注意

雖然可以使用其他地方生成的Apache版本來運(yùn)行Steffen的ModSecurity二進(jìn)制文件稀轨,但您實(shí)際上應(yīng)該只使用那些打算一起使用的單個(gè)位置的包。否則岸军,您可能會(huì)遇到異常行為和web服務(wù)器崩潰奋刽。


安裝很簡(jiǎn)單。首先艰赞,下載包并將動(dòng)態(tài)庫復(fù)制到模塊/文件夾(Apache安裝)中佣谐。然后,修改Apache配置以激活ModSecurity:

LoadModule security2_module modules/mod_security2.so

您還需要激活mod_unique_id方妖。這個(gè)模塊可能沒有被激活狭魂,但是在您的配置中應(yīng)該已經(jīng)有一個(gè)注釋了的行。你只需要找到它并取消注釋。如果沒有雌澄,只需添加以下內(nèi)容:

LoadModule unique_id_module modules/mod_unique_id.so


2.6總結(jié)

安裝ModSecurity從來都不是件容易的事斋泄,因?yàn)樗嗽S多操作系統(tǒng)和發(fā)行版。雖然從源代碼安裝可以保證訪問最新版本镐牺,也可以訪問尚未發(fā)布的代碼炫掐,但是如果您不習(xí)慣使用它,它可能會(huì)很費(fèi)時(shí)間;每個(gè)人都有不同的習(xí)慣睬涧。使用提供的版本有一些事情需要說明募胃,不必考慮升級(jí)(并節(jié)省升級(jí)所需的時(shí)間)。

在下一章中宙地,我將解釋每一個(gè)配置選項(xiàng)摔认,教你如何設(shè)置每一個(gè)選項(xiàng),一步一步地宅粥,讓一切都是你喜歡的方式参袱。

最后編輯于
?著作權(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
  • 我被黑心中介騙來泰國(guó)打工傻盟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫂丙。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓娘赴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親跟啤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诽表,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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