http://linux.bdcf.net/index.php?option=content&task=view&id=87&Itemid=2
一個perl腳本來清空ip_conntrack.不過我發覺更簡單辦法是移除ip_conntrack模塊.移除時提示有依賴,還是直接service iptables stop來得快 .不過要記得,ip_forward也被設為0了,所以該設的全重設
http://linux.bdcf.net/index.php?option=content&task=view&id=87&Itemid=2
一個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標志是否過多,過多就可以采取這樣的做法消除他們呢?希望大家討論,共同進步! |