2009年2月5日 星期四

Apache 防止 Dos 攻擊套件

Denial of Service 可以稱為 “阻絕服務攻擊”。這個名稱也經常聽見,在很多地方都發生。
其實 Denial of Service 所傳送的請求和正常的是一樣,只是每分鐘傳送數以十計以上請求傳送至伺服器中。令伺服器每秒處理十分大量的工作。

受到這一種攻擊,輕則只有伺服器暫時停止服務。重則會把伺服器中的硬體破壞。有不少例子都是由於伺服器在同一時間處理十分大量的工作後,CPU 最後壞了。最近公司的其中一個網站受到這些不明來歷的 Denial of Service 攻擊,伺服器一直當機。
搜尋了不少網站,終於找到了一個方法。不過不知道是否可行的。所使用的是 mod_dosevasive。
雖然是第一次用,不過是否真的能夠防止就必須等到下一次受到攻擊使知道。
(雖然一裝好就有阻斷了很多IP,但是不是真的從此相安無事,就得等時間來驗證了)


1.首次下載 mod_dosevasive 1.1 版本。

2.然後解壓 mod_dosevasive_1.10.tar.gz

tar zxvf mod_dosevasive_1.10.tar.gz


3.把您的 httpd.conf 備份

4.開始安裝mod_dosevasive

Apache 1.3.x:
cd mod_dosevasive
apxs -cia mod_dosevasive.c


Apache 2.0.x:
cd mod_dosevasive
apxs -cia mod_dosevasive20.c


註:若沒安裝apxs,可執行yum provides <some_file_name>去搜尋需要的套件
例如:yum provides spxs

在這裡,要安裝的指令是yum install httpd-devel


5.修改您的 httpd.conf 加入
Apache 1.3.x:


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600


Apache 2.0.x:


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600



最後是在httpd.conf 當中的設定參數解釋:

DOSHashTableSize
 這是佔中您記憶體的大小。當數目越大處理越快,當您的伺服器是很多人流的,您必須加大這個數字。
DOSPageCount
 同一頁同一人時能夠在同一個時段中最多可請求幾次,超過會禁止。時段可以在 DOSPageInterval 中設定。
DOSSiteCount
 同一個網站同一人在伺服器中最多可佔有幾個 Object,超過會禁止。時段可以在 DOSSiteInterval 中設定。
DOSPageInterval
 DOSPageCount 中所計算的每一個時間區段,以秒計算。預設是 1 秒。
DOSSiteInterval
 DOSSiteCount 中所計算的每一個時間區段,以秒計算。預設是 1 秒。
DOSBlockingPeriod
 當發現疑似攻擊後暫停多久?預設是 10 秒。當發現後,使用者會接收到 403 (Forbidden) 的訊息。

以下三個參數要放在IfModule外面

DOSEmailNotify
設定接收攻擊信息的電郵地址。
例:DOSEmailNotify you@yourdomain.com

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

DOSLogDir
記錄檔案設定。
例:DOSLogDir ”/var/lock/mod_dosevasive”

沒有留言: