1、漏洞说明
缓慢的HTTP拒绝服务攻击是一种专门针对于Web的应用层拒绝服务攻击,攻击者操纵网络上的肉鸡,对目标Web服务器进行海量HTTP请求攻击,直到服务器带宽被打满,造成了拒绝服务。 慢速HTTP拒绝服务攻击经过不断的演变和发展,主要有三种攻击类型,分别是Slowheaders、Slowbody、Slowread。以Slowheaders为例,Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,因为HTTP头部中包含了一些Web应用可能用到的重要的信息。攻击者利用这点,发起一个HTTP请求,一直不停的发送HTTP头部,消耗服务器的连接和内存源。抓包数据可见,攻击客户端与服务器建立TCP连接后,每10秒才向服务器发送一个HTTP头部,而Web服务器在没接收到2个连续的\r\n时,会认为客户端没有发送完头部,而持续的等等客户端发送数据。如果恶意攻击者客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致拒绝服务。这种攻击类型称为慢速HTTP拒绝服务攻击。
2、基于Nginx的修复方案
修改nginx.conf文件,如下:
http {
#limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn_status 503;
#限制ip
limit_req_zone $binary_remote_addr zone=ip_second:10m rate=100r/s;
limit_req zone=ip_second burst=5 nodelay;
#限制url
limit_req_zone $request_uri zone=url_minute:10m rate=100r/s;
limit_req zone=url_minute burst=5 nodelay;
server {
listen 80;
server_name localhost;
#以下两段代码是关闭慢速连接,解决缓慢的HTTP拒绝服务攻击的关键两行
client_body_timeout 3s;
client_header_timeout 3s;
location / {
root html;
index index.html index.htm;
# limit_conn addr 100;
}
}
}
参考链接: https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/