modsecurity原本是apache上的一款開源waf,可以有效的增強web安全性,目前已經支援nginx和iis,配合nginx的靈活和高效,可以打造成生產級的waf,是保護和審核web安全的利器。
系統:centos 6.5 64位、 tengine 2.1.0, modsecurity 2.8.0
tengine
依賴關係:
tengine(nginx)依賴: pcre 、zlib、 openssl, 這三個包centos 6.5 系統源裡都有:
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
modsecurty依賴的包:pcre httpd-devel libxml2 apr
make在編譯standalone後,nginx編譯時可以通過"--add-module"新增modsecurity模組:
./configure --add-module=/root/modsecurity-2.8.0/nginx/modsecurity/ --prefix=/opt/tengine
make && make install
modsecurity傾向於過濾和阻止web危險,之所以強大就在於規則,owasp提供的規則是於社群志願者維護的,被稱為核心規則crs(corerules),規則可靠強大,當然也可以自定義規則來滿足各種需求。
git clone
mv owasp-modsecurity-crs /opt/tengine/conf/
cd /opt/tengine/conf/owasp-modsecurity-crs && mv modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
編輯modsecurity.conf 檔案,將secruleengine設定為 on
owasp-modsecurity-crs下有很多存放規則的資料夾,例如base_rules、experimental_rules、optional_rules、slr_rules,裡面的規則按需要啟用,需要啟用的規則使用include進來即可。
include owasp-modsecurity-crs/modsecurity_crs_10_setup.conf
include owasp-modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf
include owasp-modsecurity-crs/base_rules/modsecurity_crs_41_xss_attacks.conf
include owasp-modsecurity-crs/base_rules/modsecurity_crs_40_generic_attacks.conf
include owasp-modsecurity-crs/experimental_rules/modsecurity_crs_11_dos_protection.conf
include owasp-modsecurity-crs/experimental_rules/modsecurity_crs_11_brute_force.conf
include owasp-modsecurity-crs/optional_rules/modsecurity_crs_16_session_hijacking.conf
在需要啟用modsecurity的主機的location下面加入下面兩行即可:
modsecurityenabled on;
modsecurityconfig modsecurity.conf;
下面是兩個示例配置,php虛擬主機:
server
}
upstream負載均衡:
upstream 52os.net
server
}
我們啟用了xss和sql注入的過濾,不正常的請求會直接返回403。以php環境為例,新建乙個phpinfo.php內容為:
<?php
phpinfo();
?>
在瀏覽器中訪問:
正常顯示。
and 1=1 返回403。
'xss'); 返回403。
說明sql注入和xss已經被過濾了
1.缺少apxs會報錯
configure: looking for apache module support via dso through apxs
configure: error: couldn't find apxs
apxs是乙個為apache http伺服器編譯和安裝擴充套件模組的工具,用於編譯乙個或多個源程式或目標**檔案為動態共享物件。
解決方法:
yum install httpd-devel
2.沒有pcre
configure: *** pcre library not found.
configure: error: pcre library is required
解決方法:
yum install pcre pcre-devel
3.沒有libxml2
configure: *** xml library not found.
configure: error: libxml2 is required
解決方法:
yum install libxml2 libxml2-devel
tengine version: tengine/2.1.0 (nginx/1.6.2)
nginx: [warn] modsecurity: loaded apr do not match with compiled!
原因:modsecurity編譯時和載入時的apr版本不一致造成的,並且會有以下error.log
2015/01/26 02:04:18 [notice] 29036#0: modsecurity for nginx (stable)/2.8.0 () configured.
2015/01/26 02:04:18 [notice] 29036#0: modsecurity: apr compiled version="1.5.0"; loaded version="1.3.9"
2015/01/26 02:04:18 [warn] 29036#0: modsecurity: loaded apr do not match with compiled!
2015/01/26 02:04:18 [notice] 29036#0: modsecurity: pcre compiled version="7.8 "; loaded version="7.8 2008-09-05"
2015/01/26 02:04:18 [notice] 29036#0: modsecurity: libxml compiled version="2.7.6"
2015/01/26 02:04:18 [notice] 29036#0: status engine is currently disabled, enable it by set secstatusengine to on.
解決方法,移除低版本的apr (1.3.9)
yum remove apr
5.error.log中有: audit log: failed to lock global mutex
2015/01/26 04:15:42 [error] 61610#0: [client 10.11.15.161] modsecurity: audit log: failed to lock
global mutex: permission denied [hostname ""] [uri "/i.php"] [unique_id "acacacacacacaca4dca7acac"]
secauditlogdirmode 0777
secauditlogfilemode 0550
secauditlogstoragedir /var/log/modsecurity
secauditlogtype concurrent
參考文章: fastdfs 配合nginx 麻煩的
nginx可以做什麼?看完這篇你就懂了 ly csdn部落格 以自有的內容為操作,其它版本操作會不同 解壓縮nginx tar xvfz nginx 1.8.1.tar.gz 解壓縮 root ecs python01 fastdfs安裝 unzip fastdfs nginx module mas...
Apache安全 安裝啟用 ModSecurity
modsecurity apache modsecurity crs 2 安裝 1 啟用 mod unique id 模組 2 驗證伺服器安裝了最新版本libxml2函式庫 3 停止apache httpd 4 解壓 gzip d modsecurity apache 2.6.3.tag.gz ta...
frp配合nginx實現內網穿透
linux 執行 wget tar zxvf frp 0.24.0 linux amd64.tar.gz 解壓後 common 為父網域名稱 subdomain host youxiu326.xin frps服務埠 bind port 7000 web遠端訪問埠 frp客戶和服務端token相同才可...