mod_dosevasive是一個Apache上的可選模塊,它能應對一些基於HTTP的拒絕服務攻擊,就是常說的Dos或者DDos攻擊,這種攻擊是讓很多大小網站都頭疼的攻擊方式,mod_dosevasive從Apache1.3開始出現,雖然不能完全徹底的防止大規模的DDos攻擊,但是對於普通的攻擊來說,還是非常不錯的選擇。
mod_dosevasive通過對來訪IP地址和訪問URI建立內部動態哈希表來檢測是否有攻擊,如果有如下的行為將拒絕該IP的訪問:
1. 每秒對同一頁面的請求數超過平時(原文:Requesting the same page more than a few times per second)。
2. 每秒同一個子進程有超過50次的並發請求。
3. 臨時被拒絕(在blacklist中)的時候還不斷進行請求。
mod_dosevasive可以非常方便的和防火牆、路由器等進行整合,進一步提高抗拒絕服務的能力。和別的防攻擊工具一樣,mod_dosevasive同樣收到帶寬、系統處理能力等因素的影響,所以要想應對大規模的攻擊,最好的方式就是把mod_dosevasive和您的防火牆和路由器進行整合,而不是簡單的安裝成為獨立的Apache模塊。
mod_dosevasive在apache2.2.2上的安裝方法:
一、使用源碼安裝:
1、下載
#cd /tmp (任何別的目錄都行)
2、解壓縮
#tar -zxvf mod_dosevasive_1.10.1.tar.gz
#cd mod_dosevasive
3、以動態模塊方式編譯
# apxs -i -a -c mod_dosevasive20.c
二、使用FreeBSD的port進行安裝(強烈推薦此方式)
#cd /usr/ports/www/mod_dosevasive20
#make install clean
至此,完成了mod_dosevasive的安裝,重啟apache服務後,它就開始工作了,這個時候您如果不作任何別的設置,它也可以使用默認配置為您提供良好的防攻擊能力,當然,您也可以自己進行一些參數的定制配置,可選的參數如下:
Apache 1.3.x
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
Apache 2.x
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
參數簡單說明:
DOSHashTableSize 3097 記錄和存放黑名單的哈西表大小,如果服務器訪問量很大,可以加大該值
DOSPageCount 5 同一個頁面在同一時間內可以被統一個用戶訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設置。
DOSSiteCount 50 同一個用戶在同一個網站內可以同時打開的訪問數,同一個時間的數值在DOSSiteInterval中設置。
DOSPageInterval 2 設置DOSPageCount中時間長度標准,默認值為1。
DOSSiteInterval 2 設置DOSSiteCount中時間長度標准。
DOSBlockingPeriod 10 被封時間間隔秒,這中間會收到 403 (Forbidden) 的返回。
其他可選參數:
DOSSystemCommand “su - someuser -c ‘/sbin/… %s …’” 受到攻擊時Apache運行用戶執行的系統命令
DOSLogDir “/var/lock/mod_dosevasive” 攻擊日志存放目錄,BSD上默認是 /tmp
下面是我的服務器上看到的一些日志情況:
#cd /tmp
#ll |wc -l
2303
#ls
......
dos-218.64.69.71 dos-219.80.33.54 dos-222.214.156.211
dos-218.64.79.59 dos-219.82.143.127 dos-222.214.2.148
dos-218.64.81.162 dos-219.82.46.245 dos-222.214.206.162
dos-218.65.102.178 dos-220.113.43.61 dos-222.214.207.191
......
#more dos-218.64.69.71
30611
可以看到,這個ip地址有30611次的訪問攻擊被記錄!