生活随笔
收集整理的這篇文章主要介紹了
apache的防DDOS模块-mod_evasive
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、 mod_evasive 介紹;
mod_evasive 是Apache(httpd)服務器的防DDOS的一個模塊。對于WEB服務器來說,是目前比較好的一個防護DDOS***的擴展模塊。雖然并不能完全防御 DDOS***,但在一定條件下,還是起到緩服Apache(httpd)服務器的壓力。如果配合iptables、硬件防火墻等防火墻設備配合使用,可能 有更好的效果。
mod_evasive 的官方地址:http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
2、 mod_evasive 的安裝和配置;
因為現在基本上都用apache2.X的版本了,就不介紹apache1.X版本的安裝方法了。
安裝 mod_evasive 之前,你要用安裝Apache(httpd)服務器軟件包,還要安裝httpd-devel或 apache-dev。在Slackware 12.0中,安裝httpd軟件即可;
對于Apache 2.x 可以用下面的辦法;
#tar?zxvf?mod_evasive_1.10.1.tar.gz?#cd?mod_evasive?#/usr/sbin/apxs?-i?-a?-c?mod_evasive20.c?
注:apxs 用于編譯模塊工具;如果是用系統自帶的軟件包,一般位于/usr/sbin目錄。如果您是自己編譯安裝Apache(httpd)的,你應該自己來指定路徑;
便已完成后會提示這個模塊的位置等一些信息,如下:
Libraries?have?been?installed?in:????/usr/lib64/httpd/modules??If?you?ever?happen?to?want?to?link?against?installed?libraries?in?a?given?directory,?LIBDIR,?you?must?either?use?libtool,?and?specify?the?full?pathname?of?the?library,?or?use?the?`-LLIBDIR'?flag?during?linking?and?do?at?least?one?of?the?following:????-?add?LIBDIR?to?the?`LD_LIBRARY_PATH'?environment?variable??????during?execution????-?add?LIBDIR?to?the?`LD_RUN_PATH'?environment?variable??????during?linking????-?use?the?`-Wl,--rpath?-Wl,LIBDIR'?linker?flag????-?have?your?system?administrator?add?LIBDIR?to?`/etc/ld.so.conf'??See?any?operating?system?documentation?about?shared?libraries?for?more?information,?such?as?the?ld(1)?and?ld.so(8)?manual?pages.?----------------------------------------------------------------------?chmod?755?/usr/lib64/httpd/modules/mod_evasive20.so?[activating?module?`evasive20'?in?/etc/httpd/conf/httpd.conf]?
我們然后修改/etc/ld.so.conf 文件,把編譯出來的動態模塊的所在位置指定在 ld.so.conf中;比如我用的是Aapche 2.x ,編譯完成后,模塊mod_evasive20.so 安裝到了 /usr/lib64/httpd/modules 目錄中;那我們就要把這個目錄寫入到ld.so.conf中。
#echo?"/usr/lib64/httpd/modules"?>>?/etc/ld.so.conf? 2.3 mod_evasive 的配置;
在編譯安裝完成后,會自動插入一行到Apache 配置文件中,對于Apache 2.x 版本中,應該在其配置文件中有類似下面的一行;
LoadModule evasive20_module? ?lib/httpd/modules/mod_evasive20.so
然后我們再修改 Apache 的配置文件,配置文件名為httpd.conf;
<IfModule?mod_evasive20.c>?????DOSHashTableSize????3097???//記錄和存放黑名單的哈西表大小,如果服務器訪問量很大,可以加大該值?????DOSPageCount????????2?????//同一個頁面在同一時間內可以被統一個用戶訪問的次數,超過該數字就會被列為***,同一時間的數值可以在DosPageInterval參數中設置。?????DOSSiteCount????????50?????//同一個用戶在同一個網站內可以同時打開的訪問數,同一個時間的數值在DOSSiteInterval中設置。?????DOSPageInterval?????1?????//設置DOSPageCount中時間長度標準,默認值為1。?????DOSSiteInterval?????1??????//設置DOSSiteCount中時間長度標準,?默認值為1。?????DOSBlockingPeriod???10????//被封時間間隔秒,這中間會收到?403?(Forbidden)?的返回。?</IfModule>? 修改完成后,我們要重啟Apache服務器;
2.4 對mod_evasive測試驗證 ;
防DDOS的模塊做好后,我們可以要驗證,可以用Apache 自帶的ab工具,系統默認安裝在/usr/sbin目錄中;比如;
#/usr/sbin/ab -n 1000 -c 50 http://127.0.0.1/
發送數據請求包,總共1000個,每次并發50個;
另外一個測試工具就是mod_evasive的解壓包的目錄中,有個test.pl ,你可以修改IP地址,然后用
#perl test.pl
是不是有效果,請根據 ab工具或 測試腳本出來的結果來查看;
因為我們編譯mod_evasive時,用的是默認配置,所以日志被存放在/tmp目錄中。如果有DDOS***,會在/tmp產生日志。日志的文件是以 dos-開頭的;
3、mod_evasive 的高級配置;
如果想更改一些適合自己的參數,有些必要的參數,并不是通過配置文件修改就一下起作用的,我們要修改源碼包中的mod_evasive20.c
#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 的參數
轉載于:https://blog.51cto.com/loveyan/758396
總結
以上是生活随笔為你收集整理的apache的防DDOS模块-mod_evasive的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。