来源于cu上的一个问题:
dmesg | grep "bad"
UDP: bad checksum. From 60.11.207.170:13329 to 222.134.54.142:13217 ulen 1056
UDP: bad checksum. From 60.11.207.150:13329 to 222.134.54.142:13217 ulen 1056
UDP: bad checksum. From 220.11.207.171:13329 to 222.134.54.142:13217 ulen 1056
UDP: bad checksum. From 213.121.7.152:13329 to 222.134.54.142:13217 ulen 1056
如何取出其中的ip地址?(这是路由器日志里的,我想做个动态屏蔽问题ip)
[1-255].[0-255].[0-255].[0-255] 不要冒号和以后的东西,也不要数字前的内容
然后将取出的数值 生成以下格式文件
iptables -A INPUT -s 124.64.142.69/32 -j DROP
iptables -A INPUT -s 117.57.192.115/32 -j DROP
一.
awk的FS可以或者正则表达式(以前只用过[xx ]+):
awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' file
二.
iptables添加rule,这种东东应该是定时的吧ok,放如crontab可是问题出现了,每次都crontab那肯定要重复拉...
iptables -L | awk '/DROP/{print $4}' >/tmp/droped.list
dmesg |awk -F 'From|:' '/bad checksum/&&!a[$3]++{print $3}' >/tmp/needdrop.list
awk 'NR==FNR{a[$1]=1}NR>FNR&&!($1 in a){print "iptables -A INPUT -s "$1"/32 -j DROP"}' /tmp/droped.list /tmp/needdrop.list |sh
rm -rf /tmp/droped.list /tmp/needdrop.list
三.
不过用route防止DDOS居然听说也不错
route del -host bbs.chinaunix.net reject
呵呵 当然这些都是上层的,效果效率不谈...DDOS还是c kernel module强大.俺的本行
阅读(2280) | 评论(0) | 转发(0) |