C# Windows筛选平台-如何阻止基于本地端口的传入连接?

C# Windows筛选平台-如何阻止基于本地端口的传入连接?,c#,wfp,C#,Wfp,我正在尝试使用WFP设置一些过滤器,以阻止与本地服务器(例如,侦听端口8080的Web服务器)的入站连接 我有一个过滤器,它可以基于远程端口进行阻塞,因此我可以停止我机器上的进程建立到端口8080的任何连接,但我不知道如何基于本地端口8080阻止来自另一台机器的传入连接 以下是我的代码,用于基于远程端口进行阻止: (这是C#使用P/invoke,但与用C++编写时几乎相同) 如上所述,此代码确实可以阻止与远程端口8080的连接。为了阻止与本地端口8080的连接,我修改了代码如下: var Loc

我正在尝试使用WFP设置一些过滤器,以阻止与本地服务器(例如,侦听端口8080的Web服务器)的入站连接

我有一个过滤器,它可以基于远程端口进行阻塞,因此我可以停止我机器上的进程建立到端口8080的任何连接,但我不知道如何基于本地端口8080阻止来自另一台机器的传入连接

以下是我的代码,用于基于远程端口进行阻止: (这是C#使用P/invoke,但与用C++编写时几乎相同)

如上所述,此代码确实可以阻止与远程端口8080的连接。为了阻止与本地端口8080的连接,我修改了代码如下:

var LocalPort = 8080;

var condition = new Fwpm.FWPM_FILTER_CONDITION0 {
    fieldKey = Fwpm.FWPM_CONDITION_IP_LOCAL_PORT,
    matchType = Fwpm.FWP_MATCH_TYPE.FWP_MATCH_EQUAL,
    conditionValue = {
        type = Fwpm.FWP_DATA_TYPE.FWP_UINT16,
        uint16 = LocalPort
    }
}

// create the filter itself
var fwpFilter = new Fwpm.FWPM_FILTER0();
fwpFilter.layerKey = Fwpm.FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4;
MSDN意味着
FWPM\u LAYER\u ALE\u AUTH\u RECV\u ACCEPT\u V4
是阻止入站连接的正确位置,但这根本不起作用。我尝试了
FWPM\u LAYER\u ALE\u RESOURCE\u ASSIGNMENT\u V4
以及其他一些层,但无论我尝试了什么,我始终能够在我的机器上的8080端口上建立从另一台机器到服务器的连接


任何帮助都将不胜感激

您应该能够在支持FWPM_条件\u IP_本地\u端口条件的任何入站或RECV层上创建该过滤器,要搜索的资源是:

然而,并不是所有的流量都通过每一层,我并不是一个专家,但有一种方法是在每一个适用的层(六个左右的文件管理器)中添加一个这样的过滤器,看看是否有效。如果是这样的话,你可以一次一个地移除过滤器,直到找到真正需要的过滤器。在最近的一个项目中,我需要4层来阻止我感兴趣的所有流量

值得注意的一个大警告是,localhost上的流量可能不会经过任何WFP层(或者可能只是跳过了入站层,我不记得了)。因此,您可以使用WFP阻止与端口的远程连接,但本地连接仍可能通过

var LocalPort = 8080;

var condition = new Fwpm.FWPM_FILTER_CONDITION0 {
    fieldKey = Fwpm.FWPM_CONDITION_IP_LOCAL_PORT,
    matchType = Fwpm.FWP_MATCH_TYPE.FWP_MATCH_EQUAL,
    conditionValue = {
        type = Fwpm.FWP_DATA_TYPE.FWP_UINT16,
        uint16 = LocalPort
    }
}

// create the filter itself
var fwpFilter = new Fwpm.FWPM_FILTER0();
fwpFilter.layerKey = Fwpm.FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4;