广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 9663 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.074816 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言