Методы программного изменения правил ipsec с помощью C #?
Вопрос
Единственный известный мне метод выполнения изменений IPSec включает вызов netsh для внесения изменений.Существует ли метод, использующий System.Management и объекты WMI напрямую?Если да, то что это?Мне трудно найти соответствующую информацию WMI с помощью MSDN.
Или есть какой-то другой полезный метод, который кто-то там использовал?
Редактировать:Я работаю на C # и предпочел бы примеры C # в отношении ответов, основанных на .NET System.Management.
Спасибо!
Решение
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 code, где есть полезные примеры кода, использующего 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.
Сначала я не осознавал, что это вариант, потому что я не знал, что расширенный брандмауэр в Vista и более поздних версиях действительно сочетает IPSec и брандмауэр в рамках WFP (платформа фильтрации Windows) и поддерживает устаревшие реализации IPSec, проходящие через PolicyAgent.
Это означает, что использование FirewallAPI.dll может предоставить всю функциональность IPSec с отслеживанием состояния брандмауэра, что является именно тем, чего я хотел.Я просто добавляю правила черного списка (поскольку правила черного списка имеют приоритет) и добавляю в черный список при необходимости через API, и WFP начинает отбрасывать трафик.Сделано!
Другие советы
В IIS 7 IP-ограничением можно манипулировать напрямую из файла конфигурации, не вмешиваясь в базу метаданных. Для удобства обслуживания файл конфигурации можно разделить с помощью configSource, чтобы раздел IPSecure можно было сохранить в своем собственном файле.
Полная статья:
http://boseca.blogspot.com/2010/12/programmatics -addremove-ф-security.html
Вы не можете сделать это с помощью WMI.WMI ограничен фильтрацией TCP, что означает блокировку портов.И ничего больше.
Если вы используете предыдущие версии Windows, вы можете либо:
a) используйте инструмент командной строки, в данном случае либо ipseccmd.exe, либо ipsecpol.exe (W2K), либо netsh
или
б) Внесите политики в реестр
Я предполагаю, что инструменты командной строки делают именно это:они записывают значения в реестр.
Я занимаюсь этим уже некоторое время и не нашел решения с управляемым кодом.Очень жаль, что API WFP недоступен в предыдущих версиях Windows.