慢DoS的mod安全性中唯一相关的规则是modsecurity_crs_11_slow_dos_protection,而且只适用于Apache。对Nginx有规定吗?
发布于 2018-11-27 12:05:33
据我所知,NGINX不包括任何类似的描述,但我们可以实现我们自己的。正如我所理解的Apache2 modsecurity_crs_11_slow_dos_protection,限制连接的数量。模数安全_crs_11_慢的_dos_保护
NGINX有一个网页,用NGINX和NGINX Plus减轻DDoS攻击,其中提到了DDoS的几种方法。他们的网站有三个想法:
Limiting请求的速率
您可以将NGINX和NGINX接受传入请求的速率限制在实际用户的典型值上。例如,您可能会决定,真正访问登录页面的用户只能每2秒发出一次请求。您可以配置NGINX和NGINX,使单个客户端IP地址只允许每2秒登录一次(相当于每分钟30次请求):limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;服务器{#.location /login.html { limit_req zone=one;#.} limit_req_zone指令配置一个名为one的共享内存区域,以存储指定密钥的请求状态,在本例中是客户端IP地址($binary_remote_addr)。用于limit_req的位置块中的/login.html指令引用共享内存区域。
Limiting连接数
您可以将单个客户端IP地址可以打开的连接数量限制为适合实际用户的值。例如,您可以允许每个客户端IP地址打开不超过10个连接到您的网站的/store区域: limit_conn_zone $binary_remote_addr zone=addr:10m;服务器{#.位置/存储/{ limit_conn addr 10;#.} limit_conn_zone指令配置一个名为addr的共享内存区域来存储对指定密钥的请求,在本例中(如前面的示例所示)客户端IP地址$binary_remote_addr。位置块中的limit_conn指令引用共享内存区域,并从每个客户端IP地址设置最多10个连接。
Closing慢速连接
您可以关闭不频繁写入数据的连接,这可能表示试图尽可能长时间地保持连接处于打开状态(从而降低服务器接受新连接的能力)。Slowloris就是这种攻击的一个例子。client_body_timeout指令控制NGINX在写入客户机主体之间的等待时间,client_header_timeout指令控制NGINX在写入客户端头之间的等待时间。这两个指令的缺省值为60秒。此示例将NGINX配置为在客户机写入消息头或正文之间等待不超过5秒:服务器{ client_body_timeout 5s;client_header_timeout 5s;#.}
请注意,对于DDoS,我们只需要“慢速”连接,而DoS则需要通过关闭(或拒绝)我们认为是恶意的连接来缓解。请记住,上面提到的攻击缓解措施是应用层DDoS缓解。因此,仍然使用资源(CPU和内存)。请参阅关于资源使用的封装IP套件(TCP/IP),因为封装和解封装(帧->数据包(或数据报) ->段-> PDU)需要资源。
https://security.stackexchange.com/questions/198498
复制相似问题