在 Rocky 8 安裝 evasive 模組

Rocky 8 沒法子直接安裝 evasive,只好找有支援的repo來安裝

dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-3.el8.noarch.rpm
# dnf --enablerepo=raven-extras install mod_evasive

安裝完後,在 /etc/httpd/conf.d 裡會多了一個設定檔 mod_evasive.conf,而在 /etc/httpd/modules 裡會有 evasive.so 這個模組。

重啟apache

systemctl restart httpd

檢查模組是否載入。

httpd -M | grep evasive

mod_evasive.conf裡參數說明。

    DOSHashTableSize    3097   這個指令指明瞭雜湊表的大小,它用來追蹤基於IP地址的活動。增加這個數字將使得站點訪問歷史的查詢變得更快,但如果被設定的太大則會影響整體效能。  
    DOSPageCount        2      在DOSPageInterval間隔內可由一個使用者發起的針對特定的URI(例如,一個Apache 提供服務的檔案)的同一個請求的數量。
    DOSSiteCount        50     類似DOSPageCount,但涉及到整個站點總共有多少的請求可以在DOSSiteInterval間隔內被發起。
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10     如果一個使用者超過了DOSSPageCount的限制或者DOSSiteCount,他的源IP地址將會在DOSBlockingPeriod期間內被加入黑名單。在DOSBlockingPeriod期間,任何從這個IP地址發起的請求將會遭遇一個403禁止錯誤。

模擬測試

ab -n 1000 -c 20 https://網址

ab 指令最簡單的用法,就是透過 -n 選項指定要對 Web Server 送出的 Request 總數量,然後,用 -c 選項指定同時間提出要求的數量 ( Concurrency ),最後,再指定要測試的網頁網址,