2018年2月1日 星期四

Server 設定(1) --- Apache 安裝mod_evasive 模組 防DDOS攻擊

這幾天將手邊的小型伺服器 USBWebserver 進行優化設定功能,如網站遇到大量包封攻擊時,採用鎖定 IP 並拒絕提供服務。
安裝該功能前先確定 Apapche 版本為 V2.4.6。

接著到 Apache Ha Us 下載 mod_evasive2。

解壓縮,將 mod_evasive2.so 放置 apache2\modules 下。

開啟Apache 的 httpd.conf 設定修改內容。

在 LoadModule 區,添加設定並存檔。
LoadModule evasive2_module modules/mod_evasive2.so

在 httpd.conf  最下面加入以下設定並存檔。
<IfModule evasive2_module>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
    DOSLogDir "logs/"
</IfModule>
設定檔內容說明:
DOSHashTableSize 3097
記錄和存放黑名單的哈西表大小,如果伺服器訪問量很大,可以加大該值

DOSPageCount 2
同一個頁面在同一時間內可以被 同一個用戶訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設置。

DOSSiteCount 50 同一個用戶在同一個網站內可以同時打開的訪問數,同一個時間的數值在DOSSiteInterval中設置。

DOSPageInterval 1
設定 DOSPageCount 的時間區段,單位為秒,如果沒設定此值,預設為一秒。

DOSSiteInterval 1
設定 DOSSiteCount 的時間區段,單位為秒,如果沒設定此值,預設為一秒。

DOSBlockingPeriod 10
當發現疑似攻擊後,使用者會收到 403 (Forbidden) 或 503 (Service Unavailable),這是設定封鎖的時間,以秒為單位。。

以下三個參數可是需求添加:
DOSEmailNotify
設定接收攻擊信息的電郵地址。
例:DOSEmailNotify you@yourdomain.com

DOSSystemCommand
這是收到攻擊信息時所使用的指令。
例:DOSSystemCommand ”su - someuser -c \’/sbin/… %s …\’”
  /bin/mail -t %s (%s指的是DOSEmailNotify設定的email address)

DOSLogDir "logs/"
記錄連線進來的狀態。


完成後重啟 Apache,就完成安裝 mod_evasive 模組。

開網頁輸入 localhost 查看 mod_evasive 是否已被載入到 Apache 上。

可用下載 mod_evasive 的壓縮檔中的 test.pl 進行測試,不過要先安裝 ActivePerl,安裝 ActivePerl 後,開啟命令提示字元輸入以下指令,測試一下 mod_evasive 功能。

或是對網頁不斷按 F5 重新整理,測試 mod_evasive 功能。

以上就是 mod_evasive 安裝與測試。

參考資料: