[IIS]Timer_MinBytesPerSecond与Timer_ConnectionIdle

转载:http://hi.baidu.com/hfr6666/blog/item/f9635c432b69631b72f05d45.html
在看httperr日志的时候,同时也发现了Timer_MinBytesPerSecond 错误或 Timer_ConnectionIdle 错误 ,并且,这些错误出的时候,也是很连贯的,非常多,因此,这也属不正常现象;

C:\Windows\system32\LogFiles\HTTPERR\httperr*.log 中看到 Timer_MinBytesPerSecond 错误或 Timer_ConnectionIdle 错误。 这些是由IIS 默认设置, 定义用于连接到保持活动小通信流速率和最大空闲时间之前连接中断允许。
1) 从 IIS 管理器右键单击 Internet Information Server (IIS) 管理器级别根目录上并转到属性。 选中要启用直接编辑元数据库框。 单击确定。
2) 在 记事本中打开 C:\Windows\system32\inetsrv\MetaBase.xml 文件,搜索有关 " MinFileBytesPerSec "。 将用于 MinFileBytesPerSec 设置从 240 更改为 0。 执行其他搜索, 该时间将 600 " ConnectionTimeout "。 保存更改并退出。
3) 重新启动 IISAdmin 服务以更改生效。

另外,在谁是黑客(1): 关于IIS LOG的MinFileBytesPerSec和Timer_ConnectionIdle错误也发现了一些不错的言论,很独到,在理论上,他分析得还是很有见地的,只是很遗憾,没有下文。

以下内容引用:

前些天发现自己的网站无法访问,询问机房这边,说是机器最近常死机,我就把网站迁移到一个朋友 的主机上, 结果没过几天机器又挂了,问朋友的机房那边说是硬件防火墙被攻击了而死掉了,详细情况不知。看来不是硬件问题,多半是被SYN FLOOD或者CC攻击了。恰好原来的机房说最近购买了新的防火墙,我又放了回去。
既然不是硬件问题而可能是攻击,我就开始检查IIS log了,发现 IIS 里面很多Timer_ConnectionIdle和Timer_MinBytesPerSecond的错误,到网络上google了一下,常见说法是说 错误是因为IIS的设置不当引起的,是因为连接超时时间设置太小,解决方法是设置连接超时为600秒,把MinFileBytesPerSec的设置从 240修改到0(相当于关掉该设置)。觉得这些解决方法都有问题,假如车辆防盗警报经常响,正确的解决方法是看看有谁常来打你车子的主意,或者把车子放在 更安全的地方,而绝对不是关掉警报。
因为HTTP服务需要占用TCP连接,而TCP连接时是需要占用系统资源的,而且IIS为每个连接也需要分配相应的资源。目前的主机能够处理上万的连接就 可以说是软硬件设计都很不错了(可以参见C10K )。假如恶意人员通过一台或者多台机器发起大量的连接,而不请求内容(这样不需要消耗多少攻击机器的带宽),就可以大量消耗服务器资源而达到拒绝服务的目 的。
所以 IIS 需要关闭长时间非活动的连接,这个就是Timer_ConnectionIdle 的错误由来。
既然盾牌改进了,当然矛也要发展一下,攻击者可以给服务器故意缓慢的发送和接收内容而消耗服务器的资源,这样可以避免服务器对于 Timer_ConnectionIdle 的保护,相应的IIS的防范就是 MinFileBytesPerSec 设置,MinFileBytesPerSec 属性通过以最小的数据量保持连接,来禁止恶意的或软件工作不正常的客户端消耗资源。如果吞吐量低于 MinFileBytesPerSec 设置的值,则终止连接。LOG里面就会显示Timer_MinBytesPerSecond错误(一些Timer_MinBytesPerSecond错 误是因为 windows 2003 的http.sys错误引起的,解决方式是打上最新 ServicePack : http://support.microsoft.com/kb/919797 http://support.microsoft.com/kb/919797/en-us
所以说这些设置都是用来保护IIS服务器的,可以一定程度上抵御一些恶意的行为消耗服务器的资源,所以我反而将IIS连接超时从原来的600秒改到了30秒

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏