DDOS攻击防护

DDos攻击流量大、攻击次数频繁、发起攻击成本低,本质上是攻击发起者经过控制大量的僵尸网络对站点进行分布式攻击。

DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提升数据包的随机性。经常使用的作法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还能够下降命中DNS缓存的可能性,尽量多地消耗DNS服务器的CPU资源。
方案:接入多家DNS服务商,这样能够避免DNS攻击的风险,DNSPOD能够防御10G的攻击流量。

SYN Flood,SYN Flood攻击利用了TCP三次握手的缺陷,可以以较小代价使目标服务器没法响应。主要是维护的SYN_RECV状态超过极限后就再也不接受新的SYN报文,也就是拒绝新的TCP链接创建。攻击者假装大量的IP地址给服务器发送SYN报文,因为伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。所以,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源没法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,再也不接受新的SYN请求,合法用户没法完成三次握手创建起TCP链接php

HTTP Flood攻击则不一样,攻击者并不须要控制大批的傀儡机,取而代之的是经过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,攻击者经过匿名代理对攻击目标发起HTTP请求。匿名代理是一种比较丰富的资源,花几天时间获取代理并非难事,所以攻击容易发起并且能够长期高强度的持续。另外一方面,HTTP Flood攻击在HTTP层发起,极力模仿正经常使用户的网页请求行为,与网站业务紧密相关,安全厂商很难提供一套通用的且不影响用户体验的方案。在一个地方工做得很好的规则,换一个场景可能带来大量的误杀。最后,HTTP Flood攻击会引发严重的连锁反应,不只仅是直接致使被攻击的Web前端响应缓慢,还间接攻击到后端的Java等业务层逻辑以及更后端的数据库服务,增大它们的压力,甚至对日志存储服务器都带来影响。前端

HTTP Flood的着重点,在于突破前端的cache,经过HTTP头中的字段设置直接到达Web Server自己。另外,HTTP Flood对目标的选取也很是关键,通常的攻击者会选择搜索之类须要作大量数据查询的页面做为攻击目标,这是很是正确的,能够消耗服务器尽量多的资源。但这种攻击容易被清洗设备经过人机识别的方式识别出来,那么如何解决这个问题?很简单,尽可能选择正经常使用户也经过APP访问的页面,通常来讲就是各类Web API。正经常使用户和恶意流量都是来源于APP,人机差异很小,基本融为一体难以区分

尽可能将静态页面接入cdn,借用cdn分布式的能力来抵抗来自各地的攻击。在cdn缓存穿透状况下,源站就须要足够的带宽资源,但自己接入大带宽基本上成本上没法接受。因此必定是接入高防IP,经过高防IP对ddos攻击进行特征分析和流量清洗,并且若是是超大的攻击下须要多个高防IP将攻击分散。

还须要对网站进行加固和强化:
1)对操做系统的加固
    一、关闭无用端口,及时修复漏洞;
    二、优化tcp链接内核参数
 2)web应用加固
    一、编写nginx.lua模块,对非法的访问进行拦截
    二、加固站点负载能力,增长缓存(squid,varnish),优化站点瓶颈

内核优化
net.ipv4.tcp_syncookies = 1nginx

  net.ipv4.tcp_max_syn_backlog = 8192web

  net.ipv4.tcp_synack_retries = 2算法

  分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。sql

  SYN Cookie的做用是缓解服务器资源压力。启用以前,服务器在接到SYN数据包后,当即分配存储空间,并随机化一个数字做为SYN号发送SYN+ACK数据包。而后保存链接的状态信息等待客户端确认。启用SYN Cookie以后,服务器再也不分配存储空间,并且经过基于时间种子的随机数算法设置一个SYN号,替代彻底随机的SYN号。发送完SYN+ACK确认报文以后,清空资源不保存任何状态信息。直到服务器接到客户端的最终ACK包,经过Cookie检验算法鉴定是否与发出去的SYN+ACK报文序列号匹配,匹配则经过完成握手,失败则丢弃。固然,前文的高级攻击中有SYN混合ACK的攻击方法,则是对此种防护方法的反击,其中优劣由双方的硬件配置决定数据库

  tcp_max_syn_backlog则是使用服务器的内存资源,换取更大的等待队列长度,让攻击数据包不至于占满全部链接而致使正经常使用户没法完成握手。net.ipv4.tcp_synack_retries是下降服务器SYN+ACK报文重试次数,尽快释放等待资源。这三种措施与攻击的三种危害一一对应,完彻底全地对症下药。但这些措施也是双刃剑,可能消耗服务器更多的内存资源,甚至影响正经常使用户创建TCP链接,须要评估服务器硬件资源和攻击大小谨慎设置。后端

如何防黑客入侵、安全防御:
一、及时打补丁,包括系统和应用(尤为是对外发布的应用,nginx,tomcat,php,openssh等)
二、网络权限管理,只容许开通审核过的网络权限,包括上行和下行;
三、web应用权限最小化,,上传文件检测
四、增强登录认证(多因素),https链接加密
五、监控系统登陆记录,crontab记录
六、常见的攻击类型有sql注入,xss执行,使用nginxluawaf进行过滤防御
七、将网站接入360补天检查,应用发布前使用360代码漏洞扫描系统进行扫描,安全才能发布,而且按期进行全系统安全扫描/渗透测试。
八、经过接入第三方waf进行防御缓存