2010-12-07 78 views
8

Quelqu'un sait comment ajouter par programme une adresse IP à une règle de pare-feu Windows 2008 avec sécurité avancée?Ajout de la règle de pare-feu IP à Server 2008 par programme

C'est-à-dire que j'ai configuré une règle de pare-feu Bloc Action dont certaines adresses IP sont répertoriées dans la section «Adresse IP distante» de l'étendue. Je veux être en mesure d'ajouter par programme (ou peut-être supprimer) des adresses IP de cette liste. Existe-t-il des objets .NET disponibles pour cela?

Répondre

8

Vous pouvez également essayer l'environnement netsh.
Je l'ai utilisé une fois pour changer le MTU de mon interface

4

Je viens de faire ce travail dans vb.NET. Ajouter un refrence à "c: \ windows \ system32 \ firewallapi.dll"

Faire une classe appelée Pare-feu - comme ceci:

Imports NetFwTypeLib 
Imports System.Net 

Public Class Firewall 
    Implements IDisposable 
    Private _policy As INetFwPolicy2 = Nothing 

    Private ReadOnly Property Policy As INetFwPolicy2 
     Get 
      If _policy Is Nothing Then 
       _policy = DirectCast(Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")), INetFwPolicy2) 
      End If 
      Return _policy 
     End Get 
    End Property 

    Public Sub Add(ipAddress As IPAddress, ruleName As String) 
     Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName) 
     Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255" 
     If Not firewallRule.RemoteAddresses.Contains(NewAddress) Then 
      firewallRule.RemoteAddresses += "," & NewAddress 
     End If 
    End Sub 

    Public Sub Remove(ipAddress As IPAddress, ruleName As String) 
     Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName) 
     Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255" 
     If firewallRule.RemoteAddresses.Contains(NewAddress) Then 
      Dim ipList As String = firewallRule.RemoteAddresses 
      ipList = ipList.Replace(NewAddress, "") 
      ipList = ipList.Replace(",,", ",") 
      firewallRule.RemoteAddresses = ipList 
     End If 
    End Sub 

    Public Function Exists(ipAddress As IPAddress, ruleName As String) As Boolean 
     Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName) 
     Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255" 
     If firewallRule.RemoteAddresses.Contains(NewAddress) Then 
      Return True 
     Else 
      Return False 
     End If 
    End Function 

    Private disposedValue As Boolean 
    Protected Overridable Sub Dispose(disposing As Boolean) 
     If Not Me.disposedValue Then 
      If disposing Then 
      End If 
      If Not _policy Is Nothing Then 
       _policy = Nothing 
      End If 
     End If 
     Me.disposedValue = True 
    End Sub 

    Public Sub Dispose() Implements IDisposable.Dispose 
     Dispose(True) 
     GC.SuppressFinalize(Me) 
    End Sub 
End Class 
+0

Code Nice. Je travaille bien pour moi – SamTech