Apache設定防DDOS模組mod_evasive

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

mod_evasive 是Apache(httpd)伺服器的防DDOS的一個模組。對於WEB伺服器來說,是目前比較好的一個防護DDOS攻擊的擴充模組。雖然並不能完全防禦 DDOS攻擊,但在一定條件下,還是起到緩服Apache(httpd)伺服器的壓力。如果配合iptables、硬體防火牆等防火牆裝置配合使用,可能 有更好的效果。

最近準備配置iptables限制每個IP的並發數。但配置iptables才發現,由於Linux核心版本比較低,iptables不支援 connlimit模組,於是想到把conlimit模組編譯到核心中,無奈openvz vps不支援編譯核心。所以使用了Apache的防DDOS模 塊mod_evasive,具體安裝配置如下:

一、下載安裝模組

 wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gztar zxvf mod_evasive_1.10.1.tar.gzcd mod_evasive1、對於Apache 1.x 請用下面的編譯方法;/usr/local/apache/bin/apxs -iac mod_evasive.c2、對於Apache 2.x 可以用下面的辦法;/usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
123456789 wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gztar zxvf mod_evasive_1.10.1.tar.gzcd mod_evasive 1、對於Apache 1.x 請用下面的編譯方法;/usr/local/apache/bin/apxs -iac mod_evasive.c 2、對於Apache 2.x 可以用下面的辦法;/usr/local/apache/bin/apxs -i -a -c mod_evasive20.c

 

二、配置模組加入到httpd.conf中

在Apache v1.x 版本中,要加入;

 <IfModule mod_evasive.c>DOSHashTableSize 3097DOSPageCount 2DOSSiteCount 50DOSPageInterval 1DOSSiteInterval 1DOSBlockingPeriod 10</IfModule>
12345678 <IfModule mod_evasive.c>DOSHashTableSize 3097DOSPageCount 2DOSSiteCount 50DOSPageInterval 1DOSSiteInterval 1DOSBlockingPeriod 10</IfModule>

在Apache v2.x加入;

 <IfModule mod_evasive20.c>DOSHashTableSize 3097DOSPageCount 2DOSSiteCount 50DOSPageInterval 1DOSSiteInterval 1DOSBlockingPeriod 10</IfModule>
12345678 <IfModule mod_evasive20.c>DOSHashTableSize 3097DOSPageCount 2DOSSiteCount 50DOSPageInterval 1DOSSiteInterval 1DOSBlockingPeriod 10</IfModule>

相關參數說明:

 
DOSHashTableSize 3097#記錄和存放黑名單表大小,如果伺服器訪問量很大,可以加大該值.DOSPageCount 5        #同一個頁面在同一時間內可以被同一個使用者訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設定.DOSSiteCount 100#同一個使用者在同一個網站內可以同時開啟的訪問數,同一個時間的數值在DOSSiteInterval中設定。DOSPageInterval 2#設定DOSPageCount中時間長度標準,預設值為1。DOSSiteInterval 2設定DOSSiteCount中時間長度標準,預設值為1。DOSBlockingPeriod 3600#被封時間間隔秒,這中間會收到 403 (Forbidden) 的返回。DOSEmailNotify **[email protected]#設定受到攻擊時接收攻擊資訊提示的郵箱地址。有IP加入黑名單後通知管理員。DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":#IP加入黑名單後執行的系統命令。 DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"#手動建立目錄mod_evasive,攻擊日誌存放目錄,注意這個目錄的許可權,是運行apache程式的使用者。鎖定機制臨時目錄#白名單   DOSWhiteList 127.0.0.1  DOSWhiteList 192.168.12.*

 

伺服器遭受到DDOS攻擊,可以說防不勝防,但是作為apache伺服器,可以安裝一些模組一定程度上減緩DDOS的攻擊。
比如第3方模組mod_evasive就是一個預防 Apache 遭受 DDos 攻擊的模組,可以防止同一個 IP 對相同 URI 發出的大量請求,可設定的選項有:
– 限制同一個 IP 在一定秒數內請求一個頁面或檔案的次數。
– 限制同一個 IP 一秒內只可發出 50 個請求。
– 設定被禁止的 IP 封鎖時間。

1.首先下載mod_evasive_1.10.1.tar.gz並解壓:
# tar zxvf mod_evasive_1.10.1.tar.gz
我們先不進行安裝,解壓出來有一個檔案test.pl,是用Perl語言寫的,是測試伺服器用的, 我們先來測試一下伺服器(在沒有安裝減緩DDOS的情況)
# cd mod_evasive
# chmod 755 test.pl
# ./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
......都可以正常訪問,沒有任何防禦DDOS攻擊

2.安裝 (我這裡使用apache是 2.2.8的版本)
# /usr/local/apache2/bin/apxs -i -a -c mod_evasive20.c (apxs用於編譯模組工具,注意你自己伺服器apache的安裝目錄和位置,路徑可能和我的不一樣)
註:沒有apxs的話,請安裝:httpd-devel或apache-dev
模組自動編譯安裝進/usr/local/apache2/modules,且自動在httpd.conf裡添加LoadModule evasive20_module modules/mod_evasive20.so

3.配置
# vi /etc/httpd.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097 #記錄和存放黑名單表大小,如果伺服器訪問量很大,可以加大該值.
DOSPageCount 5 #同一個頁面在同一時間內可以被同一個使用者訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設定.
DOSPageInterval 2 #設定DOSPageCount中時間長度標準,預設值為1。
DOSSiteCount 100 #同一個使用者在同一個網站內可以同時開啟的訪問數,同一個時間的數值在DOSSiteInterval中設定。
DOSSiteInterval 2 #設定DOSSiteCount中時間長度標準,預設值為1。
DOSBlockingPeriod 3600 #被封時間間隔(秒),這中間會收到 403 (Forbidden) 的返回。
DOSEmailNotify [email protected] #設定受到攻擊時接收攻擊資訊提示的郵箱地址。
DOSLogDir "/var/log/mod_evasive" #攻擊日誌存放目錄,注意這個目錄的許可權,是運行apache程式的使用者。
#進入信任ip名單的ip它們將不會受到阻止,其功能主要是用於保護軟體,scripts,本地搜尋,或其它的自動工具對伺服器進行大量的資源請求時不會被阻止。請確認而不是用在添加客戶或其它什麼類別的人員,因為這將給本模組進行正常工作帶來阻礙。信任ip名單應在apache設定檔中添加如下格式的欄位(可以是ip段)
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*
#ip地址後三段可以使用萬用字元,並且可以各格式複用
</IfModule>

建立目錄來存放上在指定的記錄檔:
mkdir /var/log/mod_evasive
重新啟動apache2。
再次測試./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
可以看到已經有一些訪問出現 403 Forbidden, 說明配置成功。

一定情況下抵擋防禦DDOS的攻擊, 當然如果是伺服器機器承受不了,或者頻寬不夠, DDOS還是比較難防的,不過我們抵擋一部分算一部分。呵呵

---------------------------------------

WINDOWS下mod_evasive安裝
目前還沒有官方的WINDOWS版,這裡是一個高手做了一些修改編譯的版本。它禁用了這些功能:郵件通知、日誌記錄到獨立檔案的功能。
編譯環境: windows xp ,vc++ 8 , apache 2.2.3 (環境設定為了 windows 2003 sp1)

LoadModule dosevasive22_module modules/mod_dosevasive22.dll
<ifmodule dosevasive22_module>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</ifmodule>

DOSHashTableSize 3097#記錄和存放黑名單表大小,如果伺服器訪問量很大,可以加大該值.DOSPageCount 5        #同一個頁面在同一時間內可以被同一個使用者訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設定.DOSSiteCount 100#同一個使用者在同一個網站內可以同時開啟的訪問數,同一個時間的數值在DOSSiteInterval中設定。DOSPageInterval 2#設定DOSPageCount中時間長度標準,預設值為1。DOSSiteInterval 2設定DOSSiteCount中時間長度標準,預設值為1。DOSBlockingPeriod 3600#被封時間間隔秒,這中間會收到 403 (Forbidden) 的返回。DOSEmailNotify **.@qq.com#設定受到攻擊時接收攻擊資訊提示的郵箱地址。有IP加入黑名單後通知管理員。DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":#IP加入黑名單後執行的系統命令。 DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"#手動建立目錄mod_evasive,攻擊日誌存放目錄,注意這個目錄的許可權,是運行apache程式的使用者。鎖定機制臨時目錄#白名單   DOSWhiteList 127.0.0.1  DOSWhiteList 192.168.12.*
   

Apache設定防DDOS模組mod_evasive

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.