標籤:發送 預設 count 實驗 target restart interval 位置 並發
關於Apache (httpd)伺服器防DDOS模組mod_evasive的使用說明
1、 mod_evasive 介紹;
mod_evasive 是Apache(httpd)伺服器的防DDOS的一個模組。對於WEB伺服器來說,是目前比較好的一個防護DDOS攻擊的擴充模組。雖然並不能完全防禦 DDOS攻擊,但在一定條件下,還是起到緩服Apache(httpd)伺服器的壓力。如果配合iptables、硬體防火牆等防火牆裝置配合使用,可能 有更好的效果。可惜LinuxSir.Org 並沒有硬體防火牆,所以是否這種組合效果有更好的效果,我沒辦法驗證。
mod_evasive 的官方地址: http://www.zdziarski.com/projects/mod_evasive
2、 mod_evasive 的安裝和配置;
2.1 mod_evasive 的;
mod_evasive_1.10.1.tar.gz
2.2 mod_evasive 的安裝;
安裝 mod_evasive 之前,你要用安裝Apache(httpd)伺服器軟體包,還要安裝httpd-devel或 apache-dev。在Slackware 12.0中,安裝httpd軟體即可;
對於Apache 1.x 請用下面的編譯方法;
#/usr/sbin/apxs -iac mod_evasive.c
對於Apache 2.x 可以用下面的辦法;
#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
#/usr/sbin/apxs -i -a -c mod_evasive20.c
註:apxs 用於編譯模組工具;如果是用系統內建的軟體包,一般位於/usr/sbin目錄。如果您是自己編譯安裝Apache(httpd)的,你應該自己來指定路徑;
我們然後修改/etc/ld.so.conf 檔案,把編譯出來的動態模組的所在位置指定在 ld.so.conf中;比如我用的是Aapche 2.x ,編譯完成後,模組mod_evasive20.so 安裝到了 /usr/lib/httpd/modules 目錄中;那我們就要把 這個目錄寫入到ld.so.conf中。
#echo "/usr/lib/httpd/modules" >> /etc/ld.so.conf
#ldconfig
註: 具體要與你的系統內容為準,不要照搬照抄,如果你對Linux不太熟的話;
2.3 mod_evasive 的配置;
在編譯安裝完成後,會自動插入一行到Apache 設定檔中,對於Apache 2.x 版本中,應該在其設定檔中有類似下面的一行;
LoadModule evasive20_module lib/httpd/modules/mod_evasive20.so
對於Apache 1.x來說,也應該差不多,大體只是路徑不同罷了;
然後我們再修改 Apache 的設定檔,設定檔名為httpd.conf;
在Apache v1.x 版本中,要加入;
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
在Apache v2.x加入;
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
如果您不知道把這些插入到哪,用下面的辦法做也是可以的;
在/etc目錄中建立一個檔案,比如mod_evasive.conf;
#touch /etc/mod_evasive.conf
然後把根據自己的Apache版本來加入相應的內容;
接著我們再修改 httpd.conf ,在最後一行加入
Include /etc/mod_evasive.conf
修改完成後,我們要重啟Apache伺服器;
比如在Slackware 12.0中,Apache 2.x的重啟,我們要用到
#/etc/rc.d/rc.httpd restart
在Redhat、Fededora、Debian、Ubuntu、CentOS中的Apache,可以用;
#/etc/init.d/httpd restart
或
#/etc/init.d/apache restart
大體上差不多是這樣的……
2.4 對mod_evasive測實驗證 ;
防DDOS的模組做好後,我們可以要驗證,可以用Apache 內建的ab工具,系統預設安裝在/usr/sbin目錄中;比如;
#/usr/sbin/ab -n 1000 -c 50 http://www.google.com:80/
註:上面的例子的意思是,如果您的伺服器是google的WEB伺服器,我們要發送資料請求包,總共1000個,每次並發50個;
另外一個測試載入器就是mod_evasive的解壓包的目錄中,有個test.pl ,你可以修改IP地址,然後用
#perl test.pl
是不是有效果,請根據 ab工具或 測試指令碼出來的結果來查看;
因為我們編譯mod_evasive時,用的是預設配置,所以日誌被存放在/tmp目錄中。如果有DDOS攻擊,會在/tmp產生日誌。日誌的檔案是以 dos-開頭的;
3、mod_evasive 的進階配置;
如果想更改一些適合自己的參數,有些必要的參數,並不是通過設定檔修改就一下起作用的,我們要修改源碼包中的 mod_evasive.c(Apache 1.x用之) 或 mod_evasive20.c (Apache 2.x用之);
#define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR "/tmp" // Default temp directory
比如我們改改其中的數字,根據英文很容易理解。比如修改日誌存放目錄,就把/tmp改成別的目錄。如果您不知道放在哪好,還是用預設的吧;
如果您在這裡更改了參數,不要忘記修改Apache 設定檔中關於mod_evasive 的參數;
如果您想加入一些其它的參數,請查閱源碼包中的README,裡面有詳細說明,大多來說沒太大的必要……
這個檔案相當重要,如果您想更改某些設定,就要修改這個檔案……
4、關於本文;
mod_evasive 還是有點用的,安裝也不費力氣。如果你需要的時候,會想到這個模組的 …… mod_evasive 是否有更進階的用法,也不是在這篇文章裡能說的清楚的。如果不懂怎麼辦?請查看源碼包中的README。
關於Apache (httpd)伺服器防DDOS模組mod_evasive的使用說明