2009-10-22 3 views
2

Единственный метод, который я знаю, как выполнять изменения IPsec, включает вызов netsh для внесения изменений. Существует ли метод, непосредственно использующий объекты System.Management и WMI? Если так, то, что это? Мне сложно найти соответствующую информацию WMI с MSDN.Способы программного изменения правил ipsec с помощью C#?

Или есть какой-нибудь другой полезный метод, который кто-то там использовал?

EDIT: Я работаю на C# и предпочитаю примеры C# в отношении ответов на .NET System.Management.

Спасибо!

ответ

4

1) Точность: WMI.

Статический метод класса EnableIPFilterSec WMI позволяет включить глобальную защиту IP-адресов во всех сетевых адаптерах, связанных с IP-сетью. При включенной безопасности характеристики безопасности для любого конкретного адаптера могут быть изменены с помощью метода класса EnableIPSec WMI. MSDN для бывшего здесь:

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

И увидеть эту запись MSDN для получения информации о EnableIPSec и его параметры (которые позволяют вам объявить список портов и протоколов):

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

Примечание:

Если вам нужно возиться с широко WQL испытаний для ObjectQuery/SelectQuery System.Management объектов, как и я, дать WBEMTEST попробовать. Это тестер инструментария управления Windows, а также делает запись, тестирование и оттачивание WQL для ваших приложений намного приятнее.

2) Связано: Изменения в программном брандмауэре в Vista или более поздней версии с использованием интерфейса FirewallAPI, INetFwRule и всего остального, что может понадобиться.

В Vista или более поздней версии использование FirewallAPI.dll - это простой вариант, если вам нужна функциональность ipsec, но не заботятся о реализации проекта PolicyAgent.

Я не понимал, что это был вариант сначала, потому что я не знал, что Advanced Firewall в Vista и позже действительно сочетает IPSec и межсетевой экран в WFP (платформа фильтрации Windows) и сохраняет устаревшие реализации IPSec через PolicyAgent.

Это означает, что использование FirewallAPI.dll может предоставить всю функциональность IPSec с учетом состояния брандмауэра, что я и хотел. Я просто добавляю правила черного списка (так как правила черного списка имеют приоритет) и добавляются в черный список, когда это необходимо через API, и WFP начинает отбрасывать трафик. Готово!

1

В IIS 7 Ограничение IP-адреса может быть выполнено непосредственно из конфигурационного файла без использования метаданных. Для упрощения конфигурации файл конфигурации можно разделить с помощью configSource, чтобы раздел IPSecure можно было сохранить в собственный файл.

Полный текст статьи:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

+0

IPSec - это шифрование IP-пакетов. В вашей ссылке показано, как ограничить доступ к веб-сайту на основе IP-адреса. Эти две вещи совершенно не связаны. – Gabe

1

Вы не можете сделать это с помощью WMI. WMI ограничивается фильтрацией TCP, что означает блокирование портов. Больше ничего.

Если вы используете предыдущие версии Windows, вы можете:

а) использовать инструмент командной строки, в этом случае либо IPSeccmd.exe или Ipsecpol.exe (W2K) или Netsh

или

б) записать политику в реестр

Я думаю, что инструменты командной строки сделать только что: они пишут значения в реестре.

Я занимаюсь этим некоторое время, и я не нашел управляемое кодовое решение. Слишком плохо, что API WFP недоступен в предыдущих версиях Windows.