注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

使用以下脚本来做防udp-flood,syn-flood,pingofdeath攻击:  

2013-06-20 11:29:48|  分类: DDos攻击及防御 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
出处:http://bbs.chinaunix.net/thread-2175688-1-1.html

  1. #!/bin/sh

  2. SYSLOG "DOS enabled"

  3. # ------ [ Create logging chains ] --------------------------- #


  4. SYSLOG "Create DOS attack chain"
  5. $IPTABLES -N DOS 2> /dev/null


  6. SYSLOG "UDP-flood protection"
  7. $IPTABLES -A FORWARD_UDP -i $WANIF -p udp -j DOS
  8. $IPTABLES -A INPUT_UDP -i $WANIF -p udp -j DOS
  9. $IPTABLES -I DOS -p udp -m limit --limit 150/s --limit-burst 300 -j RETURN

  10. SYSLOG "Syn-flood protection"
  11. $IPTABLES -A FORWARD_TCP -i $WANIF -p tcp --syn -m state --state ! ESTABLISHED,RELATED -j DOS
  12. $IPTABLES -A INPUT_TCP -i $WANIF -p tcp --syn -m state --state ! ESTABLISHED,RELATED -j DOS
  13. $IPTABLES -I DOS -p tcp --syn -m limit --limit 150/s --limit-burst 300 -j RETURN

  14. SYSLOG "Ping of death"
  15. #Drop icmp packet breaks the rate of 1/s
  16. $IPTABLES -A PORT_FORWARD -i $WANIF -p icmp --icmp-type echo-request -j DOS
  17. $IPTABLES -A INPUT -i $WANIF -p icmp --icmp-type echo-request -j DOS
  18. $IPTABLES -A DOS -p icmp --icmp-type echo-request -m limit --limit 150/s --limit-burst 300 -j RETURN


  19. # set default policy
  20. $IPTABLES -A DOS -m limit --limit 150/s -j LOG --log-level 4 --log-prefix "[DOS]"
  21. $IPTABLES -A SCAN -j DROP
  22. $IPTABLES -A DOS -j DROP


但不知道怎么回事,当我测试的时候我的log中始终没有有关的dos信息


==============================================================================================


我只是想要做到当有这三个攻击时,能够记录下log而已.而且我的系统很简单,是经过特殊处理的.不存在系统自带的问题,这个要我自己做.
现在我将这个script改为以下:

  1. #!/bin/sh

  2. SYSLOG "DOS enabled"

  3. # ------ [ Create logging chains ] --------------------------- #

  4. SYSLOG "Create DOS attack chain"
  5. $IPTABLES -N DOS 2> /dev/null
  6. #$IPTABLES -I DOS  -m limit ! --limit 150/s -j LOG --log-level 4 --log-prefix "[DOS]"

  7. SYSLOG "UDP-flood protection"
  8. $IPTABLES -A FORWARD_UDP -i $WANIF -p udp -j DOS
  9. $IPTABLES -A INPUT_UDP  -i $WANIF -p udp -j DOS
  10. $IPTABLES -I DOS -p udp -m limit ! --limit 150/s --limit-burst 300 -j LOG --log-level 4 --log-prefix "[DOS]"

  11. SYSLOG "Syn-flood protection"
  12. $IPTABLES -A FORWARD_TCP -i $WANIF -p tcp --syn  -m state --state ! ESTABLISHED,RELATED -j DOS
  13. $IPTABLES -A INPUT_TCP -i $WANIF -p tcp --syn -m state --state ! ESTABLISHED,RELATED -j DOS
  14. $IPTABLES -I DOS -p tcp --syn -m limit ! --limit 150/s --limit-burst 300 -j LOG --log-level 4 --log-prefix "[DOS]"

  15. SYSLOG "Ping of death"
  16. #Drop icmp packet breaks the rate of 1/s
  17. $IPTABLES -A PORT_FORWARD -i $WANIF -p icmp --icmp-type echo-request -j DOS
  18. #$IPTABLES -A INPUT -i $WANIF -p icmp --icmp-type echo-request -j DOS
  19. $IPTABLES -A INPUT -i $WANIF -p icmp --icmp-type echo-request -j DOS
  20. $IPTABLES -I DOS -p icmp --icmp-type echo-request -m limit ! --limit 150/s --limit-burst 300 -j LOG --log-level 4 --log-prefix "[DOS]"


  21. # set default policy
  22. #$IPTABLES -A DOS -j DROP
复制代码


用工具测试,发现syn-flood和udp-flood都能出log了,但是就是ping of death没有任何log信息.
我用iptables -L -v 查看,发现在INPUT链中icmp的packet数是为0,好象没有任何的packet匹配这个规则.
但我的工具每秒可以产生800多个packet,应该可以符合iptables --limit 150/s的条件啊.
由于ping of death是产生很大的icmp包,我抓包的时候看到有大量的icmp分包.我想是不是条件中的--icmp-type echo-request有什么问题啊

======================================================================================
这个是iptables-save后的filter表:
  1. [# Generated by iptables-save v1.2.7a on Thu Jan  1 00:00:33 1970
  2. *filter
  3. :INPUT DROP [101:20393]
  4. :FORWARD DROP [0:0]
  5. :OUTPUT ACCEPT [1:212]
  6. :DOS - [0:0]
  7. :FORWARD_TCP - [0:0]
  8. :FORWARD_UDP - [0:0]
  9. :INPUT_TCP - [0:0]
  10. :INPUT_UDP - [0:0]
  11. :PORT_FORWARD - [0:0]
  12. -A INPUT -i ! eth0 -p tcp -m state --state NEW -m tcp ! --tcp-flags SYN,RST,ACK SYN -j DROP
  13. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  14. -A INPUT -d 172.21.4.3 -i eth0 -m state --state NEW -j LOG --log-prefix "[Incoming]"
  15. -A INPUT -i eth0 -p udp -j INPUT_UDP
  16. -A INPUT -i eth0 -p tcp -j INPUT_TCP
  17. -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DOS
  18. -A INPUT -i ! eth0 -m state --state NEW -j ACCEPT
  19. -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
  20. -A FORWARD -i br0 -o eth0 -m state --state NEW -j LOG --log-prefix "[Outgoing]"
  21. -A FORWARD -i eth0 -o br0 -m state --state NEW -j LOG --log-prefix "[Incoming]"
  22. -A FORWARD -j PORT_FORWARD
  23. -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
  24. -A FORWARD -i ! eth0 -m state --state NEW -j ACCEPT
  25. -A FORWARD -i br0 -o br0 -j ACCEPT
  26. -A OUTPUT -o br0 -p icmp -j ACCEPT
  27. -A OUTPUT -p icmp -m state --state INVALID -j DROP
  28. -A DOS -p icmp -m icmp --icmp-type 8 -m limit --limit 151/sec --limit-burst 300 -j LOG --log-prefix "[DOS]"
  29. -A DOS -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 151/sec --limit-burst 300 -j LOG --log-prefix "[DOS]"
  30. -A DOS -p udp -m limit --limit 151/sec --limit-burst 300 -j LOG --log-prefix "[DOS]"
  31. -A FORWARD_TCP -i eth0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m state --state INVALID,NEW -j DOS
  32. -A FORWARD_TCP -p tcp -j RETURN
  33. -A FORWARD_UDP -i eth0 -p udp -j DOS
  34. -A FORWARD_UDP -p udp -j RETURN
  35. -A INPUT_TCP -i eth0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m state --state INVALID,NEW -j DOS
  36. -A INPUT_TCP -i eth0 -p tcp -m multiport --dports 23,80,32764 -j DROP
  37. -A INPUT_TCP -p tcp -j RETURN
  38. -A INPUT_UDP -i eth0 -p udp -j DOS
  39. -A INPUT_UDP -p udp -j RETURN
  40. -A PORT_FORWARD -i eth0 -p icmp -m icmp --icmp-type 8 -j DOS
  41. -A PORT_FORWARD -i eth0 -p tcp -j FORWARD_TCP
  42. -A PORT_FORWARD -i eth0 -p udp -j FORWARD_UDP
  43. -A PORT_FORWARD -j RETURN
  44. COMMIT]
=======================================================================

  1. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
复制代码

把 INPUT 中的这条规则放到该链的最后位置应该就可以了


=====================================================================


  1. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
复制代码

改为
  1. -A INPUT -m state --state ESTABLISHED -j ACCEPT
复制代码

试试

还有,你贴代码的时候用 code 括起来好不好?我实在不想每次都给你改了
  评论这张
 
阅读(1109)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018