如何解决IIS headerWaitTimeout ssems对缓慢的HTTP标头攻击没有影响
我试图提供某种缓解或缓解IIS缓慢HTTP POST攻击的形式。不幸的是,由于存在很多绑定,因此很难用Nginx替换IIS以提供传输速率控制。
通过使用连接超时属性,我对缓慢的HTTP POST body 攻击获得了部分成功。它似乎也会影响Timer_EntityBody,因此,如果在这么多秒钟内没有在套接字上接收到任何内容(例如20),则http.sys将断开连接。
IIS在应用程序主机级别具有一个名为“ headerWaitTimeout”的webLimits设置: https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/weblimits
旧(网站默认):
https://docs.microsoft.com/zh-cn/iis/configuration/system.applicationhost/sites/sitedefaults/limits
它允许您设置客户端应发送所有HTTP标头的最长时间。我可以成功设置该值,但是在使用Kali Linux和'slowhttptest'对其进行测试时,它似乎没有任何作用。我还通过wireshark验证了此行为。
在Windows 2012 R2服务器上使用此命令(IIS 8.5,但我怀疑这与WS 2019上的IIS 10相同):
netsh http show servicestate
我可以看到我的主站点的应用程序池具有以下设置:
URL group ID: A10000024000000F
State: Active
Request queue name: MyMainAppPool (name changed..)
Properties:
Max bandwidth: inherited
Max connections: 5000
Timeouts:
Entity body timeout (secs): 45
Drain entity body timeout (secs): 45
Request queue timeout (secs): 65535
Idle connection timeout (secs): 45
Header wait timeout (secs): 0
Minimum send rate (bytes/sec): 0
Authentication Configuration:
Authentication schemes enabled:
Number of registered URLs: 2
Registered URLs:
HTTPS://*:443/
HTTP://*:80/
请注意,请求Q超时很高(不知道为什么-在任何级别都找不到此数字),并且标头等待超时始终为0。 其他应用程序池会正确继承此内容。例如:
Timeouts:
Entity body timeout (secs): 45
Drain entity body timeout (secs): 45
Request queue timeout (secs): 65535
Idle connection timeout (secs): 45
Header wait timeout (secs): 25
Minimum send rate (bytes/sec): 768
我需要下一步的线索和指针。 ETW跟踪仅在等待新数据的情况下在http.sys中显示代码。如果有任何可以解决此问题的Microsoft IIS专家,请共享任何信息或指针。
谢谢, 以利
解决方法
嗯,这是最近才出现的。似乎每当您尝试向医生暴露问题时,他们都会感到害怕:-) 我发现了这个小宝石:
https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh-http
基本上,netsh http add timeout允许您直接操作http.sys的headerWaitTimeout。与IIS webLimits 部分不同,它实际上可以完成工作!
我能够在我的网站上设置20或30秒的超时时间(实际上这是计算机的全局时间...),并使用以下命令测试了HTTP标头攻击:
slowhttptest -c 1 -H -i 5 -r 200 -t POST -u http://<url to post>/.../ -p 30 -x 20 -l 120
(用于通过Wireshark捕获测试1个连接)
然后,当我将连接数更改为2000时,我看到了打开连接数量的类似电锯的行为,这可能是我们期望的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。