当前位置 主页 > 服务器问题 > nginx问题汇总 >

    如何利用nginx处理DDOS进行系统优化详解

    栏目:nginx问题汇总 时间:2018-09-11 12:41

    防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈,下面这篇文章主要给大家介绍了关于如何利用nginx处理DDOS进行系统优化的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

    前言

    众所周知DDoS很常见,甚至被称为黑客圈子的准入技能;DDoS又很凶猛,搞起事来几乎压垮一方网络。

    DDOS的特点是分布式,针对带宽和服务攻击,也就 是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量。对于七层的应用攻击,我们还是可以做一些配置来防御的,例如前端是 Nginx,主要使用nginx的http_limit_conn和http_limit_req模块来防御。

    什么是分布式拒绝服务DDoS(Distributed Denial of Service)意为分布式拒绝服务攻击,攻击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求,耗尽目标主机资源或网络资源,从而使被攻击者不能为合法用户提供服务。通常情况下,攻击者会尝试使拥有这么多连接的系统饱和,并要求它不再能够接受新的流量,或者变得非常缓慢以至于无法使用。

    换句话说老张的饭店(被攻击目标)可接待100个顾客同时就餐,隔壁老王(攻击者)雇佣了200个人(肉鸡),进饭店霸占位置却不吃不喝(非正常请求),饭店被挤得满满当当(资源耗尽),而真正要吃饭的顾客却进不来,饭店无法正常营业(DDoS攻击达成)。那么问题来了,老张该怎么办?

    当然是,轰出去!

    通常情况下,攻击者会尝试使拥有这么多连接的系统饱和,并要求它不再能够接受新的流量,或者变得非常缓慢以至于无法使用。

    应用层DDoS攻击特性

    应用层(第7层/ HTTP)DDoS攻击由软件程序(机器人)执行,该软件程序可以定制为最佳利用特定系统的漏洞。例如,对于不能很好地处理大量并发连接的系统,仅通过周期性地发送少量流量打开大量连接并保持活动状态,可能会耗尽系统的新连接容量。其他攻击可以采取发送大量请求或非常大的请求的形式。由于这些攻击是由僵尸程序而不是实际用户执行的,因此攻击者可以轻松地打开大量连接并非常快速地发送大量请求。

    DDoS攻击的特征可以用来帮助减轻这些攻击,包括以下内容(这并不意味着是一个详尽的列表):

    -流量通常来自一组固定的IP地址,属于用于执行攻击的机器。因此,每个IP地址负责的连接和请求数量远远超出您对真实用户的期望。

    注意:不要认为此流量模式总是代表DDoS攻击。转发代理的使用也可以创建这种模式,因为转发代理服务器的IP地址被用作来自它所服务的所有真实客户端的请求的客户端地址。但是,来自转发代理的连接数和请求数通常远低于DDoS攻击。

    -由于流量是由机器人生成的,并且意味着压倒服务器,因此流量速率远高于人类用户可以生成的流量。

    - User-Agent报头被设置有时到非标准值。

    -该 Referer头有时设为您可以与攻击相关联的值。

    使用NGINX和NGINX Plus来抵御DDoS攻击

    NGINX和NGINX Plus具有许多功能,与上述的DDoS攻击特性相结合,可以使它们成为DDoS攻击缓解解决方案的重要组成部分。这些功能通过调节传入流量并通过控制流量代理后端服务器来解决DDoS攻击。

    NGINX事件驱动架构的内在保护

    NGINX旨在成为您的网站或应用程序的“减震器”。它具有非阻塞的事件驱动架构,可以应对大量请求,而不会明显增加资源利用率。

    来自网络的新请求不会中断NGINX处理正在进行的请求,这意味着NGINX可以利用下面描述的技术来保护您的站点或应用免受攻击。