Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2237668
  • 博文数量: 82
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 880
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-14 00:01
文章分类

全部博文(82)

文章存档

2014年(1)

2011年(1)

2009年(8)

2008年(11)

2007年(13)

2006年(26)

2005年(22)

我的朋友

分类: LINUX

2005-04-25 15:47:30

一个perl脚本来清空ip_conntrack.不过我发觉更简单办法是移除ip_conntrack模块.移除时提示有依赖,还是直接service iptables stop来得快  .不过要记得,ip_forward也被设为0了,所以该设的全重设

一个perl脚本来清空ip_conntrack.不过我发觉更简单办法是移除ip_conntrack模块.移除时提示有依赖,还是直接service iptables stop来得快.不过要记得,ip_forward也被设为0了,所以该设的全重设

如何清除/proc/net/ip_conntrack的内容? PDF文档打印E-mail
作者 woflyin
2004-12-09
对于做处于网关地位的机器,其开启了nat功能,那么/proc/net/ip_conntrack是保存的是内网地址和外部地址连接的情况,记录每个连接的详细情况,其内容一般会保持5天,期间重新启动网络并不会有效减少其内容,唯一的办法就是重新启动和增大内存的数量,给监控带来不便,内容很容易满,核心便会报警:
ip_conntrack: table full, dropping packet
解决办法:
1.增加内存:修改/etc/sysctl.conf的设置容量 net.ipv4.ip_conntrack_max=大的数值!
2.隔一段时间重新启动系统,清空ip_conntrack
3.对ip_conntrack编程,读取其内容,匹配指定的ip地址,然后调用发包程序发送RST报文,人为的完成tcp连接。用perl实现,调用了一个外部程序hping2,可以从其主页找到,这个程序就是个构包器

用法:cl.pl ipaddress
#!/usr/bin/perl
$ip = $ARGV[0];
#print $ARGS,$ip;
exit if(!$ip);
open(FH,"ip_conntrack");
while()
{
if (/^tcp .*ESTABLISHED src=$ip/)
{
#print $_;
@line = split(/=/,$_);
$sip = $line[1];
$sip =~s/ .*//g;
$dip = $line[2];
$dip =~s/ .*//g;
$sport = $line[3];
$sport =~s/ .*//g;
$dport = $line[4];
$dport =~s/ .*//g;
print "$sip:$sport $dip:$dportn";
`/usr/bin/hping2 $dip -R -s $sport -p $dport -a $sip -k -c 1 >/dev/null 2>/dev/null &`;
}
}

4。问题:通过这个思路,是否可以对消除ddos攻击有一定帮助呢?查询ip_conntrack表,判断syn_SENT标志是否过多,过多就可以采取这样的做法消除他们呢?希望大家讨论,共同进步!
阅读(1483) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~