Изучение различных методов фильтрации правил брандмауэра по номеру порта в PowerShell

Брандмауэры играют решающую роль в обеспечении безопасности компьютерных сетей, контролируя входящий и исходящий сетевой трафик. Одним из распространенных требований является фильтрация правил брандмауэра на основе номеров портов. В этой статье мы рассмотрим различные методы PowerShell для выполнения этой задачи. Мы предоставим примеры кода, чтобы проиллюстрировать каждый метод и помочь вам лучше понять процесс.

Метод 1: использование командлета Get-NetFirewallRule
Командлет Get-NetFirewallRule в PowerShell предоставляет удобный способ получения правил брандмауэра. Чтобы фильтровать правила по номеру порта, мы можем использовать предложение «где» и указать нужный порт. Вот пример:

Get-NetFirewallRule | Where-Object { $_.LocalPort -eq 80 }

Эта команда извлекает все правила брандмауэра, для которых локальный порт установлен на 80. Вы можете заменить «80» на нужный номер порта.

Метод 2: использование командлетов CIM
PowerShell предоставляет командлеты CIM (Common Information Model), которые позволяют нам взаимодействовать с инструментарием управления Windows (WMI) и получать информацию, связанную с сетью. Мы можем использовать командлеты CIM для фильтрации правил брандмауэра по номеру порта. Вот пример:

$portNumber = 443
$firewallRules = Get-CimInstance -Namespace "root/StandardCimv2" -ClassName "MSFT_NetFirewallRule" | Where-Object { $_.LocalPort -eq $portNumber }

В этом примере мы сначала присваиваем нужный номер порта переменной $portNumber. Затем мы используем командлет Get-CimInstanceдля получения правил брандмауэра из класса MSFT_NetFirewallRuleи фильтруем их на основе локального порта, соответствующего $portNumber.

Метод 3. Анализ журнала брандмауэра Windows в режиме повышенной безопасности.
Другой подход заключается в непосредственном анализе файла журнала брандмауэра Windows в режиме повышенной безопасности. Этот метод позволяет вам искать определенные номера портов, упомянутые в журнале. Вот пример:

$logPath = "C:\Windows\System32\LogFiles\Firewall\pfirewall.log"
$portNumber = 3389
$logContent = Get-Content $logPath | Select-String -Pattern "ALLOW" | Select-String -Pattern ":$portNumber "
foreach ($line in $logContent) {
    Write-Output $line
}

В этом примере мы указываем путь к файлу журнала брандмауэра, используя переменную $logPath. Затем мы ищем строки, содержащие ключевое слово «ALLOW» и нужный номер порта, с помощью командлета Select-String. Наконец, мы выводим соответствующие строки.

В этой статье мы рассмотрели различные методы фильтрации правил брандмауэра по номеру порта в PowerShell. Мы рассмотрели использование командлета Get-NetFirewallRule, использование командлетов CIM и анализ журнала брандмауэра Windows в режиме повышенной безопасности. Каждый метод обеспечивает уникальный подход к выполнению задачи, предоставляя вам гибкость в управлении сетевой безопасностью. Понимая эти методы, сетевые администраторы могут эффективно фильтровать правила брандмауэра на основе номеров портов, повышая уровень безопасности своей сети.