Tag: wfp

Windows过滤平台 – 如何根据本地端口阻止传入连接?

我正在尝试使用WFP设置一些filter来阻止到本地服务器的入站连接(例如,侦听端口8080的Web服务器)。 我有一个可以基于远程端口阻止的filter工作,所以我可以阻止我的机器上的进程建立到端口8080的任何连接,但我无法弄清楚如何阻止来自另一台机器的传入连接基于本地8080港口? 这是我的代码,它基于远程端口进行阻塞:(它是使用P / invoke的C#,但它与用C ++编写的几乎相同) var RemotePort = 8080 # port to block // connect to engine var session = new Fwpm.FWPM_SESSION0 { flags = Fwpm.FWPM_SESSION_FLAG_DYNAMIC }; UInt32 engineHandle; UnsafeNativeMethods.FwpmEngineOpen0(null, Fwpm.RPC_C_AUTHN_WINNT, IntPtr.Zero, session, out engineHandle // create a subLayer to attach filters to var subLayerGuid = Guid.NewGuid(); var subLayer = new Fwpm.FWPM_SUBLAYER0(); subLayer.subLayerKey = […]

Windows过滤平台,用于从托管代码中过滤HTTPS

我想为Windows开发基于主机的防火墙主要是为了过滤以HTTPS开头的URL! 我知道微软正在推出WFP,以替代已弃用的旧技术,如防火墙/filter挂钩,NDIS,TDI,WSA和Winsock 2(LSP)。 但WFP目前不支持使用主机名或URL的filter。 此外,WFP仅在C / C ++中,并且.NET中没有可用的C#包装器。 我尝试了@basil的WinDivert演示应用程序webfilter,它解析TCP端口80(默认HTTP)上的IPv4出站流量中的数据包,重置服务器连接(TCP RST)并向客户端(浏览器)发送HTML响应,然后发送TCP FIN如果URL匹配文本文件中给出的任何列入黑名单的条目作为命令行参数,否则重新注入它们… handle = WinDivertOpen( “outbound && ” // Outbound traffic only “ip && ” // Only IPv4 supported “tcp.DstPort == 80 && ” // HTTP (port 80) only “tcp.PayloadLength > 0”, // TCP data packets only WINDIVERT_LAYER_NETWORK, priority, 0 ); 我的问题是:我可以更改此代码以支持HTTPS(将端口更改为默认443)以及IPv6吗? 如果是这样,我愿意编写一个P \ Invoke包装类来从托管C#代码中调用它。 额外:可以使用SSH隧道绕过此解决方案,还有另一种绕过它的方法吗?