用C#以编程方式改变ipsec规则的方法?

时间:2009-10-22 20:51:22

标签: c# wmi ipsec

我知道如何执行IPsec更改的唯一方法是调用netsh来执行更改。是否有直接使用System.Management和WMI对象的方法?如果是这样,它是什么?我很难在MSDN上找到相关的WMI信息。

或者是否有其他人使用过的有用方法?

编辑:我在C#工作,并且更喜欢基于.NET System.Management的答案的C#示例。

谢谢!

3 个答案:

答案 0 :(得分:4)

1)确切:WMI。

EnableIPFilterSec WMI类静态方法可以在所有IP绑定网络适配器上全局启用IP安全性。启用安全性后,可以使用EnableIPSec WMI类方法更改任何特定适配器的安全特性。前者的MSDN在这里:

http://msdn.microsoft.com/en-us/library/aa390381%28VS.85%29.aspx

有关EnableIPSec及其参数(允许您声明端口和协议列表)的信息,请参阅此MSDN条目:

http://msdn.microsoft.com/en-us/library/aa390382%28VS.85%29.aspx

最后,这是一个指向WMI.NET代码目录的链接,其中包含使用System.Management执行WQL查询的有用代码示例。

http://msdn.microsoft.com/en-us/library/ms257338.aspx

注:

如果你需要广泛使用针对ObjectQuery / SelectQuery System.Management对象的WQL测试,就像我一样,试试wbemtest。它是Windows Management Instrumentation测试人员,可以更好地为您的应用程序编写,测试和修改WQL。

2)相关:Vista或更高版本上的程序化防火墙更改使用FirewallAPI,INetFwRule接口以及可能需要的任何其他内容。

在Vista或更高版本中,如果您需要ipsec功能但不关心旧版PolicyAgent实施,则使用FirewallAPI.dll是一个简单的选择。

我一开始并没有意识到这是一个选项,因为我不知道Vista中的高级防火墙以及后来在WFP(Windows过滤平台)中真正结合了IPSec和防火墙,并使传统的IPSec实施通过PolicyAgent。 / p>

这意味着使用FirewallAPI.dll可以赋予IPSec的所有功能以及防火墙的状态智能,这正是我想要的。我只是添加黑名单规则(因为黑名单规则优先),并在需要时通过API添加到黑名单,WFP开始丢弃流量。完成!

答案 1 :(得分:1)

在IIS 7中,可以直接从配置文件中操作IP限制,而不会弄乱元数据库。为了便于维护,可以使用configSource拆分配置文件,以便将IPSecure部分保存到自己的文件中。

全文:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

答案 2 :(得分:1)

你不能用WMI做到这一点。 WMI仅限于TCP过滤,即阻塞端口。没什么。

如果您使用的是以前的Windows版本,则可以:

a)使用命令行工具,在本例中为ipseccmd.exe或ipsecpol.exe(W2K)或netsh

b)将政策写入注册局

我的猜测是命令行工具就是这样:它们将值写入注册表。

我已经进入它一段时间了,我没有找到托管代码解决方案。太糟糕了,以前的Windows版本中没有WFP API。