modsecurity簡介
mods 是apache的一個安全模組,他的作用是web應用防火牆(WAF).如果不懂WAF請自行google下。
問題的由來
mods在yum源(centos)以及apt源(ubuntu)下都有現成的安裝包。只需要類似 apt-get install 或者yum install 即可。
但是在mac的osx系統下,沒有任何二級制安裝包,如果想在osx上玩mods,那就需要從原始碼編譯
原始碼編譯
一般來說,一條命令就可以搞定。誰讓brew很逆天呢。
命令如下:
brew install homebrew/apache/mod_security
如果順利的話,brew會下載所有依賴以及mods的原始碼進行編譯安裝。但是….貌似一般不會那麼順利。
編譯時問題
1. brew安裝時,在寫入usr等資料夾的時候會說沒有許可權。加上sudo 或者sudo -i切換到root再安裝的時候,又會說『使用root許可權安裝太危險了』….黑人問號臉,你特麼在逗我,那你說該怎麼裝嘛..
解決方案: sudo chown ${whoami} /usr 直接暴力把/usr的歸屬給變成了當前使用者..哪位大佬有其他方案請分享出來
2. 下載mods包的時候一直沒進度(是curl抽風了好麼)
解決方案:
-
brew會顯示從那個url下載該原始碼包。複製url,瀏覽器下載
-
然後執行brew –cache看看cache目錄在哪裡
-
把下載下來的壓縮包丟到該目錄下面(奇怪的是我這邊顯示出來的cache目錄不是顯示出來的cache目錄,大家可以往/Users/xxx/Library/Caches/Homebrew/放一份再)
3. 安裝到最後的提示沒有apu或者apr庫
這個有點麻煩,理論上brew會幫忙裝好的。但是我看日誌好像是mods的makefile指定的apr/apu的目錄有問題,修改makefile有點麻煩,又不知道brew把apr和apu裝到哪裡去了。所以自己下載apr和apu的安裝包,再編譯了一遍,然後./configration的時候通過引數指定路徑。參考
4. 要安裝xcode,並且升級到最新版本
5. 安裝的時候會提示xcode commond tool沒有安裝,然後給你一個命令,你要執行一下安裝程式,然後要重啟下機器
xcode-select --install
6. 如果沒有關閉Rootless機制,會報錯opration not premitted
我之前就關閉了,雖然是一個不錯的安全策略,但是對開發者很不方便。
具體關閉步驟:
-
重啟機器,在啟動的時候長按command+R,進入恢復模式
-
開啟terminal,執行
csrutil disable
-
重啟機器到正常模式
7. 如果還是編譯失敗,你可以把下載下來的mods的包解壓,然後自己編譯(反正我是成功了)
編譯方式如下:(請使用sudo -i 切換到root使用者下)
進行configration
./configure --prefix=/usr/local/Cellar/mod_security/2.9.1 --with-pcre=/usr/local/opt/pcre --with-apxs=/usr/sbin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apu=/usr/local/apr/bin/apu-1-config
make
在解壓目錄下執行 make
make install
在解壓目錄下執行 make install
檢查是否編譯成功並配置
-
請檢查
/usr/local/Cellar/mod_security/2.9.1/lib
下是否有mod_security2.so
,若有則標識編譯成功 -
進行模組配置
1. vim /etc/apache2/httpd.conf
2. 配置載入模組:
LoadModule security2_module /usr/local/Cellar/mod_security/2.9.1/lib/mod_security2.so
3. 從原始碼目錄複製配置檔案到指定資料夾
cp modsecurity.conf-recommended /etc/apache2/other/modsecurity.conf
啟動apache
sudo apachectl start