廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 9390 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
Qoo 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
頭銜:超人超人

級別: 副版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x126
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[FreeBSD][轉載] 關於防砍站
這個程式是利用perl + 一些系統指令完成的
主要的資料來源是利用netstat的連線紀錄來判斷的

複製程式
#!/usr/bin/perl 
# 防砍站小程式 
# 肉腳梁楓製作 
# v 0.0超級不穩版 
# 製作日期:2003.1.31 
# 版權 GPL 

# 資料設定 

$Max_Connect_Number = 300;       # 最多能有多少連結 
$IPFW_Number = 950;             # 防火牆規則設定在第幾條規則 沒必要可以不動 
$PATH = '/tmp/'                # 暫存檔路徑 
$Netstat = 'temp1'             #暫存檔1 沒必要就不用亂動了! 
$CN = 'temp2'                  #暫存檔2 沒必要就不用亂動了!C 

#系統設定 

$USR_BIN_PATH = '/usr/bin/' 
$BIN_PATH = '/bin/' 
$SBIN_PATH = '/sbin/' 


#以下就可以不用動了 

system("$USR_BIN_PATH"."netstat -na > $PATH$Netstat"); 

open(IPFW,$PATH.$Netstat); 
open(IPFW2,">$PATH$CN") ||die("can't open IPFW2 file\n"); 

while($line = <IPFW>){ 
        $line =~ s/ +/,/g; 
        print IPFW2 "$line" || die("can't input IPFW2"); 

} 
close IPFW; 
close IPFW2; 
system("$BIN_PATH"."rm -rf $PATH$Netstat"); 
system("$USR_BIN_PATH"."cut -f 1,5 -d , $PATH$CN > $PATH$Netstat"); 
open(IPFW,$PATH.$Netstat); 
open(IPFW2,">$PATH$CN"); 
while(<IPFW>){ 
        ($line[0],$line[1],$line[2]) = split(/,/); 
        chomp($_); 

        chomp($line[0],$line[1]); 
        if($line[0] eq "tcp4"){ 
                ($IP[0],$IP[1],$IP[2],$IP[3]) = split(/\./,$line[1]); 
                if($IP[0] > 1 and $IP[0] != 127){ 
                        if($IP[0] == 61 and $IP[1] == 63 and $IP[2] == 145 and $IP[3] >= 65 and $IP[3] <= 94){}else{ 
                                print IPFW2 "$IP[0].$IP[1].$IP[2].$IP[3]\n"; 
                        } 
                } 
        } 
} 
close IPFW; 
close IPFW2; 
system("$USR_BIN_PATH"."sort $PATH$CN | $USR_BIN_PATH"."uniq -c > $PATH$Netstat"); 

open(IPFW,$PATH.$Netstat); 
open(IPFW2,">$PATH$CN"); 
while($line = <IPFW>){ 
        $line =~ s/ +/,/g; 
        ($IP[0],$IP[1],$IP[2])=split(/\,/,$line); 
        if($IP[1] >= $Max_Connect_Number){ 
                chomp($IP[2]); 
                system("$SBIN_PATH"."ipfw add $IPFW_Number deny all from $IP[2] to any"); 
                system("$SBIN_PATH"."ipfw add $IPFW_Number deny all from any to $IP[2]"); 
                print "$SBIN_PATH"."ipfw add $IPFW_Number deny all from $IP[2] to any\n"; 
        } 
} 
close IPFW; 
close IPFW2; 
system("$BIN_PATH"."rm -rf $PATH$Netstat;rm -rf $PATH$CN"); 


因為最近會網站一直被砍,所以上網找了一下,剛好梁楓大哥有這個程式

轉貼自 http://phorum.study-area.or...php?t=14953



獻花 x0 回到頂端 [樓 主] From:臺灣新世紀資通股份有限公司 | Posted:2006-12-13 14:44 |
andyz 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
頭銜:惡靈退散 o(╬ ̄皿 ̄)=○ &nb ..惡靈退散 o(╬ ̄皿 ̄)=○ &nb ..
分類版主
級別: 分類版主 該用戶目前不上站
版區: 塑膠模型, 電腦資訊
推文 x55 鮮花 x168
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝大大的分享

我來補充一下LINUX的簡單防砍站的方法

建立一個檔名為block_http
內容如下
複製程式
 
#!/bin/sh

## 以下請自行依照您的環境進行合宜的設定

# 設定網頁伺服器的通訊埠號, 一般通用的埠號為 80
HTTP_PORT="80"

# 設定要忽略的 IP, 每個 IP 以 "|" 隔開, 這些 IP 將永遠不會被阻擋。
# 此變數數請務必至少設定一個 IP, 否則會造成 script 無法運作
SKIP_IPS="127.0.0.1|0.0.0.0"

# 設定允許同時連線網頁伺服器的次數
MAX_TRY=10

# 設定一個鏈名, 所有阻擋特定 IP 的規則將統一放置於此鏈中
BLOCKCHAIN="blockhttp"

## 以下設定一般情形下保留預設值即可

# 記錄檔的路徑與檔案名稱
LOGFILE="/var/log/block_http.log"

# 記錄檔內的日期格式, 關於格式的代號與意義, 請執行 man date 閱讀其說明文件
DATEFMT="%Y/%m/%d %R"

# 設定系統執行檔的路徑
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# 設定阻擋特定 IP 的函式
blockip () {

   [ "`iptables -L -n | grep $BLOCKCHAIN | wc -l`" -lt 2 ] && {
      iptables -N $BLOCKCHAIN
      iptables -A INPUT -j $BLOCKCHAIN
   }
   iptables -L $BLOCKCHAIN -n | grep $1 >/dev/null 2>&1 || \
   iptables -A $BLOCKCHAIN -s $1 -j DROP
}

# 列出目前所有連線, 並計算各 IP 的重複次數
netstat -tn | awk "/:$HTTP_PORT .*TIME_WAIT/ { 
   match(\$5, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/);
   ip=substr(\$5, RSTART, RLENGTH)
   if ( ip ~ /$SKIP_IPS/ ) {}
   else print ip}" | \
sort | uniq -c | \
while read num ip; do

   # 如果 $num 內的數字大於 $MAX_TRY 所指定的次數, 則使用 blockip 函式
   # 阻擋 $ip 的連線
   if [ "$num" -ge "$MAX_TRY" ]; then
      blockip $ip
      echo "`date +"$DATEFMT"` blocking $ip... CONN=$num" >> $LOGFILE
   fi

done


將此檔放入/usr/local/bin/的目錄下

然後執行 crontab -e 加入內容如下
複製程式
* /2 * * * * /usr/local/bin/block_http
如果不懂用法,請參考這裡http://linux.vbird.org/lin...30cron.php

以上設定每隔2分鐘檢查一次,檢查若發現某個IP連線次數超過MAX_TRY的值,就阻擋該IP

------------------------------------------------------------------------

每隔一段時間,自動清除BLOCKCHAIN
crontab -e
複製程式
00 01 * * * /sbin/iptables -F blockhttp


[ 此文章被andyz在2006-12-13 16:31重新編輯 ]


回文原則(以下只適用在我的管理區)
1.我不回太白目的問題
2.還有娘家文
3.看不懂得也是
4.我很懶得把你的問題(也就是文字敘述)想成我要看到的畫面(也就是螢幕上出現的畫面)。純文字敘述者,看不懂在說啥就不回。想要解答就先下點功夫,來個圖文並茂的文章吧。
5.想到再打

何謂白目問題
1.看不懂英文的,要求翻譯
2.沒經過爬文就問
3.給個問題(題目)就要求解答。例如:請問XXX怎麼寫。自己的CODE都沒有貼上來就要求別人幫你寫,不如你的作業我幫你作、你的書我幫你讀好了
4.想到再打
獻花 x2 回到頂端 [1 樓] From:臺灣 | Posted:2006-12-13 16:20 |
mnbmnb5266
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x5 鮮花 x46
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

謝謝大大的教學,不過我的網站現在還為出現過這些問題。不過說不定以後出現了這篇教學可以派上用場也說不定,先收藏了


我的收藏
https://pan.baidu.com/s/1QUJ9lr_VzxXKRJAlBJgUQA
提取码:am2c
獻花 x0 回到頂端 [2 樓] From:加拿大Rogers | Posted:2010-08-20 23:44 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.037486 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言