|
基本原理:
通过过滤ip_conntrack表得到ESTABLISHED状态过多的ip, 然后用iptabels封掉一段时间,同时用hping工具将这些ip从表中清理掉,最后将被封的ip和一些其他信息写到一个html页中,做简单的发布
关于hping:
下载: http://www.hping.org/download.html
安装: ./configure;make;make install
相关联接: http://chinaunix.net/jh/4/367999.html
默认功能:
1, 当一个ip在ip_conntrack表中的ESTABLISHED状态在30-50之间时, 此ip被封10分钟,同时在ip_conntrack表中的记录被清除;50-100之间封15分钟,同时清表;100以上封30分钟,同时清表,
2, 然后生成web页
/var/www/html/wwy/drop/index.html --- 显示被封的ip, 和cpu状态等信息
/var/www/html/wwy/all/index.html --- 每一个ip的连接情况
3, 生成简单的日志
/tmp/killip/tmp.log.txt
使用方法:
1, 需要安装hping
2, 建议将脚本放到计划任务中
3, 建议安装并开启apache, 为支持简单的web发布,默认为 http://127.0.0.1/l/wwy/drop/index.htm
4, 如果表的大小大于20mb请慎用
====================================================
代码:
#!/bin/bash
#
#---------------------------------------------------------------------------------------
#Scrip name: killip, base on ip_conntrack, write by wwy.
#---------------------------------------------------------------------------------------
cpu=`sar -u 1 1 | awk '{print $7}' | tail -1`%
#
while [ "`pidof sleep`" ];do
echo "she is running, sorry"
exit 1
done
if [ ! "`lsmod | grep ip_conntrack`" ]; then
modprobe ip_conntrack
fi
####################################
##---------------------- functions -----------------------------##
#################################### |
|