一般來說,有兩種形式的 DOS 攻擊:
- OSI 模型的三、四層,即網絡層攻擊
- OSI 模型的七層,即應用層攻擊
第一種類型的 DOS 攻擊——網絡層,發生於當大量的垃圾流量流向網頁服務器時。當垃圾流量超過網絡的處理能力時,網站就會宕機。
第二種類型的 DOS 攻擊是在應用層,是利用合法的服務請求,而不是垃圾流量。當頁面請求數量超過網頁服務器能承受的容量時,即使是合法訪問者也將無法使用該網站。
在沒有硬件防禦的情況下,使用apache的模塊 mod_evasive ,可以緩解來自應用層的攻擊。
下載mod_eva :https://github.com/jzdziarski/mod_evasive
編譯到apache中:/usr/local/apache24/bin/apxs -i -a -c mod_evasive20.c
此時,模塊被安裝到了apache目錄下的modules下。
編輯httpd.conf,增加如下內容:
<IfModule mod_evasive20.c>
#定義哈希表的大小,
DOSHashTableSize 3097
#間隔對同一頁面(或URI)的請求數量的閾值。一旦超過該間隔的閾值,客戶端的IP地址將被添加到黑名單(也就是每個頁面的請求次數,當然這個請求次數是有定義的,由DOSPageInterval定義)
DOSPageCount 2
#間隔時間內對網站內任意頁面的請求數,超過次數,則客戶端被拉入黑名單,時間間隔由(DOSSiteInterval定義)
DOSSiteCount 50
#網頁訪問計數的間隔
DOSPageInterval 1
#網站訪問計數的間隔
DOSSiteInterval 1
#放入黑名單中的時長
DOSBlockingPeriod 10
</ IfModule>
還有一些別的配置,可以參考此模塊作者的github上的說明(地址見上方下載鏈接),這裏簡單說一下:
DOSEmailNotify 只要觸發黑名單,則郵件通知對應的人員
DOSSystemCommand 只要觸發黑名單,執行的系統指令
DOSLogDir 日誌記錄位置,需要此文件夾與apache相同的屬組和屬主
DOSWhitelist 127.0.0.1 白名單中的地址
安裝完成後可以使用ab或者別的工具進行測試,這裏就不再做介紹了 。