部署在雲端的虛擬機和web服務,很容易受到DoS護着DDoS的服務***,讓一些新上線的業務苦不堪言,固然各個雲服務提供商也有不一樣層面DDOS的防禦,然而因爲防禦粒度,***複雜度的關係,未必能夠知足你的需求,本文介紹如何對使用了Apache httpd的用戶作一些簡單的配置,從而有效防禦一些簡單的DDOS***。web
mod_evasive模塊是httpd對web服務器的一個DoS和DDoS防禦模塊,針對單個IP地址客戶端對單個頁面,訪問總量等參數,對疑似DDOS的IP地址進行屏蔽,配置簡單並且簡單有效,具體步驟將會在如下步驟中詳述。apache
本文測試使用Azure做爲公有云平臺,採用CentOS 6.5和自帶的Apache httpd 2.2做爲demo環境。centos
2. 安裝mod_evasive:dom
3. 檢查配置文件,並對mod_evasive進行配置:ide
3.1 在配置文件的首行,能夠看到加載了mod_evasive模塊:工具
# mod_evasive configuration
LoadModule evasive20_module modules/mod_evasive20.so測試
3.2 DOSHashTableSize是存放DOS數據的表,若是你的用戶訪問數量比較高,建議設置高一寫,本測試中使用默認值:網站
DOSHashTableSize 3097spa
3.3 DOSPageCount,該參數定義了在指定時間內(默認1秒)來自同一個IP地址對同一個頁面的訪問次數,若是超過這個次數,那麼這個IP地址就會被放到黑名單,禁止掉,默認爲2,可能有點過低了,在本次測試中,調整爲10(不排除一個某個公司的員工都是經過一個代理地址出來,而非DDOS的狀況,這個須要綜合考慮)
DOSPageCount 10
3.4 DOSSiteCount指定了在特定間隔內(默認1秒)來自同一個IP地址對網站的訪問總量,一旦超過,該IP地址就被放入黑名單,暫時使用默認
DOSSiteCount 50
3.5 DOSPageInterval 和DOSSiteInterval分別是3.3和3.4提到的時間間隔,默認是1秒
# The interval for the page count threshhold; defaults to 1 second
# intervals.
DOSPageInterval 1
DOSSiteInterval 1
3.6 DOSBlockingPeriod就是被你加到黑名單的IP地址,你但願他多長時間沒法訪問你的網站,以秒計,測試中設置爲180(3分鐘)
DOSBlockingPeriod 180
3.7 其餘的是是否須要郵件提示,一旦發現DDOS須要執行的命令,日誌文件地址等,你們能夠自行配置
#DOSEmailNotify you@yourdomain.com
4. 從新啓動httpd服務,並進行驗證:
[azureuser@centostest ~]$ sudo service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
5. 驗證下mod_evasive是否被正確加載
6.那麼最後一步是驗證咱們的配置是否工做,mod_evasive自帶了一個很是簡單的測試工具,其目的是模擬DDOS,使用同一個IP地址向同一個頁面發起100次訪問,那麼mod_evasive就會把這個地址加入黑名單,並拒絕訪問,咱們看一下效果:
7. 如何知道該地址被加入了黑名單暱?事實上mod_evasive也會將該信息寫入syslog:
到此爲止全部的測試和驗證結束,能夠看到mod_evasive是一個簡單易用的DDOS工具:)