分类: 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的内容? |
作者 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标志是否过多,过多就可以采取这样的做法消除他们呢?希望大家讨论,共同进步! |