Методы программного изменения правил ipsec с помощью C #? - PullRequest
2 голосов
/ 23 октября 2009

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

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

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

Спасибо!

Ответы [ 3 ]

4 голосов
/ 24 октября 2009

1) Точно: WMI.

Статический метод класса WIP EnableIPFilterSec может активировать IP-безопасность глобально для всех сетевых IP-адаптеров. При включенной защите характеристики безопасности для любого конкретного адаптера можно изменить с помощью метода класса WIP EnableIPSec. 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. 1026 *

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

1 голос
/ 10 января 2011

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

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

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

или

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

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

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

1 голос
/ 24 декабря 2010

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

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

...