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

在服务器遭到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. JS基础——循环很重要

    介绍循环之前,首先要说一下同样很重要的if-else结构,switch-case结构 ①if-else结构 if(判断条件) { 条件为true时执行 } else{ 条件为false时执行 } ②i ...

  2. 解决初次使用webpack+antd-mobile时css不生效的问题

    前端这块,最火的是angular.react.vue.根据你具体的业务场景,选择合适的框架或者类库.以react为例,新建一个项目时, css组件按钮,图片轮播等组件,最好不要重复造轮子,选择业内规范 ...

  3. windows下配置mysql数据库主从

    所用到工具: Mysql.Navicat Premium: 主库设置: 一.设置my.ini 文件: 1.在安装目录下找到my.ini 文件: 默认路径:C:\Program Files\MySQL\ ...

  4. Docker - 导出导入容器

    导出和导入容器 使用docker export命令可以将本地容器导出为容器快照文件. 使用docker import命令可以将容器快照文件导入到本地镜像库,也可以通过指定URL或者某个目录来导入. 特 ...

  5. PXC5.7集群部署

    PXC三节点安装: node1:10.157.26.132 node2:10.157.26.133 node3:10.157.26.134   配置服务器ssh登录无密码验证 ssh-keygen实现 ...

  6. [原创]JS实现数据筛选(each)

    做列表的时候,有时候需要按照某些条件进行查询,如班级,分组之类.但是又不想在重新从服务器获取数据,可以进行隐藏

  7. Hive-1.2.1与HBase-1.1.2的整合

    这里的整合是指,将HBase作为存储数据的库,由Hive作为连接桥梁 修改 Hive hive-site.xml 增加<property> <name>hbase.zookee ...

  8. 使用Github Page鼓励自己每日编程

    动机 三天不练手生,编程的基础训练本身是很枯燥的,需要很多的认真与坚持.无论是Debug的经验,语法规则的记忆,还是各类基础的算法运用,都需要持之以恒的认真.Github的"打卡" ...

  9. JAVA IO中的设计模式

    在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式.       在任何一种计算机语言中,输入/输出都是一个很重要的部分.与一般的计算机语言相比,java将输入/输出的功能和 ...

  10. swift MBProgressHUD加载gif或者apng的动图

    效果图 给MBProgressHUD添加一个分类(extension) extension MBProgressHUD { /// MBProgressHUD 显示加载gif hud方法 /// // ...