名客技术网

简体
繁体
×警告!请输入搜索关键词(仅提示一次)

Apache解决http slow attacks的三种方法

作者:网站小编时间:2019-07-23 16:07:18

Apache解决http slow attacks的三种方法:

一、

对于 Apache 可以做以下优化:

1.  设置合适的 timeout 时间(Apache 已默认启用了 reqtimeout 模块),规定了 Header 发送的时间以及频率和 Body 发送的时间以及频率

2.  增大 MaxClients(MaxRequestWorkers):增加最大的连接数。根据官方文档,两个参数是一回事,版本不同,MaxRequestWorkers was called MaxClients before version 2.3.13. The old name is still supported.

3.   默认安装的 Apache 存在 Slow Attack 的威胁,原因就是虽然设置的 timeoute,但是最大连接数不够,如果攻击的请求频率足够大,仍然会占满 Apache 的所有连接

二、

可以使用 Apache 的模块来缓解 Http Slow Attack

·      mod_reqtimeout:默认已启用。设置 header 和 body 的发送时间及频率

<IfModule reqtimeout_module>RequestReadTimeout header=20-40,minrate=500RequestReadTimeout body=10,minrate=500</IfModule>

·      mod_qos:开源模块,需额外安装。可设置多个参数来控制客户端的连接,如最大 IP 数、每个 IP 最大连接数等

·         <IfModule mod_qos.c>

·          # handle connections from up to 100000 different IPs

·          QS_ClientEntries 100000

·          # allow only 50 connections per IP

·          QS_SrvMaxConnPerIP 50

·          # limit maximum number of active TCP connections limited to 256

·          MaxClients 256

·          # disables keep-alive when 180 (70%) TCP connections are occupied

·          QS_SrvMaxConnClose 180

·          # minimum request/response speed (deny slow clients blocking the server, keeping connections open without requesting anything

 QS_SrvMinDataRate 150 1200</IfModule>

·      mod_security:开源模块,需额外安装。性能较好,可以为 Web 应用提供一个外部安全层来检测和抵御攻击

SecRule RESPONSE_STATUS "@streq 408" "phase:5,t:none,nolog,pass,

setvar:ip.slow_dos_counter=+1, expirevar:ip.slow_dos_counter=60, id:'1234123456'"SecRule IP:SLOW_DOS_COUNTER "@gt 5" "phase:1,t:none,log,drop,

msg:'Client Connection Dropped due to high number of slow DoS alerts', id:'1234123457'"

根据上面的配置, mod_security 记录每个 IP 让 Apache 返回 408(request timeout) 的次数,当一分钟内超过 5 次时,那个 IP 的请求会在 5 分钟内全部被丢弃。 当然也可以根据实际情况配置其他的安全策略。

(3) serverlist使用场景下最简单的修复方法

刚刚的使用场景仅仅是从 Apache 获取 serverlist,每个 IP 只需要一个短链接就可以满足需求,所以直接在 iptables 中限制每个 IP 的连接数可以解决以上绝大部分问题,除非攻击者拥有众多肉鸡,否则单 IP 的攻击将失去效果。

iptables -A INPUT -p tcp --syn --dport 8889 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset

用 iptables 设置了每个 IP 的最大连接数后,测试结果显示 Attacker 只能建立 20 个连接,所有攻击方法失效。

名客技术网如果无意之中侵犯了您的版权,请联系站长,本站将在3个工作日内删除 QQ:175352796
Copyright 2011-2020 Powered by 121ASK.COM, All Rights Reserved.
备案号:鄂ICP备11013833号-3