XXDD0S 攻击防御方案

当突然有大量的链接骚扰你的Web服务器,然后这样的攻击会持续几天。

 

你去网上,查找应对方案,一般是通过netstat 将top 10的大于XX数量的IP 拒绝。那些脚本都不太完善,而且会反复重复添加到iptables。

 

我遇到的这次攻击,在http Referer 含有  XXDD0S 还有在access, 比较好处理

 

写了下面的脚本,分成两个部分:

1. 收集器

2. 处理器

 

收集器,用于持续收集攻击IP地址。然后重定向到管道

处理器,从管道中获取收集到的IP地址,如果是新IP 就通过iptables 封杀,如果已经添加过,就跳过

 

 

 

 

Neo代码  

  1. #!/bin/bash           
  2. ########################################  
  3. # Homepage: http://netkiller.github.com  
  4. # Author: neo <openunix@163.com>  
  5. ########################################  
  6. BLACK=/tmp/black.lst  
  7. PIPE=/tmp/pipe  
  8. pidfile=/tmp/firewall.pid  
  9. KEYWORD=XXDD0S  
  10. ########################################  
  11. if [ -z $1 ]; then  
  12.     echo "$0 clear|fw|collect|process|close"  
  13. fi  
  14.   
  15. if [ "$1" == "clear" ]; then  
  16.     rm -rf $BLACK  
  17.     rm -rf $PIPE  
  18.     echo "Clear OK!!!"  
  19. fi  
  20.   
  21. if [ "$1" == "close" ]; then  
  22.         kill `cat $pidfile`  
  23.     echo > $pidfile  
  24. fi  
  25.   
  26. if [ ! -f $BLACK ]; then  
  27.     touch $BLACK  
  28. fi  
  29.   
  30. if [ ! -e $PIPE ]; then  
  31.     mkfifo $PIPE  
  32. fi  
  33.   
  34. if [ "$1" == 'fw' ]; then  
  35.     iptables -A OUTPUT -p tcp --dport 2049 -j REJECT  
  36.     iptables -A OUTPUT -p tcp -m multiport --dports 22,21 -j REJECT  
  37. fi  
  38.   
  39. if [ "$1" == "collect" ]; then  
  40.     killall tail   
  41.     ACCESSLOG=/www/logs/www.example.com/access.$(date +'%Y-%m-%d').log  
  42.     for (( ; ; ))  
  43.     do  
  44.         tail -f $ACCESSLOG | grep $KEYWORD | cut -d ' ' -f1 > $PIPE  
  45.     done &  
  46.     echo $! > $pidfile  
  47. fi  
  48.   
  49. if [ "$1" == "process" ]; then  
  50. for (( ; ; ))  
  51. do  
  52.     while read line   
  53.     do  
  54.         grep $line ${BLACK}  
  55.         if [ $? -eq 1 ] ; then  
  56.             echo $line >> ${BLACK}      
  57.             iptables -I INPUT -p tcp --dport 80 -s $line -j DROP      
  58.         fi  
  59.     done < $PIPE  
  60. done &  
  61. echo $! >> $pidfile  
  62. fi  

 

同时有做了一些限制

 

iptables -A INPUT -i eth0 -p tcp --dport 80 --syn -m connlimit --connlimit-above 20 -j DROP

 

也常是使用:

iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "XXDD0S" -j DROP

但效果不好,无论DROP,还是REJECT 都不能立即拒绝掉,仍然对服务器有影响

 

另外上面收集到的IP地址。

通过脚本转换成Cisco ASA Firewall 命令,然后添加到硬件防火墙中。

 

Java代码  

  1. object-group network blacklist  
  2.  description deny ip to example.com  
  3.  network-object host 61.190.10.181  
  4.  network-object host 61.190.10.182  
  5.  network-object host 61.190.10.183  
  6.  network-object host 61.191.55.248  
  7.  network-object host 61.190.10.181  
  8.  network-object host 61.185.114.87  
  9.  network-object host 60.210.111.236  
  10.  network-object host 218.64.182.105  
  11.  network-object host 210.51.51.157  
  12.  network-object host 63.221.138.204  
  13.  network-object host 119.188.10.163  
  14.     
  15. access-list outside extended deny tcp object-group blacklist host xxx.xxx.xxx.xxx  

 

 

如果有兴趣还可一看看这篇文章:

 

http://netkiller-github-com.iteye.com/blogs/1319293

时间: 2024-10-02 11:31:09

XXDD0S 攻击防御方案的相关文章

深入浅出DDoS攻击防御——防御篇

1. 防御基础   1.1. 攻击流量到底多大 谈到DDoS防御,首先就是要知道到底遭受了多大的攻击.这个问题看似简单,实际上却有很多不为人知的细节在里面.   以SYN Flood为例,为了提高发送效率在服务端产生更多的SYN等待队列,攻击程序在填充包头时,IP首部和TCP首部都不填充可选的字段,因此IP首部长度恰好是20字节,TCP首部也是20字节,共40字节.   对于以太网来说,最小的包长度数据段必须达到46字节,而攻击报文只有40字节,因此,网卡在发送时,会做一些处理,在TCP首部的末

深入浅出DDoS攻击防御——攻击篇

1.   DDoS攻击基础 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式,DDoS可以简单分为三类. 第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统.快速高效的应急流程无用武之地.这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见. 第二类以巧取胜,灵动而难以察觉,每

深入分析DDoS攻击防御的原理

1. DDoS攻击基础DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式,DDoS可以简单分为三类. 第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统.快速高效的应急流程无用武之地.这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见. 第二类以巧取胜,灵动而难以察觉,每隔几分

php实现cc攻击防御的方法和防止快速刷新页面示例

 这篇文章主要介绍了php实现cc攻击防御的方法和防止快速刷新页面示例,需要的朋友可以参考下   代码如下: <?php //代理IP直接退出 empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); //防止快速刷新 session_start(); $seconds = '3'; //时间段[秒] $refresh = '5'; //刷新次数 //设置监控变量 $cur_time = time(); if(isset($_SESSION['l

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放_linux shell

张戈博客很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了.博客从此走上了经常被人拿来练手的不归之路. 当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题.根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级CC攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为CC终结者. 一.功能申明 分享之前我必须先申明一下,众所周知,DDoS攻击指的是分布式拒绝服务.而CC攻击只是DDoS攻击的一种,本文所阐述的CC攻击,指的是每个IP都以高并

电商Manutan部署Radware攻击缓解方案

本文讲的是电商Manutan部署Radware攻击缓解方案,日前,Radware宣布,Manutan Group旗下子公司法国Manutan公司部署了Radware的攻击缓解解决方案(AMS),确保IT基础架构的高可用性.Mantuan选用了Radware全面的解决方案,其中包括SSL攻击缓解.Web应用防火墙(WAF)和混合分布式拒绝服务(DDoS)攻击缓解措施,另外还购买了云防护服务. 作为欧洲最大的B2B工业和办公设备和用品提供商,Manutan拥有逾100万的服务客户.当前多数的业务都是

服务器被DDOS攻击防御脚本总结

服务器被DDOS攻击防御的SHELL脚本 1.编写脚本 mkdir /root/bin vi /root/bin/dropip.sh #!/bin/bash /bin/netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -10|grep -v -E '192.168|127.0′|awk '{if ($2!=null && $1>4) {print

SQL注入攻击:防御和检查SQL注入的手段

虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施.知彼知己,方可取胜.首先要清楚SQL注入攻击有哪些种类. 观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. SQL注入攻击的种类 知彼知己,方可取胜.首先要清楚SQL注入攻击有哪些种类. 1.没有正确过滤转义字符 在用户的输入没有为转义字符过滤

认清虚虚实实的ARP攻击防御方法

ARP欺骗/攻击反复袭击,是近来网络行业普遍了解的现象,随着ARP攻击的不断升级,不同的解决方案在市场上流传.但是笔者最近发现,有一些方案,从短期看来似乎有效,实际上对于真正的ARP攻击发挥不了作用,也降低局域网工作效率. 多用户反应说有些ARP防制方法很容易操作和实施,但经过实际深入了解后,发现长期效果都不大. 对于ARP攻击防制,最好的方法是先踏踏实实把基本防制工作做好,才是根本解决的方法.由于市场上的解决方式众多,我们无法一一加以说明优劣,因此本文解释了ARP攻击防制的基本思想.我们认为读