+
95
-

请问nginx如何应对ddos、cc等攻击手段?

请问nginx如何应对ddos、cc等攻击手段?

网友回复

+
15
-

网络攻击最常见的方式就是ddos及cc,我们来分别说一下这两种攻击方式的原理及使用nginx应对攻击的办法及策略。

第一、dos及ddos原理及nginx的应对办法

DoS(Denial of Service)即拒绝服务攻击,该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。

DDoS:Distributed Denial of Service,即分布式拒绝服务攻击。借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。

代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

打个现实中的比喻来描述DDOS:一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;或者总是和营业员东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。此外,恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。嗯,网络安全领域中DoS和DDoS攻击就遵循着这些思路。

DDoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。

单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项指标不高的性能,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了,目标对恶意攻击包的"消化能力"加强了不少。

在此情况下,分布式的拒绝服务攻击手段(DDoS)就应运而生了。DDoS就是利用更多的“傀儡机”来发起进攻,以比从前更大的规模来进攻受害者,导致“可用性”坍塌、失效。

攻击手段

1、通过使网络过载来干扰甚至阻断正常的网络通讯。 2、通过向服务器提交大量请求,使服务器超负荷。 3、阻断某一用户访问服务器。 4、阻断某服务与特定系统或个人的通讯。

攻击方式

SYN/ACK Flood攻击:

可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。

TCP全连接攻击

这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙对于正常的TCP连接是放过的,但是Web服务器能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此此种DDOS攻击方式容易被追踪。

针对一些动态页面攻击力度最大,就是需要和数据库进行交互的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,而对于客户端来说轻而易举,常见的现象就是网站慢如蜗牛,缺点是对付只有静态页面的网站效果会大打折扣,并且可能会暴露攻击主机地址

nginx应对办法

1.限制请求率

修改nginx.conf文件,增加以下内容
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;

server {

   location /login.html {
       limit_req zone=one;
   }
}

//limit_req_zone:配置了一个名为one的共享内存

//zone:用来存储$binary_remote_addr的请求状态

//rate=30r/m:设置Nginx每两秒钟接收一个客户端IP的请求(大约等同于每分钟30个请求)

//location 块中 /login.html 的limit_req指令引用了共享内存zone

2.限制连接的数量

修改nginx.conf文件,增加以下内容
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
  location /shopping/ {
    limit_conn addr 10;
  }
}
// 限制每一个 IP 对网站 /shopping 部分打开的连接数不超过 10 个.

//limit_conn指令引用了共享内存zone,并将最大连接数设置为 10.

3.关闭慢连接

修改nginx.conf文件,增加以下内容
server {
  client_body_timeout 5s;
  client_header_timeout 5s;
}

//关闭那些一直保持打开同时写数据又特别频繁的连接

//client_body_timeout和client_header_timeout指令控制请求体或者请求头的超时时间,配置将等待时间控制在 5s 之内:

4.设置 IP 黑名单

修改nginx.conf文件,增加以下内容
location / {
   deny 111.32.23.2;
   deny 143.111.1.5;
   deny 13.123.33.7;
}

//如果能识别攻击者所使用的客户端 IP 地址,那么通...

点击查看剩余70%

我知道答案,我要回答