使用 Core Middleware 程序中的 C# 添加规则到 Windows 防火墙 (INetFwPolicy2) 时访问被拒绝

问题描述 投票:0回答:1

我正在尝试在用 C# 编写的 .Net Core 中间件(httpHandler)中向 Windows 防火墙添加规则。代码如下所示:

INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
 var rule = firewallPolicy.Rules.Item("IPBan_0"); 
 string[] addrs = rule.RemoteAddresses.ToString().Split(',');
 if (Array.IndexOf(addrs, $"{ip}/255.255.255.255") == -1)
 {
     rule.RemoteAddresses += $",{ip}/255.255.255.255";  <--  Error Here 
 }

我认为我必须授予“某些东西”更高的权限,但不确定我是否可以将它们授予此防火墙策略或整个程序......如果可以的话,我想避免这样做。我尝试在此网站的基本设置中指定管理员用户,但这没有帮助。

我需要做什么才能使其正常工作?

c# permissions windows-firewall asp.net-core-middleware
1个回答
0
投票

更改防火墙规则需要提升权限 - 这是有充分理由的。当代码在 Web 服务器进程中运行时,该 Web 服务器需要具有提升的权限,这独立于用户在所提供的网页上可能拥有的权限。

虽然可以使用管理员权限运行网络服务器,但这通常是一个坏主意,因为它可能使黑客更容易闯入服务器并完全控制它,所以这实际上应该只在存在情况下使用没有别的办法了。

© www.soinside.com 2019 - 2024. All rights reserved.