Коротко — какие у вас варианты и что я рекомендую в первую очередь, потом — более подробно про каждый инструмент и небольшой PowerShell‑скрипт для быстрой и наглядной выгрузки событий доступа к файлам.
Рекомендации (по «легкости/компактности» → «полноте»):
- Если нужен «компактный и быстрый» просмотр на месте: FullEventLogView (NirSoft) или Microsoft Log Parser 2.2 + Log Parser Studio. Небольшие, простые, быстрые.
- Если хотите OpenSource и централизованно/с дашбордами: Winlogbeat → Elasticsearch + Kibana или Graylog или Wazuh (Wazuh = OSSEC + ELK, уже имеет правила для Security).
- Для ad‑hoc/скриптового анализа: PowerShell (Get‑WinEvent / .ToXml()) — очень гибко, не требует сторонних сервисов.
Что искать в журналах (важные EventID для файлового аудита)
- 4663 — An attempt was made to access an object (основное «чтение/запись/удаление»)
- 4656 — A handle to an object was requested (запрос дескриптора)
- 4660 — An object was deleted
- 4670 — Permissions on an object were changed
(также полезны 4624/4634 для входов/выходов и 4688 для запуска процессов)
Короткие обзоры инструментов
1) FullEventLogView (NirSoft)
- Что: компактная портативная утилита, показывает все события, экспорт в CSV/HTML, фильтры.
- Плюсы: легкая, не требует установки, удобно фильтровать/экспортировать.
- Минусы: не OpenSource; нет продвинутых дашбордов.
2) Microsoft Log Parser 2.2 + Log Parser Studio
- Что: мощный SQL‑подобный парсер журналов (включая EventLog), Log Parser Studio — GUI поверх Log Parser.
- Плюсы: гибкие запросы, можно быстро писать отчёты, бесплатен.
- Минусы: старый интерфейс, требует привыкнуть к синтаксису.
3) PowerShell (Get‑WinEvent / XML парсинг)
- Что: встроенные средства Windows для выборки и парсинга Security логов, можно формировать CSV/HTML/Excel.
- Плюсы: не требует сторонних программ, можно быстро получить именно те поля, которые нужны, и автоматизировать.
- Минусы: придётся написать/подогнать скрипт.
Пример PowerShell‑скрипта, который выбирает события 4663 и выводит удобную таблицу (включая пользователя, действие, путь, процесс) и экспортирует в CSV:
```powershell
# Параметры
$logName = 'Security'
$eventId = 4663
$start = (Get-Date).AddDays(-7) # последние 7 дней
$outCsv = "C:\Temp\FileAccess_4663.csv"
# Получаем события
$events = Get-WinEvent -FilterHashtable @{LogName=$logName; Id=$eventId; StartTime=$start} -ErrorAction SilentlyContinue
$result = foreach ($ev in $events) {
$xml = [xml]$ev.ToXml()
$data = @{}
foreach ($d in $xml.Event.EventData.Data) {
$name = $d.Name
$val = $d.'#text'
$data[$name] = $val
}
[PSCustomObject]@{
TimeCreated = $ev.TimeCreated
SubjectUser = ($data.SubjectUserName + '\' + $data.SubjectDomainName).Trim('\')
ObjectName = $data.ObjectName
ObjectType = $data.ObjectType
AccessList = $data.AccessList
AccessMask = $data.AccessMask
ProcessName = $data.ProcessName
HandleId = $data.HandleId
IpAddress = $data.WorkstationName
EventRecordId = $ev.RecordId
}
}
# Можно посмотреть в окно
$result | Sort-Object TimeCreated -Descending | Out-GridView
# Или экспорт в CSV
$result | Sort-Object TimeCreated -Descending | Export-Csv -NoTypeInformation -Path $outCsv
Write-Output "Exported $($result.Count) events to $outCsv"
```
Пояснения:
- В поле AccessList обычно есть читаемые операции (например ReadData, WriteData, Delete и т.д.). Если AccessList пуст, смотрите AccessMask (hex) — его можно декодировать, но чаще полезен AccessList.
- Для удалённого сервера можно указать -ComputerName у Get‑EventLog (устаревший) или использовать WinRM/Invoke‑Command и запускать скрипт удалённо.
4) Winlogbeat → Elasticsearch/Kibana (или Graylog, Wazuh)
- Что: агент (Winlogbeat) пересылает Security журнал в ELK/Graylog/Wazuh; в Kibana/Graylog вы делаете дашборды и быстрый поиск.
- Плюсы: масштабируемо, удобные дашборды, кореляция, поиск.
- Минусы: требует установки ELK/Graylog/Wazuh — «тяжелее», но это стандартный OpenSource путь.
5) Wazuh
- Что: OpenSource SIEM/IDS, умеет собирать Windows события, есть правила для аудита файлов/прав.
- Плюсы: готовые правила, алерты, Kibana‑дашборды.
- Минусы: развёртывание и поддержка.
Практические советы
- Фильтруйте по ObjectName (путь к расшаренной папке), чтобы снизить шум.
- Включите в аудит «Advanced Object Access» (Success/Failure) и проверьте, какие именно категории аудита включены (File System).
- Если много событий — лучше централизовать (Winlogbeat/Wazuh/Graylog) и строить визуализации/алерты.
- Хранение и ротация: Security лог быстро растёт при детальном файловом аудите — настройте ротацию/пересылку и хранение.
Если хотите, могу:
- Подготовить готовый PowerShell‑скрипт с распознаванием типов доступа (map AccessMask → Read/Write/Delete) и фильтром по пути/пользователю.
- Подсказать минимальное развертывание Winlogbeat+Elasticsearch+Kibana для одной‑двух серверных машин и пример dashboard для событий 4663.
Скажите, какой вариант вам ближе — «быстро и локально» (PowerShell / FullEventLogView / Log Parser) или «централизованно с дашбордами» (Winlogbeat + ELK / Wazuh / Graylog) — и я пришлю конкретное пошаговое решение.