本方案适合作最后的处理方案。

在服务器遭到DDOS攻击后,防火墙、高防盾或者其他的方案都已经失去了效力,这时运维人员无任何方案可以处理,并且只能任由DDOS攻击或关闭服务器时,该方案可以有限的抵挡大部分DDOS攻击流量,恢复大部分的生产。

该方案并未成熟。

这种方案公司用户越少,效果越好。

环境:目前的技术上对DDOS攻击没有太好的解决办法,理论上的肉机数量可以无限多,但服务器给的带宽不可能也不能应对所有的肉鸡的攻击,因此市面上多用高防的盾机来被动的接受来自肉鸡的流量,理论上在高性能的盾机都能被肉鸡击倒,因此这种方案算是一种十分被动的解决方案。很多人选择用封IP的方式来处理DDOS攻击,这在肉鸡数量上的情况下是一种不错的解决方案,但肉鸡数量一多,与不做任何操作并无二样。

原理:目前的服务器防火墙的策略基本上对业务端口的访问不作限制,在遭受DDOS攻击时,我们可以刻意封闭业务端口的访问,只允许指定IP的访问,至于指定IP,可以在平常用脚本收集,当然平常还是对业务端口的访问不作限制。

因为用户数量占少数,用户中肉鸡的数量也占极少数,因此会有少部分用户被误封的情况,但是远好于所有用户均无法访问。

举个栗子:

我用文件active_ip记录有效用户的IP。

用文件 filter保存正常时候的IPTABLES规则。

在正常业务时,用脚本ip_witev2.sh在后台执行记录访问80端口用户的IP保存在active_ip中。

wite_ip=`awk -F" " '{print $1}' $Active_path`

#!/bin/bash

#sync the IP in access log into Active_path.

Add_white()

{

access_ip=`tail -n 150 $Log_path | awk -F" " '{print $1}' | uniq`

wite_ip=`awk -F" " '{print $1}' $Active_path`

for i in $access_ip

do

singel=0

for k in `awk '{print}' $Active_path`

do

[ $i = $k ] && { singel=1; break; }

done

[ $singel -eq  0 ] && echo $i >> $Active_path

done

}

Log_path="/home/wwwlogs/access.log"

Active_path="/scripts/active_ip"

[ -f $Active_path ] || touch $Active_path

#judge whether there are new data in acess.log or not.

while true

do

[ -f $Log_path ] && size1=`stat $Log_path | awk -F" " '/Size/ {print $2}'` && break

sleep 0.1

done

[ `stat $Active_path | awk -F" " '/Size/ {print $2}'` -le 1 ] &&  Add_white

sleep 5

在遭受DDOS攻击(有个判断的过程及触发条件)时自动执行切换IPTABLES规则的脚本

ddos_filter.sh 封闭所有的IP

#!/bin/bash

iptables -D INPUT -t filter -p tcp --dport 80 -j ACCEPT

iptables -D OUTPUT -t filter -p tcp --sport 80 -j ACCEPT

activeip_path="/scripts/active_ip"

for i in `awk '{print}' $activeip_path`

do

iptables -A INPUT -t filter -s $i -p tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -t filter -d $i -p tcp --sport 80 -j ACCEPT

done

在DDOS攻击完毕时(这个触发方式是怎样的?)自动切换为原来的IPTABLES规则。

这就是方案的大致原理。

本人学问不足读书少,文章远远未完善,错误的地方和有改正的地方还请各位大佬批评指正,集思广益,这不正是开源的思想。

解决(防止)DDOS攻击的另一种思想的更多相关文章

  1. linux用shell腳本解决被ddos攻击的问题

    最近网站常常被人DDOS所以写了一个小程序用来自动封锁IP,代码如下: !/bin/bash for (( ; ; )) do status=netstat -na|grep ESTABLISHED| ...

  2. 被DDOS攻击的解决方法

    在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...

  3. DDoS攻击的几种类型

    DDoS攻击的几种类型   随着网络攻击的简单化,如今DDoS攻击已经不止出现在大型网站中,就连很多中小型网站甚至是个人网站往往都可能面临着被DDoS攻击的的风险.或许很多站长对DDoS攻击并不是很了 ...

  4. 服务器被ddos攻击?分析如何防止DDOS攻击?

    上周知名博主阮一峰的博客被DDOS攻击,导致网站无法访问而被迫迁移服务器的事情,引起了广大网友的关注及愤慨,包括小编的个人博客也曾接受过DDOS的“洗礼”,对此感同身受.所以,本文我们一起来了解下DD ...

  5. python编写DDoS攻击脚本

    python编写DDoS攻击脚本 一.什么是DDoS攻击 DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式.单一的DoS攻击一般是采用一对一方式的, ...

  6. 什么是DDoS攻击?DDoS防御的11种方针详解

    对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来做好DDoS防御呢. 对于DDoS防御的理解: 对付DDOS ...

  7. 抗D十招:十个方法完美解决DDoS攻击防御难题

    可以说,DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略 ...

  8. 分享下今天研究的流量上限DDos攻击分析和解决方式

    分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). ...

  9. 防范DDoS攻击的几种方式

    一.拒绝服务攻击的发展: 从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DdoS.那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击 方式.而DdoS(Distri ...

随机推荐

  1. 【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework

    https://vjudge.net/contest/68966#problem/D http://blog.csdn.net/u010489389/article/details/19218795 ...

  2. 对象克隆(clone)实例详解

    <?php class Staff { public $name; public $age; public $salary; public function __construct($name, ...

  3. IOS打包相关问题

    使用了AFNetworking框架,模拟器和真机运行都不报错,但是提交商店报错Unsupported Architecture. Your executable contains unsupporte ...

  4. 工具类总结---(四)---Sharedpreferences保存

    用于保存具有对应关系的键值对 import android.content.Context; import android.content.SharedPreferences; import java ...

  5. Welcome to my Blog

    Only English? Oh my god!!! why open live write can't write by Chinese?

  6. 【转】c++ new操作符的重载

    基本概念: 1. 操作符重载:C++支持对某个操作符赋予不同的语义 2. new操作符:申请内存,调用构造函数 关于c++ new操作符的重载 你知道c++ 的new 操作符和operator new ...

  7. java 空指针异常造成的原因有哪些

    实际上 空指针异常   也就是你用了一个没有实际值的对象 1. 某一对象没有被实例化,就拿来使用,如调用此对象的方法,会抛空指针异常. 2. 获取从别的对象传过来的对象为空 3. 数据库查询方面的空指 ...

  8. python中的JSON(1)

    很多程序都要求用户输入某种信息, 例如:   让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中, 用户关闭程序时,我们几乎总要保存他们提供的信息: 如何保存-- ...

  9. 使用Post方法模拟登陆爬取网页

    最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页.下面是极简版的代码: import java.io.BufferedReader; import java.io.InputStre ...

  10. stm之SPI通信协议

    SPI (Serial Peripheral interface),顾名思义就是串行外围设备接口.SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为P ...