(1).DDos概念

  分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。

  防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈。DDOS的 特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量。对于七层的应用攻击,我们还 是可以做一些配置来防御的,例如前端是Nginx,主要使用nginx的http_limit_conn和http_limit_req模块来防御。 ngx_http_limit_conn_module 可以限制单个IP的连接数,ngx_http_limit_req_module 可以限制单个IP每秒请求数,通过限制连接数和请求数能相对有效的防御CC攻击。

(2).编写查看DDos攻击的脚本

  1. [root@youxi1 ~]# yum -y install net-tools
  2. [root@youxi1 ~]# vim ddos-ip.sh
  3. netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
  4. [root@youxi1 ~]# chmod +x ddos-ip.sh

  说明:netstat -ntu查看网络相关信息,-n拒绝别名(显示IP地址和端口号),-t是TCP协议,-u是UDP协议;

     awk '{print $5}'是将网络信息以空格为分隔符取第5位参数;

     cut -d: -f1是将传来的信息以冒号作为分隔符,取第1位参数;

     sort排序;

     uniq -c去重并进行统计;

     sort -n根据字符串的数值比较进行排序,即比较统计的数值大小比较。

  扩展:ss命令也可以查看网络相关的监控,而且执行速度比netstat命令快,但是ss命令执行命令却稍有不同ss -antu | awk '{print $6}' | cut -d: -f4 | uniq -c | sort -n。另外,这两条命令统计的都是1分钟以内的网络连接信息。

  模拟DDos攻击

  1. [root@youxi1 ~]# yum -y install httpd  //需要压测命令ab
  2. [root@youxi1 ~]# ab -n 100 -c 10 http://192.168.5.101/index.html
  3. //立即执行脚本
  4. [root@youxi1 ~]# ./ddos-ip.sh
  5. 1 Address
  6. 1 servers)
  7. 2 192.168.5.1
  8. 101 192.168.5.101

(3).防御DDos攻击

  防御DDos的方法:添加防火墙规则、加大带宽、增加服务器、使用CDNA技术、高防服务器和带流量清洗的ISP、流量清洗服务等,还有前段自带的防御功能,例如nginx:nginx防止DDOS攻击配置nginx调优(二)

  最常见的一般是添加防火墙规则,如果IP地址数较少可以手动添加,如果IP地址数较多一般会使用软件自动添加,例如:fail2ban(通过分析日志来判断是否使用iptables拦截,已支持firewalld防火墙,详情:https://blog.csdn.net/qq_23587541/article/details/84190650)、DDoS deflate(通过netstat判断ip连接数,并使用iptables屏蔽)。

1)DDos deflate介绍

  DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或iptables禁止或阻挡这些IP。

2)安装

  GitHUb下载地址:https://github.com/jgmdev/ddos-deflate(ss命令好像没有调试好)

  inetbase下载地址:http://www.inetbase.com/scripts/ddos/

  下载install.sh文件并上传至服务器。我使用的是GitHub下载,这是一个zip文件,需要安装unzip

  1. [root@youxi1 ~]# yum -y install unzip
  2. [root@youxi1 ~]# unzip ddos-deflate-master.zip
  3. [root@youxi1 ~]# cd ddos-deflate-master/
  4. [root@youxi1 ddos-deflate-master]# ls
  5. ChangeLog install.sh Makefile README.md uninstall.sh
  6. config LICENSE man src
  7. [root@youxi1 ddos-deflate-master]# ll install.sh
  8. -rwxr-xr-x 1 root root 5788 5 29 23:36 install.sh
  9. [root@youxi1 ddos-deflate-master]# ./install.sh  //执行安装,都是yum安装
  10. //在最后会出现安装地址
  11. Installation has completed!
  12. Config files are located at /etc/ddos/
  13. [root@youxi1 ddos-deflate-master]# ls /etc/ddos/
  14. ddos.conf ignore.host.list ignore.ip.list

  查看配置文件

  1. [root@youxi1 ddos-deflate-master]# vim /etc/ddos/ddos.conf  //查看配置文件
  2. //脚本和其他文件的路径
  3. # Paths of the script and other files
  4. PROGDIR="/usr/local/ddos"
  5. SBINDIR="/usr/local/sbin"
  6. PROG="$PROGDIR/ddos.sh"  //执行脚本地址
  7. IGNORE_IP_LIST="ignore.ip.list"  //IP地址白名单列表
  8. IGNORE_HOST_LIST="ignore.host.list"  //主机白名单列表
  9. CRON="/etc/cron.d/ddos"  //计划任务文件地址
  10. //防火墙命令地址
  11. APF="/usr/sbin/apf"
  12. CSF="/usr/sbin/csf"
  13. IPF="/sbin/ipfw"
  14. IPT="/sbin/iptables"
  15. IPT6="/sbin/ip6tables"
  16. TC="/sbin/tc"
  17. //第22行,检查DDos时间间隔,默认1分钟
  18. FREQ=1
  19. //第25行,作为一个守护进程时,运行的频率,单位秒
  20. DAEMON_FREQ=5
  21. //第28行,最大连接数,超过该数值后IP就会被禁止,一般默认即可
  22. NO_OF_CONNECTIONS=150
  23. //第33行,为true时仅统计接入连接,会比统计in/out更慢禁止
  24. ONLY_INCOMING=false
  25. //第38行,为true时脚本将会使用tcpdump扫描由CloudFlare服务器发送的CF-Connecting-IP头标签,
  26. //并且禁止使用iptables字符串匹配模块
  27. ENABLE_CLOUDFLARE=false
  28. //第43行,为true时启用PORT_CONNECTIONS,与ONLY_INCOMING相同,但更慢
  29. ENABLE_PORTS=false
  30. //第54行,端口连接检测,为每个端口分配监听规则,格式为“端口(或端口端):最大连接数:禁用时间(单位秒)”
  31. PORT_CONNECTIONS="80:150:600 443:150:600 20-21:150:600"
  32. //第58行,使用的防火墙,包括:auto, apf, csf, ipfw, and iptables
  33. FIREWALL="auto"
  34. //第62行,当ip被屏蔽是给指定邮箱发送邮件
  35. EMAIL_TO="root"
  36. //第65行,IP禁止时间,单位秒
  37. BAN_PERIOD=600
  38. //第71行,要阻止的连接状态,状态之间使用冒号分隔,例如:established:syn-sent:syn-recv:fin-wait-1:fin-wait-2
  39. //该例默认情况下,会阻止监听和关闭之外的所有状态,状态详见:man ss
  40. CONN_STATES="connected"
  41. //第74行,当使用netstat时要阻止的连接状态,状态详见:man netstat。那理论上,上面是使用ss时阻止的连接状态?
  42. CONN_STATES_NS="ESTABLISHED|SYN_SENT|SYN_RECV|FIN_WAIT1|FIN_WAIT2|TIME_WAIT|CLOSE_WAIT|LAST_ACK|CLOSING"
  43. //第78行,是否监控每个ip使用的带宽,超过时降低速率(需要iftop和tc命令)
  44. BANDWIDTH_CONTROL=false
  45. //第82行,触发降速的带宽速率,目前支持kbit和mbit
  46. BANDWIDTH_CONTROL_LIMIT="1896kbit"
  47. //第87行,触发降速时,会在指定时间周期内,速率上限
  48. BANDWIDTH_DROP_RATE="512kbit"
  49. //第91行,降速的时间周期,单位秒,即600秒内会有速率上限
  50. BANDWIDTH_DROP_PERIOD=600
  51. //第95行,如果为true时,仅考虑从客户端接收的数据,而不考虑服务器发给客户端的数据
  52. BANDWIDTH_ONLY_INCOMING=true

  注意:在配置文件中,ENABLE_PORTS(第43行)参数开启时,PORT_CONNECTIONS(第54行)才能使用;BANDWIDTH_CONTROL(第78行)参数开启时,BANDWIDTH_CONTROL_LIMIT(第82行)、BANDWIDTH_DROP_RATE(第87行)、BANDWIDTH_DROP_PERIOD(第91行)、BANDWIDTH_ONLY_INCOMING(第95行)才能使用。

  另外最新DDoS deflate已支持systemctl命令管理

  1. [root@youxi1 ~]# systemctl status ddos
  2. ddos.service - (D)Dos Deflate
  3. Loaded: loaded (/usr/lib/systemd/system/ddos.service; enabled; vendor preset: disabled)
  4. Active: active (running) since 2019-08-31 17:40:05 CST; 8min ago
  5. Process: 1126 ExecStart=/usr/local/sbin/ddos --start (code=exited, status=0/SUCCESS)
  6. Main PID: 1163 (ddos.sh)
  7. CGroup: /system.slice/ddos.service
  8. ├─1163 /bin/sh /usr/local/ddos/ddos.sh -l
  9. └─4375 sleep 5
  10.  
  11. 8 31 17:40:04 youxi1 systemd[1]: Starting (D)Dos Deflate...
  12. 8 31 17:40:05 youxi1 ddos[1126]: starting ddos daemon...
  13. 8 31 17:40:05 youxi1 systemd[1]: Started (D)Dos Deflate.

  由于DDos deflate目前不支持firewalld,所以需要安装iptables

  1. [root@youxi1 ~]# systemctl stop firewalld
  2. [root@youxi1 ~]# systemctl disable firewalld
  3. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
  4. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  5. [root@youxi1 ~]# yum -y install iptables-services
  6. [root@youxi1 ~]# systemctl start iptables
  7. [root@youxi1 ~]# systemctl enable iptables
  8. Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
    [root@youxi1 ~]# iptables -F  //清空规则方便实验

  注意:最新版的DDos deflate1.3版(GitHUb下载)使用了ss命令,但是ss命令使用-ntu选项时对已完成的网络连接不进行统计,我个人感觉没有原来的(inetbase下载)好。原来的使用请看:https://blog.csdn.net/huangyuxin_/article/details/100116403

3)卸载

  运行./uninstall.sh即可。

参考:https://www.cnblogs.com/bokejiayuan/p/4341350.html

   https://blog.csdn.net/huangyuxin_/article/details/100116403

DDos攻击解决办法的更多相关文章

  1. XSS攻击解决办法 Spring mvc databinder

    XSS攻击解决办法 一.SpringMVC架构下@InitBinder方法 Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型.若这个普通Java类型没有声明任何注解, ...

  2. arp断网攻击解决办法

    局域网中有这个提示arp断网攻击是正常的,说明防火墙已经拦截了,是有人用P2P工具控制你的网速,或者是局域网有机器中病毒了也会有这样的提示,不过不用担心,今天给大家带来几个防止arp断网攻击的办法,希 ...

  3. Linux+DDoS deflate 预防DDoS攻击

    使用DDoS脚本防止DDoS攻击   使用DDoS脚本防止DDoS攻击: DDoS概述: 分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务 ...

  4. XSS漏洞攻击原理与解决办法

    转自:http://www.frostsky.com/2011/10/xss-hack/ 对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的.现在让我们来普 ...

  5. 记一次ntp反射放大ddos攻击

    2018/3/26 ,共计310G左右的DDoS攻击 临时解决办法:将web服务转移到同生产一个内网段的备份服务器a上,a提供web端口80,数据库通过内网连接还是沿用生产数据库. 后续解决办法:通过 ...

  6. 从分析攻击方式来谈如何防御DDoS攻击

    DDoS攻击的定义: DDoS攻击全称——分布式拒绝服务攻击,是网络攻击中非常常见的攻击方式.在进行攻击的时候,这种方式可以对不同地点的大量计算机进行攻击,进行攻击的时候主要是对攻击的目标发送超过其处 ...

  7. 解决(防止)DDOS攻击的另一种思想

    本方案适合作最后的处理方案. 在服务器遭到DDOS攻击后,防火墙.高防盾或者其他的方案都已经失去了效力,这时运维人员无任何方案可以处理,并且只能任由DDOS攻击或关闭服务器时,该方案可以有限的抵挡大部 ...

  8. NTP服务放大攻击的解决办法

    什么是NTP服务? 网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议.NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务,以保 ...

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

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

随机推荐

  1. 将dedecms织梦后台编辑器ckeditor更换为kindeditor,并高亮显示代码

    1.下载kindeditor,并解压到kindeditor目录,把kindeditor目录复制到dede的include目录下(ps:修改kindeditor-all-min.js.lang文件夹下z ...

  2. [Kubernetes] Kubectl and Pod

    1. Create and run a Pod kubectl run my-nginx --image=nginx:alpine We can run kubectl get all to see ...

  3. Vue模板语法(一)

    Vue模板语法 一 vue简介 Vue.js是一套构建用户界面的渐进式框架. 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与 ...

  4. react 面试指南

    ------------恢复内容开始------------ 什么是声明式编程 声明式编程是一种编程范式,它关注的是你要做什么,而不是如何做.它表达逻辑而不显式地定义步骤.这意味着我们需要根据逻辑的计 ...

  5. 015——C#软件出现《未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"》

    (一)参考文献:https://zhidao.baidu.com/question/361243661437448812.html https://blog.csdn.net/yyx3214/arti ...

  6. P1853 投资的最大效益

    题目背景 约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益.银行工作人员向他提供了多种债券,每一种债券都能在固定的投资后,提供稳定的年利息.当然,每一种债券的投资额是不 ...

  7. 使用flexmark将MarkDown转为HTML

    引入对应的依赖 <!-- https://mvnrepository.com/artifact/com.vladsch.flexmark/flexmark --> <dependen ...

  8. 对okhttp参数的一些思考

    背景 项目中使用OkHttp访问三方服务 参数 创建okhttp客户端类的时候需要设置一些参数,有些可能是坑,仅供参考: client = new OkHttpClient.Builder() .di ...

  9. 讨论关于RAID以及RAID对于存储的影响

    定义及作用 RAID是Redundent Array of Inexpensive Disks的缩写,直译为“廉价冗余磁盘阵列”,也简称为“磁盘阵列”.后来RAID中的字母I被改作了Independe ...

  10. Spring|IOC启动流程

    1.IOC启动流程 IOC的启动流程分为两个阶段,第一阶段是容器的启动阶段,第二阶段是Bean实例化阶段. 容器的启动阶段:加载配置信息,分析配置信息,其他 Bean实例化阶段:实例化对象,装配依赖, ...