Métodos de alterar programaticamente as regras do IPSEC com C#?
Pergunta
O único método que sei executar as alterações do IPSEC envolve chamar o Netsh para fazer as alterações. Existe um método usando objetos System.Management e WMI diretamente? Se assim for, o que é? Estou tendo dificuldade em encontrar informações relevantes para o WMI com o MSDN.
Ou existe algum outro método útil que alguém tenha usado?
EDIT: Estou trabalhando em C# e preferiria exemplos de C# em relação às respostas .NET System.Management Based.
Obrigada!
Solução
1) exato: WMI.
O método estático ENableipFilterSec WMI pode permitir a segurança do IP globalmente em todos os adaptadores de rede ligados a IP. Com a segurança ativada, as características de segurança para qualquer adaptador específico podem ser alteradas com o método de classe HabilableipSec WMI. MSDN para o primeiro aqui:
http://msdn.microsoft.com/en-us/library/aa390381%28vs.85%29.aspx
E consulte esta entrada do MSDN para obter informações sobre o Enableipsec e seus parâmetros (que permitem declarar uma lista de portas e protocolos):
http://msdn.microsoft.com/en-us/library/aa390382%28vs.85%29.aspx
Finalmente, este é um link para o diretório de código WMI.NET, onde há amostras úteis de código usando o System.Management para executar consultas WQL.
http://msdn.microsoft.com/en-us/library/ms257338.aspx
NOTA:
Se você precisar mexer extensivamente com testes WQL para seus objetos ObjectQuery/SelectQuery System.Management, como eu fiz, experimente o WBEMTEST. É o testador de instrumentação de gerenciamento do Windows e torna a redação, teste e aprimoramento do WQL para seus aplicativos muito mais agradáveis.
2) Relacionado: Alterações programáticas do firewall no Vista ou posteriormente usando o firewallapi, a interface inetfwrule e qualquer outra coisa que se possa precisar.
No Vista ou posterior, o uso do firewallapi.dll é uma opção fácil se você precisar da funcionalidade IPsec, mas não se importa com a implementação do Legacy PolicyAgent.
Eu não percebi que essa era uma opção no início, porque não sabia que o firewall avançado no Vista e depois combina realmente o iPsec e o firewall no PAM (Plataforma de filtragem do Windows) e mantém as implementações do IPSEC herdadas passando pelo PolicyAgent.
Isso significa que o uso de firewallapi.dll pode fornecer toda a funcionalidade do IPSEC com a inteligência com estado do firewall, que é exatamente o que eu queria. Acabei de adicionar regras da lista negra (como as regras da lista negra têm precedência) e adiciono à lista negra quando necessário através da API e o WFP começa a soltar o tráfego. Feito!
Outras dicas
No IIS 7, a restrição de IP pode ser manipulada diretamente do arquivo de configuração, sem mexer com o metadatabase. Para fácil, o arquivo de configuração de manutenção pode ser dividido com o ConfigSource, para que a seção ipsecure possa ser salva em seu próprio arquivo.
Artigo completo:
http://boseca.blogspot.com/2010/12/programticaticamente-addremove-ip-security.html
Você não pode fazer isso com o WMI. O WMI é restrito à filtragem TCP, significando portas de bloqueio. Nada mais.
Se você estiver usando as versões anteriores do Windows, você pode:
a) Use uma ferramenta de linha de comando, neste caso iPseccmd.exe ou ipsecpol.exe (w2k) ou netsh
ou
b) Escreva as políticas para o registro
Meu palpite é que as ferramentas da linha de comando fazem exatamente isso: elas escrevem valores no registro.
Estou nisso há algum tempo e não encontrei uma solução de código gerenciado. Pena que a API do WFP não esteja disponível nas versões anteriores do Windows.