Apache防DDOS模塊mod_evasive安裝和配置方法詳解

一、mod_evasive 介紹
mod_evasive 是Apache(httpd)服務器的防DDOS的一個模塊。對於WEB服務器來說,是目前比較好的一個防護DDOS攻擊的擴展模塊。雖然並不能完全防禦DDOS攻擊,但在一定條件下,還是起到緩服Apache(httpd)服務器的壓力。如配合iptables、硬件防火牆等防火牆設備配合使用,可能有更好的效果。
mod_evasive 的官方地址: http://www.zdziarski.com/
二、mod_evasive 工作原理
Apache模塊mod_evasive利用Hash表儲存相應的HTTP請求,利用設定規則判斷是否拒絕對方的請求。
三、mod_evasive 安裝

複製代碼代碼如下:

wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar zxvf mod_evasive_1.10.1.tar.gz 
cd mod_evasive/
apxs -i -a -c mod_evasive20.c
#編譯、安裝、並加載模塊
#注:apxs 用於編譯模塊工具;如果是用系統自帶的軟件包,一般位於/usr/sbin目錄。如果您是自己編譯安裝Apache(httpd)的,你應該自己來指定路徑;

 

在編譯安裝完成後,會自動插入一行到Apache 配置文件中,對於Apache 2.x 版本中,應該在其配置文件中有類似下面的一行;

複製代碼代碼如下:
LoadModule evasive20_module   lib/httpd/modules/mod_evasive20.so


四、配置mod_evasive

複製代碼代碼如下:

[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
#加入以下配置
<IfModule mod_evasive20.c>
    DOSHashTableSize    3097 #表大小
    DOSPageCount        2 #限制單位時間內同一IP請求同一網頁次數
    DOSSiteCount        10 #限制單位時間內同一IP請求網站次數
    DOSPageInterval     1 #網頁存取間隔
    DOSSiteInterval     1 #網站存取間隔
    DOSBlockingPeriod   10 #限制訪問時間
    DOSEmailNotify     #疑似攻擊時郵件通知
    DOSSystemCommand "su - onovps -c iptables -I INPUT -s %s --dport 80 -j DROP" 
    #疑似攻擊時用防火牆限制IP訪問80端口
    DOSLogDir  "/var/log/    #日誌目錄
    DOSWhiteList 127.0.0.1 #添加白名單
</IfModule>


如果您不知道把這些插入到哪,用下面的辦法做也是可以的;
在/etc目錄中創建一個文件,比如mod_evasive.conf;

複製代碼代碼如下:
[root@localhost ~]#touch /etc/mod_evasive.conf


然後把根據自己的Apache版本來加入相應的內容;
接着我們再修改 httpd.conf ,在最後一行加入

複製代碼代碼如下:
Include /etc/mod_evasive.conf

 

修改完成後,我們要重啓Apache服務器使配置生效:

複製代碼代碼如下:
/etc/init.d/httpd restart


五、測試mod_evasive
防DDOS的模塊做好後,我們可以要驗證,可以用Apache 自帶的ab工具,系統默認安裝在/usr/sbin目錄中;比如;

複製代碼代碼如下:
[root@localhost ~]/usr/sbin/ab -n 1000 -c 50 http://www.baidu.com:80/


注:上面的例子的意思是,如果您的服務器是百度的WEB服務器,我們要發送數據請求包,總共1000個,每次併發50個;
另外一個測試工具就是mod_evasive的解壓包的目錄中,有個test.pl ,你可以修改IP地址,然後用

複製代碼代碼如下:
[root@localhost ~]perl test.pl 
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden


是不是有效果,請根據 ab工具或 測試腳本出來的結果來查看;
注:因爲我們編譯mod_evasive時,用的是默認配置,所以日誌被存放在/tmp目錄中。如果有DDOS攻擊,會在/tmp產生日誌。日誌的文件是以 dos-開頭的;
六、配置參數詳解
DOSHashTableSize 3097:定義哈希表大小。   
DOSSiteCount 50:允許客戶機的最大併發連接。   
DOSPageCount 2:允許客戶機訪問同一頁的間隔。   
DOSPageInterval 1:網頁訪問計數器間隔。   
DOSSiteInterval 1:全站訪問計數器間隔。   
DOSSiteInterval 60:加入黑名單後拒絕訪問時間。   
DOSEmailNotify [email protected]:有IP加入黑名單後通知管理員。   
DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":IP加入黑名單後執行的系統命令。   
DOSLogDir "/tmp":鎖定機制臨時目錄,日誌目錄。   
DOSWhiteList 127.0.0.1:防範白名單,不阻止白名單IP。
七、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,裏面有詳細說明,大多來說沒太大的必要……
這個文件相當重要,如果您想更改某些設置,就要修改這個文件……

 

八、總結
mod_evasive 還是有點用的,對於apache服務器來說,是目前比較好的一個防護DDOS攻擊的擴展模塊。雖然並不能完全防禦 DDOS攻擊,但在一定條件下,還是起到緩服Apache(httpd)服務器的壓力。如果配合iptables、硬件防火牆等防火牆設備配合使用,可能有更好的效果。安裝也不費力氣。如果你需要的時候,會想到這個模塊的。

發佈了60 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章