DoS与DDoS有什么区别
DoS(拒绝服务攻击)是攻击者从单一发起点向目标服务器发送过量请求,以阻碍其正常提供服务的攻击方式。DDoS(分布式拒绝服务攻击)则在此基础上加上了"分布式":由大量感染恶意软件、被攻击者远程操控的设备(僵尸网络)同时攻击同一目标。由于攻击流量分散来自无数个不同的IP地址,单纯封锁某个IP往往难以奏效,这正是DDoS攻击远比DoS棘手的原因。
流量型攻击:直接耗尽带宽本身
流量型攻击比拼的不是技巧,而是纯粹的流量规模。大量发送无意义UDP数据包的UDP洪水攻击是其中的代表,而放大(Amplification)攻击也被广泛使用——向DNS、NTP这类"用小请求换来大得多的响应"的反射服务器发送伪造受害者IP的请求,让响应集中涌向受害者。这类攻击以每秒千兆比特(Gbps)为单位衡量,会直接把通往目标服务器的链路带宽塞满,让正常流量根本挤不进去。
协议攻击:耗尽连接状态资源
这类攻击利用防火墙、负载均衡器或服务器管理连接信息方式中的漏洞来消耗资源,SYN洪水攻击是其中的代表。TCP连接以SYN、SYN/ACK、ACK三次握手开始,而SYN洪水攻击只是大量发送SYN请求,却始终不发送最后的ACK响应,使目标服务器不断堆积未完成的连接,处于等待状态,从而耗尽连接表资源。此外,用伪造数据包扰乱防火墙或负载均衡器的攻击也属于这一类。这类攻击以每秒数据包数(pps)衡量,和流量型攻击不同,它瞄准的不是链路带宽,而是中间网络设备本身的处理能力。
应用层攻击:伪装成正常流量
HTTP洪水攻击表面上发送的是正常的网页请求(GET、POST),但以极高的速度大量发送,给服务器或数据库造成负担;而慢速攻击(Slowloris)则反其道而行之——极其缓慢地一点点发送HTTP请求,长时间占用连接,耗尽服务器的并发连接上限。由于请求本身的流量不大,行为又与正常用户十分相似,这类攻击比前两种更难被检测和拦截。它以每秒请求数(rps)衡量,瞄准的不是链路,而是Web应用程序或服务器软件本身。
僵尸网络与放大攻击是如何运作的
僵尸网络是指在设备主人毫不知情的情况下感染恶意软件、接受攻击者指令的大量设备(电脑、物联网设备等)组成的网络。在放大攻击中,攻击者向充当反射器的公共DNS、NTP服务器等发送一个伪装成受害者IP地址的小型查询,服务器随后会把远大于该请求的响应发送给那个被伪造的IP地址,也就是真正的受害者。这样一来,攻击者能用远小于实际冲击流量的自身带宽,给受害者带来数倍甚至数十倍的流量冲击。
企业和个人可以采取的防御方法
对于运营在线服务的企业而言,基本的应对方式包括用CDN将流量在地理上分散、用WAF(Web应用防火墙)过滤异常请求模式,以及对请求频率进行速率限制。如果攻击规模极大,互联网服务提供商(ISP)层面有时会采用黑洞路由,直接丢弃相关流量。普通家庭用户很少会直接成为DDoS攻击的目标,但更换默认密码、保持路由器和物联网设备固件更新到最新版本,是防止自己的设备在不知情的情况下沦为僵尸网络一员的实际有效办法。