我运行的是 Windows 2008 R2,并且有 IIS7/MySQL 托管多个网站。但是,我最近似乎遇到了随机连接错误,大概 50 次中才会出现一次。
我查看了事件查看器,发现在出现问题时,有很多来自不同 IP 的阻止发送 80 号数据包,其中包括我自己的 IP(事件查看器日志附在帖子底部)。
看起来 WFP 正在阻止一些合法请求,但我已经设置防火墙以允许所有端口 80 的 Web 流量连接……那么如何阻止它们呢?
日志:
The Windows Filtering Platform has blocked a packet.
Application Information:
Process ID: 0
Application Name: -
Network Information:
Direction: Inbound
Source Address: xxx.xxx.xxx.xxx
Source Port: 57578
Destination Address: xxx.xxx.xxx.xxx
Destination Port: 80
Protocol: 6
Filter Information:
Filter Run-Time ID: 74587
Layer Name: Transport
Layer Run-Time ID: 13
答案1
如果您真的想彻底解决此类问题,您必须执行 WFP(Windows 过滤平台)捕获。
要开始捕获,请使用以下命令:
netsh wfp capture start
然后你应该重现你的问题,将其包含在捕获中。之后,使用以下命令停止捕获:
netsh wfp capture stop
捕获的结果存储wfpdiag.cab
在当前目录中的文件中。我相信这个文件仅供微软内部使用,但如果你愿意,你可以提取档案中的两个文件并自己查看。
可以.etl
使用事件日志打开。但是,我不确定如何解释内容。有趣的文件是文件.xml
。如果你花点时间,你应该能够弄清楚内容的结构。你应该寻找的是以下内容:
过滤器运行时 ID:74587
通过检查 XML,您需要找到哪个过滤器具有运行时 ID 74587。这将告诉您防火墙中的哪条规则阻止了连接。请注意,防火墙有一些隐藏规则(例如 Windows 防火墙服务强化规则)。
答案2
如上所述这里,这些事件日志条目(事件 ID 为 5152)很可能是由恶意请求引起的,这些请求可能是由您网站的合法用户发送的,但这些用户的计算机感染了病毒。病毒包括红色代码通过感染 IIS 驱动的网站以这种方式传播。IIS/WFP 最有可能阻止并记录恶意请求。
假设情况确实如此,那么这里就没什么可做的了。如果您确定所有请求都来自一个 IP,则可以在防火墙级别阻止该 IP。如果它们来自各个地方,并且您不想再被事件日志条目所困扰,那么您可以关闭这些事件的审计日志记录(我不一定建议这样做)。如果您确实想禁用日志记录,可以使用该auditpol.exe
命令。
查看事件 5152 和 5153 的审核日志设置:
auditpol /get /subcategory:"Filtering Platform Packet Drop"
禁用事件 5152 和 5153 的失败审计日志:
auditpol /set /subcategory:"Filtering Platform Packet Drop" /failure:disable
有关审计政策的更多信息,请访问:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb309058(v=vs.85).aspx