解决(防止)DDOS攻击的另一种思想
本方案适合作最后的处理方案。
在服务器遭到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攻击的另一种思想的更多相关文章
- linux用shell腳本解决被ddos攻击的问题
最近网站常常被人DDOS所以写了一个小程序用来自动封锁IP,代码如下: !/bin/bash for (( ; ; )) do status=netstat -na|grep ESTABLISHED| ...
- 被DDOS攻击的解决方法
在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...
- DDoS攻击的几种类型
DDoS攻击的几种类型 随着网络攻击的简单化,如今DDoS攻击已经不止出现在大型网站中,就连很多中小型网站甚至是个人网站往往都可能面临着被DDoS攻击的的风险.或许很多站长对DDoS攻击并不是很了 ...
- 服务器被ddos攻击?分析如何防止DDOS攻击?
上周知名博主阮一峰的博客被DDOS攻击,导致网站无法访问而被迫迁移服务器的事情,引起了广大网友的关注及愤慨,包括小编的个人博客也曾接受过DDOS的“洗礼”,对此感同身受.所以,本文我们一起来了解下DD ...
- python编写DDoS攻击脚本
python编写DDoS攻击脚本 一.什么是DDoS攻击 DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式.单一的DoS攻击一般是采用一对一方式的, ...
- 什么是DDoS攻击?DDoS防御的11种方针详解
对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来做好DDoS防御呢. 对于DDoS防御的理解: 对付DDOS ...
- 抗D十招:十个方法完美解决DDoS攻击防御难题
可以说,DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略 ...
- 分享下今天研究的流量上限DDos攻击分析和解决方式
分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). ...
- 防范DDoS攻击的几种方式
一.拒绝服务攻击的发展: 从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DdoS.那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击 方式.而DdoS(Distri ...
随机推荐
- 【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework
https://vjudge.net/contest/68966#problem/D http://blog.csdn.net/u010489389/article/details/19218795 ...
- 对象克隆(clone)实例详解
<?php class Staff { public $name; public $age; public $salary; public function __construct($name, ...
- IOS打包相关问题
使用了AFNetworking框架,模拟器和真机运行都不报错,但是提交商店报错Unsupported Architecture. Your executable contains unsupporte ...
- 工具类总结---(四)---Sharedpreferences保存
用于保存具有对应关系的键值对 import android.content.Context; import android.content.SharedPreferences; import java ...
- Welcome to my Blog
Only English? Oh my god!!! why open live write can't write by Chinese?
- 【转】c++ new操作符的重载
基本概念: 1. 操作符重载:C++支持对某个操作符赋予不同的语义 2. new操作符:申请内存,调用构造函数 关于c++ new操作符的重载 你知道c++ 的new 操作符和operator new ...
- java 空指针异常造成的原因有哪些
实际上 空指针异常 也就是你用了一个没有实际值的对象 1. 某一对象没有被实例化,就拿来使用,如调用此对象的方法,会抛空指针异常. 2. 获取从别的对象传过来的对象为空 3. 数据库查询方面的空指 ...
- python中的JSON(1)
很多程序都要求用户输入某种信息, 例如: 让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中, 用户关闭程序时,我们几乎总要保存他们提供的信息: 如何保存-- ...
- 使用Post方法模拟登陆爬取网页
最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页.下面是极简版的代码: import java.io.BufferedReader; import java.io.InputStre ...
- stm之SPI通信协议
SPI (Serial Peripheral interface),顾名思义就是串行外围设备接口.SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为P ...