Есть ли способ увидеть, когда правило брандмауэра Windows было создано/включено, используя PowerShell v2 или CMD?

Вопрос или проблема

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

netsh advfirewall firewall show rule name=all

Однако она выдает мне такой вывод:

Rule Name: Core Networking – Teredo (ICMPv6-In)


Enabled: Yes
Direction: In
Profiles: Domain,Private,Public
Grouping: Core Networking
LocalIP: Any
RemoteIP: Any
Protocol: ICMPv6
Type Code
128 Any
Edge traversal: No
Action: Allow

Что мне нужно найти, так это точное время, когда правило было создано/включено. Это возможно? Или, альтернативно, есть ли способ настроить временные (с установленным временем) правила брандмауэра Windows?

ИСПРАВЛЕНИЕ: Кажется, действительно нет способа сделать это с помощью netsh или специфических для брандмауэра командлетов PowerShell v2, однако я полагаю, что мое решение может заключаться в /Applications and Services Logs/Microsoft/Windows/Windows Firewall With Advanced Security/Firewall log под идентификаторами событий 2004/2006.

**Исправление: Следующую команду можно использовать для просмотра Instance ID 2004 (Правило было добавлено в брандмауэр…):

Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" | Where-Object {$_.ID -eq "2004"}

***Исправление: Следующая команда – самый быстрый способ собрать эту информацию, если говорить о Measure-Command -Expression. Вы можете изменить время начала/конца или удалить его полностью, если хотите:

Get-WinEvent -ErrorAction SilentlyContinue -FilterHashtable @{logname="Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"; id=2004; StartTime=(Get-Date).AddMinutes(-5); EndTime=Get-Date}

Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 166
Ticks : 1662222
TotalDays : 1.92386805555556E-06
TotalHours : 4.61728333333333E-05
TotalMinutes : 0.00277037
TotalSeconds : 0.1662222
TotalMilliseconds : 166.2222

И выдает такой вывод (вы можете получить полный текст сообщения, передав его в что-то вроде Format-List):

 ProviderName: Microsoft-Windows-Windows Firewall With Advanced Security

TimeCreated Id LevelDisplayName Message


4/28/2014 2:42:26 PM 2004 Information A rule has been added to the Windows Firewall exception list….
4/28/2014 11:56:43 AM 2004 Information A rule has been added to the Windows Firewall exception list….

Обновленный вопрос будет таким: Есть ли способ получить эту информацию и вместо колонки Message получить Rule Name (Format-List pipe below)

TimeCreated : 4/28/2014 10:50:54 AM
ProviderName : Microsoft-Windows-Windows Firewall With Advanced Security
Id : 2004
Message : A rule has been added to the Windows Firewall exception list.

       Added Rule:
           Rule ID:    ...
           Rule Name:    Dummy rule
           Origin:    Local
           Active:    Yes
           Direction:    Inbound
           Profiles:    Private,Domain, Public
           Action:    Block
           Application Path:
           Service Name:
           Protocol:    Any
           Security Options:    None
           Edge Traversal:    None
           Modifying User:    ...
           Modifying Application:    ...

Ожидаемый вывод будет что-то вроде этого:

TimeCreated Rule Name


4/28/2014 2:42:26 PM Dummy rule
4/28/2014 11:56:43 AM Dummy rule

Уже прошел как минимум день, так что я предполагаю, что нормально ответить на свой собственный вопрос (думаю, я задал этот вопрос не в том месте, вероятно, это больше подходит для Stack Overflow):

$Events = Get-WinEvent -ErrorAction SilentlyContinue -FilterHashtable @{logname="Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"; id=2004}

ForEach ($Event in $Events) {
$eventXML = [xml]$Event.ToXml()
For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) {
Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name $eventXML.Event.EventData.Data[$i].name
-Value $eventXML.Event.EventData.Data[$i].’#text’
}
}

$Events | Format-Table -Property TimeCreated,RuleName -AutoSize

Вывод выглядит точно так, как я хотел:

TimeCreated RuleName


4/28/2014 2:42:26 PM Dummy Rule
4/28/2014 11:56:43 AM Dummy Rule

Надеюсь, это поможет кому-то в будущем. Спасибо.

Не совсем в теме, так как мы не будем использовать PowerShell или CMD, но сегодня у меня был похожий вопрос, и я обнаружил, что можно быстро просмотреть последние события в брандмауэре Windows с расширенной безопасностью с помощью Просмотра событий:

Чтобы просмотреть события для брандмауэра Windows с расширенной безопасностью в
Просмотре событий:

Просмотр событий доступен как часть Управления компьютером. Нажмите
Пуск, щелкните правой кнопкой мыши Компьютер, а затем выберите Управление. В разделе
Системные инструменты щелкните Просмотр событий.

В дереве навигации разверните Просмотр событий, разверните
Приложения и службы, разверните Microsoft, разверните Windows, а затем разверните Брандмауэр Windows с расширенной безопасностью.

Предоставлены четыре представления оперативных событий:

ConnectionSecurity. Этот журнал содержит события, связанные с настройкой правил и параметров IPsec. Например, когда правило безопасности соединения добавляется или удаляется, или когда параметры IPsec изменяются, событие добавляется сюда.

ConnectionSecurityVerbose. Этот журнал содержит события, связанные с оперативным состоянием движка IPsec. Например, когда правило безопасности соединения становится активным или когда криптонаборы добавляются или удаляются, событие добавляется сюда. Этот журнал отключен по умолчанию. Чтобы включить этот журнал, щелкните правой кнопкой мыши ConnectionSecurityVerbose, а затем выберите Включить журнал.

Firewall. Этот журнал содержит события, связанные с настройкой брандмауэра Windows. Например, когда правило добавляется, удаляется или изменяется, или когда сетевой интерфейс меняет свой профиль, событие добавляется сюда.

FirewallVerbose. Этот журнал содержит события, связанные с оперативным состоянием брандмауэра. Например, когда правило брандмауэра становится активным, или когда параметры профиля изменяются, событие добавляется сюда. Этот журнал отключен по умолчанию. Чтобы включить этот журнал, щелкните правой кнопкой мыши FirewallVerbose, а затем выберите Включить журнал.

Каждое событие включает вкладку Общее, которая суммирует информацию, содержащуюся в событии. Для получения дополнительной информации о событии щелкните Веб-страница справки по журналам событий, чтобы открыть веб-страницу в Технической библиотеке Windows Server, которая содержит подробную информацию и предписанные рекомендации.

Событие также включает вкладку Сведения, которая отображает необработанные данные, связанные с событием. Вы можете скопировать и вставить информацию на вкладке Сведения, выбрав текст (CTRL+A выберет все), а затем нажав CTRL-C.

https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff428140(v=ws.10)?redirectedfrom=MSDN Надеюсь, это может быть полезно как общее знание.

Ответ или решение

Вопрос о том, как увидеть, когда была создана или включена правило брандмауэра Windows, вызывает повышенный интерес среди ИТ-специалистов. Наиболее распространенные инструменты для выполнения этой задачи, такие как PowerShell и командная строка (CMD), могут не поддерживать данную функциональность в полной мере, но есть обходные пути для получения нужной информации.

1. Использование командной строки

Вы уже упомянули команду netsh advfirewall firewall show rule name=all, которая позволяет получить список правил брандмауэра. Однако, в выводе данной команды не отображается информация о времени создания или активации правила. Это одна из ограничений, связанных с инструментом netsh.

2. Использование PowerShell v2

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

3. Извлечение данных из Журнала событий

Наилучший способ получить информацию о правилах брандмауэра и их времени создания или активации – это использование Журнала событий Windows. Как вы уже заметили, события с ID 2004 и 2006 содержат информацию о добавлении и изменении правил брандмауэра.

Получение информации о событиях

В вашем примере вы использовали следующую команду:

Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" | Where-Object {$_.ID -eq "2004"}

Это вернет события, указывающие на добавление новых правил. Чтобы извлечь название правила, можно использовать XML представление события. Вот пример кода, который вы уже привели:

$Events = Get-WinEvent -ErrorAction SilentlyContinue -FilterHashtable @{logname="Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"; id=2004}

ForEach ($Event in $Events) {
    $eventXML = [xml]$Event.ToXml()
    For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) {
        Add-Member -InputObject $Event -MemberType NoteProperty -Force `
            -Name  $eventXML.Event.EventData.Data[$i].name `
            -Value $eventXML.Event.EventData.Data[$i].'#text'
    }
}

$Events | Format-Table -Property TimeCreated,RuleName -AutoSize

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

TimeCreated           RuleName
-----------           --------
4/28/2014 2:42:26 PM  Dummy Rule
4/28/2014 11:56:43 AM Dummy Rule

4. Временные правила брандмауэра

Если вы ищете способ создать временные правила брандмауэра, то, к сожалению, из коробки Windows не предлагает инструментов для автоматического удаления правил через определённый промежуток времени. Однако вы можете использовать планировщик задач для выполнения сценария, который удаляет правило в заданное время.

Заключение

Хотя в PowerShell v2 и CMD нет встроенных средств для отслеживания времени создания правил брандмауэра, использование Журналов событий Windows и небольших скриптов позволяет получать необходимую информацию. Подход с анализом событий является наиболее эффективным методом для решения данной задачи.

Если у вас есть дальнейшие вопросы или требуется помощь, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...