Программно добавить IP к правилу брандмауэра Server 2008 - PullRequest
8 голосов
/ 08 декабря 2010

Кто-нибудь знает, как программно добавить IP-адрес в брандмауэр Windows Server 2008 с правилом повышенной безопасности?

то есть я установил правило брандмауэра Block Action, в котором некоторые IP-адреса перечислены в разделе «Удаленный IP-адрес».адрес »раздела Область применения.Я хочу иметь возможность программно добавлять (или, возможно, удалять) IP-адреса из этого списка.Есть ли для этого доступные объекты .NET?

Ответы [ 4 ]

11 голосов
/ 16 декабря 2010

Стартовую страницу брандмауэра Windows с расширенной безопасностью можно найти по адресу:

http://msdn.microsoft.com/en-us/library/ff956124(v=VS.85).aspx

В частности, похоже, вам нужен интерфейс INetFwRule, который описан по адресу:

http://msdn.microsoft.com/en-us/library/aa365344(v=VS.85).aspx

Проверьте get_RemoteAddresses и put_RemoteAddresses

8 голосов
/ 13 декабря 2010

Вы также можете попробовать среду netsh .
Я использовал его один раз для изменения MTU моего интерфейса

7 голосов
/ 21 июня 2013

Я только что сделал эту работу в vb.NET. Добавьте ссылку на «c: \ windows \ system32 \ firewallapi.dll»

Создайте класс с именем Firewall - примерно так:

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
6 голосов
/ 11 декабря 2010

Я думаю, что информация, которую вы ищете, доступна здесь:

http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...