2009-03-31 2 views
4

Ich möchte IP-Sicherheitsrichtlinien unter Windows Server 2003 programmgesteuert mit C# hinzufügen oder entfernen.Was sind meine Optionen zum Hinzufügen und Entfernen von IPSec-Richtlinien auf Windows Server mit C#?

Normalerweise würden Sie diese Richtlinien manuell über das gpedit.msc-Snap-In bearbeiten (unter Windows-Einstellungen -> Lokale Richtlinien -> IP-Sicherheitsrichtlinien auf lokalem Computer). Aber ich muss in der Lage sein, IP-Filterrichtlinien durch Code hinzuzufügen.

Irgendwelche Ideen, wie man das macht?

Antwort

3

Ich habe seit etwa zwei Wochen mit diesem Thema beschäftigen, und leider haben Sie zwei Möglichkeiten, abhängig von der Tiefe der Kontrolle, die Sie brauchen:

1) Die direkten Manipulation mit WMI. Counter-intuitiv, dies tatsächlich ausgesetzt weniger Kontrolle als Option # 2 (was ist, was ich selbst tun). Dies geschieht über die Klasse Win32_NetworkAdapterConfiguration. Hier ist ein Link auf die Frage, die ich danach gefragt, mit meiner Antwort auf es eine Weile später, nachdem es die Erforschung:

Methods of programatically altering ipsec rules with C#?

Dies macht weniger Funktionalität, weil Sie nur drei Dinge durch IPsec für die Adapter steuern: TCP-Ports , UDP-Ports, IP-Protokolle. (Sie können nicht mit mehreren Richtlinien, verschiedenen Subnetzmasken, etc. umgehen)

2) Wrapping Netsh IPSec, um alle Ihre schmutzige Arbeit zu tun. Dies ist die Vorgehensweise, da Powershell (die über die PowerShell-Klasse in System.Management.Automation aufgerufen werden kann) derzeit kein Cmdlet für IPSec-Änderungen aufweist.

Is there a cmdlet in PowerShell 2 to handle ipsec changes?

Wrapping netsh ipsec durch eine Powershell-Pipeline durch System.Management.Automation.PowerShell genannt ist, was ich tun endete.

Verwenden Sie entweder System.Diagnostics.Process zum Erstellen und Steuern einer Shell, oder verwenden Sie die PowerShell-Klasse wie oben erwähnt. Entweder sollte die Arbeit erledigt werden.

HINWEIS Wenn Sie an einem bestimmten Punkt zu 2008 wechseln, beachten Sie, dass netsh ipsec ist veraltet, und stellen Sie sicher, stattdessen netsh advfirewall zu verwenden.

Viel Glück!

-2

Sie könnten System.Diagnostics.Process verwenden und "cmd.exe" mit dem Befehl ipsec als Argumente ausführen.

Eine andere Ressource, die Sie versuchen können, ist Microsoft's website oder Google.

+0

Ich habe bereits gegoogled, und durchsucht StackOverflow.com, und wenn Sie die MS-Seite lesen, die Sie verknüpfen, würden Sie sehen, dass die IPSecpol.exe (die ein wahrscheinlicher Kandidat für das richtige Werkzeug zu sein scheint) * ist nicht in Windows Server 2003 enthalten * – ZeroBugBounce

Verwandte Themen