JeffSunpan27

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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连接

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)对操作系统的加固
    1、关闭无用端口,及时修复漏洞;
    2、优化tcp连接内核参数
 2)web应用加固
    1、编写nginx.lua模块,对非法的访问进行拦截
    2、加固站点负载能力,增加缓存(squid,varnish),优化站点瓶颈

内核优化
net.ipv4.tcp_syncookies = 1

  net.ipv4.tcp_max_syn_backlog = 8192

  net.ipv4.tcp_synack_retries = 2

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

  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连接,需要评估服务器硬件资源和攻击大小谨慎设置。

如何防黑客入侵、安全防护:
1、及时打补丁,包括系统和应用(尤其是对外发布的应用,nginx,tomcat,php,openssh等)
2、网络权限管理,只允许开通审核过的网络权限,包括上行和下行;
3、web应用权限最小化,,上传文件检测
4、加强登陆认证(多因素),https连接加密
5、监控系统登录记录,crontab记录
6、常见的攻击类型有sql注入,xss执行,使用nginxluawaf进行过滤防护
7、将网站接入360补天检查,应用发布前使用360代码漏洞扫描系统进行扫描,安全才能发布,并且定期进行全系统安全扫描/渗透测试。
8、通过接入第三方waf进行防护

posted on 2017-12-28 14:13  JeffSunpan27  阅读(167)  评论(0编辑  收藏  举报