- Remove From My Forums
-
Question
-
Hi,
I have a powershell script that needs to read the security logs on the client pc,
Every time the script runs it gives one of these errors:
Get-Eventlog: Cannot open log security on machine… Windows has not provided an error code.
Get-EventLog: Requested registry access is not allowed.
I tried,putting the user in the eventlog viewer group, disabling firewall and on a windows install without AV and nothing works the only difference between the production environment and lab was that there was a 2003 server that was the main DC and no has
been decommissioned and we raised the functional level of the other DCs to 2012r2.I am running Server 2012r and 2016.
Thank you for your help.
- Remove From My Forums
-
Вопрос
-
Коллеги, приветствую.
Ситуацию такая: написан скрипт (ПоверШел), который ищет на контроллере домена в журнале Security определенные события. При запуске этого скрипта от имени администратора, все ОК, а вот при запуске от имени пользователя входящего в группу Администраторы домена
получаю ошибку в консоли:Get-WinEvent : Не удалось получить сведения о журнале Security. Ошибка: Попытка выполнить несанкционированную операцию..
Ясно, что отсутствует доступ к данному журналу.
Собственно вопрос: как дать доступ пользователю или группе доступ к данному журналу? Желательно только на чтение
Ответы
-
есть такая группа, Event Log Readers, лучше использовать ее — запускать скрипты из под админа очень плохо.
-
Помечено в качестве ответа
29 октября 2012 г. 6:16
-
Помечено в качестве ответа
-
Такая же группа есть и в домене. Смотрите внимательнее.
-
Помечено в качестве ответа
Евгений86749
29 октября 2012 г. 3:33
-
Помечено в качестве ответа
Время на прочтение
4 мин
Количество просмотров 14K

Привет Хабр! Читайте под катом как получить доступ к логу безопасности Windows без прав администратора. Эта будет не первая статья на Хабре связанная с логами Windows и наверно не самая оригинальная, но на мой взгляд я потратил слишком много времени на поиск простого решения для чтения логов обычным пользователем, вот я и решил поделиться «историей своего успеха».
Также пришлось сравнить скорость работы Powershell командлетов Get-WinEvent и Get-EventLog.
Все что находится под катом актуально для Windows Server 2008R2/2012R2, Windows 10 Pro (1809), на других версиях я не проверял, думаю что с продуктами 2016 и 2019 годов ситуация аналогичная.
И так, по умолчанию у рядового пользователя прав на чтение логов безопасности нет.
При попытке получить логи вы получите ошибку.

И через Event Viewer в доступе также будет отказано.

SHOWTIME
Добавим пользователя в локальную группу Event Log Readers.

Далее предоставляем права на чтение ветки реестра MACHINESystemCurrentControlSetServicesEventlogSecurity.

Без изменения прав на эту ветку реестра, прочитать параметры лога безопасности не получится, соответственно не получится узнать место расположение и имя файла с логами. Security, это единственный раздел сервиса Eventlog который не наследует права доступа от корня.
Вот как выглядят права для MACHINESystemCurrentControlSetServicesEventlog.

Проверяем, оба командлета Get-WinEvent и Get-EventLog работают!
Позже вернусь к сравнению этих командлетов…

Manage auditing and security log
Если пользователю необходимо предоставить права на отчистку лога, вам придется отредактировать групповую политику. Пользователю или группе пользователей необходимо добавить права Manage auditing and security log.
Находится данная группа тут Computer ConfigurationWindows SettingsSecurity SettingsLocal PoliciesUser Rights Assignment.

Более подробно про Manage auditing and security log можно прочитать тут
This policy setting determines which users can specify object access audit options for individual resources such as files, Active Directory objects, and registry keys. These objects specify their system access control lists (SACL). A user who is assigned this user right can also view and clear the Security log in Event Viewer. For more info about the Object Access audit policy, see Audit object access.
Проверяем, все работает как и было обещано, логи были отчищены…

Другие логии отчистить прав нету.

Честно говоря, не могу придумать сценарий где пользователю нужно выдать права на отчистку логов безопасности, но такая возможность присутствует.
Get-WinEvent VS Get-EventLog
Пришло время сравнить эти два командлета
Get-EventLog
Description:
The Get-EventLog cmdlet gets events and event logs on the local and remote computers.
You can use the cmdlet’s parameters and property values to search for events. This cmdlet gets events that match the specified property values.
The cmdlets that contain the EventLog noun work only on classic event logs. To get events from logs that use the Windows Event Log technology in Windows Vista and later Windows versions, use Get-WinEvent.
Get-WinEvent
Description:
The Get-WinEvent cmdlet gets events from event logs, including classic logs, such as the System and Application logs, and the event logs that are generated by the Windows Event Log technology introduced in Windows Vista. It also gets events in log files generated by Event Tracing for Windows (ETW).
Without parameters, a Get-WinEvent command gets all the events from all the event logs on the computer. To interrupt the command, press CTRL + C.
Get-WinEvent also lists event logs and event log providers. You can get events from selected logs or from logs generated by selected event providers. And, you can combine events from multiple sources in a single command. This cmdlet allows you to filter events by using XPath queries, structured XML queries, and simplified hash-table queries
Согласно описания, Get-WinEvent умеет работать с большим количеством журналов которые появились в WIndows Vista.
Для наглядности вот списки с которыми работают эти командлеты, вывод для Get-WinEvent я остановил.

Но есть одно но, производительность имеет значение, сравните время выполнения запросов.

Время работы Get-WinEvent просто поражает, обратите внимание на количество записей в логах Applocation и Security, количество событий примерно одинаковое 3400-3600, но при этом разница по времени выполнения почти 20 раз…
Get-WinEvent тратит 127 секунд против 52 секунд Get-EventLog для чтения событий Application.
И шах и мат, Get-WinEvent тратит 2020 секунд против 45 секунд Get-EventLog для чтения событий Security.
Если выполнить те же команды локально все выглядит не так уж и плохо, но даже локально Get-EventLog работает с логами безопасности в 50 раз быстрее чем Get-WinEvent.

И еще один пример, уже чуть более осмысленный, получения событий с кодом 4624 An account was successfully logged on.

Что тут сказать, цифры не врут…
Non-administrator access to DC Event logs
И на заключение я оставил тему получения доступа к логам безопасности на домен контроллере.
Все выше написанное актуально и для домен контроллера с некоторыми поправками.
1 — Группу Event Log Readers вы найдете в объектах Built-in security principals.

Добавляя пользователя в данную группу вы даете права только на чтение логов на домен контроллерах.
И не забывайте что на каждом из домен контроллеров необходимо дать права на чтение ветки реестра MACHINESystemCurrentControlSetServicesEventlogSecurity.
Вот пример, прочитать лог рядового сервера разрешений нет, если вам нужно читать логи с других машин домена, используйте групповые политики, для добавления пользователей или групп пользователей в локальные группы Event Log Readers.

2 – Для добавления прав на отчистку логов необходимо редактировать политику Default Domain Controllers Policy.
3 – Для разрешения запуска заданий от имени пользователя на домен контроллере необходимо также редактировать Default Domain Controllers Policy и дать пользователю права Log on as a batch job.
4 — Будьте предельно внимательными при редактировании дефолтных политик домена!
P.S.
Краткий список ресурсов, которые мне помогли:
- Giving Non Administrators permission to read Event Logs Windows 2003 and Windows 2008
- How to set event log security locally or by using Group Policy
- Безопасность DC — чтение Security Event Log
- Get-WinEvent with non-administrative user
- Domain Controller Security Logs – how to get at them *without* being a Domain Admin
На мой взгляд полезные публикации на Habr, темы которых касаются логов Windows:
- Аудит Active Directory средствами Powershell с оповещением об изменениях. Часть 1
- Поиск источника блокировки пользователя в Active Ditectory
- Мониторинг и оповещение о событиях в журналах Windows: отправка на E-mail в Windows Server 2012 R2
- Аудит безопасности на сервере. Поиск по жураналу безопасности. Power Powershell
The End
I have created a Powershell script that retrieves information from the Security section of the Windows Event Log:
Get-EventLog -Log "Security" -EntryType Warning,Error,FailureAudit -After (Get-Date).addDays(-1)
This works fine if I run the script when logged on to the server (as an administrator).
I run into a problem when I try to run this as a different user. In my case, the Powershell script is invoked from within Oracle’s job scheduler. This scheduler runs under the account «NT SERVICEOracleJobSchedulerXE».
At first run, this produced the following error:
"Get-EventLog : Requested registry access is not allowed."
Based on a little research, I then tried the following:
- Added the «NT SERVICEOracleJobSchedulerXE» user to the «Event Log Readers» group
- Used regedit to go to HKLMSystemCurrentControlSetServicesEventlogSecurity, right click and select «Permissions»
- Added the group «Event Log Readers», edited permissions and checked the boxes for Query Value, Enumerate Subkeys, Notify, Read Control
- Added «NT SERVICEOracleJobSchedulerXE» user to the «Manage auditing and security log» user assignments via Group Policy
However, I still get an error, although slightly different than the first error:
"Get-EventLog : Cannot open log Security on machine .. Windows has not provided an error code."
What do I need to do to give the «NT SERVICEOracleJobSchedulerXE» access to the security log?
- Буквально через пару дней после выхода патчей во вторник Microsoft предупреждает пользователей о KB5003637.
- После установки обновления приложения, которые обращаются к журналам событий на удаленных устройствах, не смогут подключиться.
- В большинстве случаев, пытаясь пройти этот процесс, пользователи сталкиваются с ошибкой 5: доступ запрещен.
- В этой статье содержится решение, как избавиться от этой неприятности и восстановить надлежащую функциональность.

Несмотря на то, что прошло всего несколько дней с тех пор, как Microsoft выпустила KB5003637 для Windows 10 как часть вторника исправлений в этом месяце, и компания уже выдал предупреждение об этом накопительном обновлении.
По-видимому, после установки этого конкретного обновления приложения, которые обращаются к журналам событий на удаленных устройствах, могут не подключиться.
KB5003637 приводит к тому, что приложения не работают должным образом
Корень этой досадной проблемы исходит из приложений, которые используют устаревшие API-интерфейсы регистрации событий.
Microsoft заявляет, что такое поведение является ожидаемым и вы можете получить сообщение об ошибке при попытке подключения, например:
- ошибка 5: доступ запрещен
- ошибка 1764: запрошенная операция не поддерживается.
- Система. InvalidOperationException, Microsoft. PowerShell. Команды. GetEventLogCommand
- Windows не предоставила код ошибки.
После установки KB5003637 или более поздних обновлений приложения, получающие доступ к журналам событий на удаленных устройствах, могут не подключаться. Эта проблема может возникнуть, если на локальном или удаленном компьютере еще не установлены обновления, выпущенные 8 июня 2021 года или позже. Затронутые приложения используют определенные устаревшие API-интерфейсы регистрации событий.
Как мне исправить эту проблему?
Из-за изменений в усилении безопасности, связанных с отслеживанием событий для Windows (ETW) для CVE-2021-31958, технический гигант в определенной степени ожидал, что это произойдет.
К счастью, есть простой способ оставить все это позади. Чтобы правильно справиться с этой ситуацией, необходимо убедиться, что и на локальных, и на удаленных устройствах установлен KB5003637.
Довольно просто, правда?
Сталкивались ли вы с такими проблемами после установки этого накопительного обновления на свой компьютер? Дайте нам знать в комментариях ниже.
