如何安裝 Mod_Security 和 Apache 網頁伺服器專用的 Mod_Evasive ?

說明
Mod_Security : Mod_Security 是一個網頁應用層的防火牆 (Web Application Firewall, WAF) 與網頁應用層的入侵偵測及防範系統。用來保護並監視即時的 HTTP 流量。

Mod_Evasive : 幫 Apache 網頁伺服器裝設 mod_evasive20 以免被 “暴力性攻擊”、DOS 或 DDOS。它也會在流量不正常時透過 email 或系統 log 送出異常報告資訊。

環境假設:RedHat Linux 6.3, Apache 2.2.15

如何安裝 Mod_Security 和 Mod_Evasive

1. 安裝 rpms
rpm -i libxml2-2.7.6-4.el6_2.4.x86_64.rpm
rpm -i libxml2-devel-2.7.6-4.el6_2.4.x86_64.rpm
rpm -i apr-devel-1.3.9-3.el6_1.2.x86_64.rpm
rpm -i expat-devel-2.0.1-11.el6_2.x86_64.rpm
rpm -i apr-util-devel-1.3.9-3.el6_0.1.x86_64.rpm
rpm -i httpd-devel-2.2.15-15.el6_2.1.x86_64.rpm
rpm -i pcre-devel-7.8-4.el6.x86_64.rpm
rpm -i curl-7.19.7-26.el6_2.4.x86_64.rpm

2. 抓 srouce tar ball
sftp> get modsecurity-apache_2.6.7.tar.gz
sftp> get modsecurity-crs_2.2.5.tar.gz
sftp> get mod_evasive_1.10.1.tar.gz

3. 安裝 Mod_Security
tar xzf modsecurity-apache_2.6.7.tar.gz
cd modsecurity-apache_2.6.7
./configure
make install
cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf

4. 為 Mod_Security 下載 OWASP Mod_Security 核心規則集
cd /etc/httpd/
cp ~root/work/modsecurity-crs_2.2.5.tar.gz .
tar xzf modsecurity-crs_2.2.5.tar.gz
mv modsecurity-crs_2.2.5 modsecurity-crs
cd modsecurity-crs
cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf

5. 安裝 Mod_Evasive
tar xzf mod_evasive_1.10.1.tar.gz
cd mod_evasive
apxs -cia mod_evasive20.c

6. 設定 Mod_Security 和 evasive20
…..
# 2013/02/15, added by jjdai
LoadModule security2_module modules/mod_security2.so
# For APACHE v1.3
#AddModule mod_evasive.c
# For APACHE v2.0
LoadModule evasive20_module /usr/lib64/httpd/modules/mod_evasive20.so

#
# The following modules are not loaded by default:
…..
# 2013/02/15, added by jjdai
<IfModule security2_module>
Include modsecurity-crs/modsecurity_crs_10_config.conf
Include modsecurity-crs/base_rules/*.conf
</IfModule>
# For APACHE v1.3
#<IfModule mod_evasive.c>
# DOSHashTableSize 3097
# DOSPageCount 2
# DOSSiteCount 50
# DOSPageInterval 1
# DOSSiteInterval 1
# DOSBlockingPeriod 10
#</IfModule>
# For APACHE v2.0
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>

7. 為 Mod_Security 啟用 mod_unique_id
LoadModule unique_id_module modules/mod_unique_id.so

8. 重新啟動 Apache 網頁伺服器以採用 Mod_Security 和 Mod_Evasive :
sudo service httpd restart

討論
1o
Mod_Security 要是設定不對或運作不正常時會輸出很多 log 資訊到 http log 去,會有很恐怖的 I/O 量,所以要確認它是運作正常的,不然整個系統的負載會變得很高。
另外,Mod_Security 和 Mod_Evasive 是個別獨立的機制,所以可以例如:只啟用 Mod_Evasive 而不用 Mod_Security,這樣是可以的。

2o Mod_Evasive 還有個多選用的選項可用:
DOSEmailNotify you@yourdomain.com
DOSSystemCommand “su – someuser -c ‘/sbin/… %s …'”
DOSLogDir “/var/lock/mod_evasive”

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.