- 论坛徽章:
- 1
|
所謂"砍站"就是使用 teleport, getright 等離線閱覽軟件,
對某一站台進行持續性的完整下載。
這對於只使用靜態網頁的站台來說,應還可以接受,
但對那些運行大量 CGI 或需要調用後端數據庫的站台來說,
一旦連線數目過多或 CPU 不夠力,則很容易被"砍倒"...
相信絕大多數的網站管理員都不歡迎此類行為,
若你也為此所苦,又同時使用 Linux 系統、且能執行 iptables 程式的話,
那本 script 或可值一試的。
不過,聲明在先:
1) 本 script 僅在 RedHat Linux 7.x 平台上測試過,不保證也能用於其他系統版本。
2) script 不盡完善,錯漏難免。請自行評估風險。
3) 若 script 造成任何損失,作者概不負責。
script 的大致工作原理如下:
1) 偵測系統連線數目及 CPU 使用情況,若皆在可接受範圍內,不作任何限制處理。
2) 若超過限制值,從連線抓出黑名單。
3) 第一次抓獲,並不作處分。若被抓獲一定次數(可調整變量),
則啟用 iptables 的 limit 規則,將連線限制於每秒一個封包。
4) 若接線出現在 limit 清單中一定次數(可調整變量),
則啟用 iptables 的 DROP 規則,暫時阻斷該連線來源。
5) script 每次重跑,都會更新黑名單。
若在清單出現次數下降到限制值以下,則刪除該連線的 DROP 或 limit 規則。
6) 若接線出現在 DROP 清單中一定次數(可調整變量),
則啟用 iptables 的永久 DROP 規則,不再刪除其 DROP 規則。
script 執行需知:
1) 你需要 root 權限來執行 script ,script 會在 /root 目錄下建立 BLOCK 子目錄。
2) script 本身沒設循環,請自行設定 crontab 以決定 script 的執行間隔時間。
3) 若系統還有其他 iptables 重整設定(如 portsentry 之類),請自行解決規則一致性。
4) script 建立的永久性 DROP 規則,請自行決定刪除時機。(可另寫 script 再設 crontab)
5) script 會針對 httpd 作重啟偵測處理。
若對 web server 造成不便,請自行註解或刪除程式碼。
(段落提示:#-- restart httpd if dead --# )
script 代碼(歡迎一起 debug):
本 script 最新版本可以從如下 URL 下載:
http://study-area.ks.edu.tw/linux/src/block.http.sh.tgz |
|