Способы программного изменения правил ipsec с помощью C #?

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

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

РЕДАКТИРОВАТЬ: Я работаю на C # и предпочел бы примеры C # в отношении ответов на основе .NET System.Management.

Спасибо!


person asteroid    schedule 22.10.2009    source источник


Ответы (3)


1) Точно: WMI.

Статический метод класса WMI EnableIPFilterSec может включить глобальную 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 начинает отбрасывать трафик. Сделанный!

person asteroid    schedule 24.10.2009

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

Полная статья:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

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

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

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

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

or

б) Запишите политики в реестр

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

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

person Dimos Dennis    schedule 10.01.2011