Event ID 4658: The handle to an object was closed в Windows
Что означает Event ID 4658 простыми словами?
Событие Event ID 4658 («The handle to an object was closed») сообщает о том, что программа или процесс завершила работу с ранее открытым объектом (файлом на диске, ключом реестра, мьютексом или системным процессом) и закрыла его дескриптор (Handle ID).
Как работает цепочка аудита дескрипторов:
- Event ID 4656: Процесс запросил открытие файла (запрос дескриптора).
- Event ID 4663: Процесс выполнил действие (прочитал или перезаписал файл).
- Event ID 4658: Процесс закрыл дескриптор (освободил файл).
| Поле события | Значение |
|---|---|
| Handle ID | Шестнадцатеричный идентификатор дескриптора (например, 0x1a4) |
| Process ID | PID программы, которая закрыла объект |
| Категория аудита | Handle Manipulation (Манипуляция дескрипторами) |
Как анализировать событие 4658 и почему его часто отключают
Само по себе событие 4658 не содержит имени закрытого файла — в нем есть только Handle ID. Чтобы узнать имя файла, системному администратору нужно найти предшествующее событие с тем же Handle ID.
- Сопоставление Handle ID для поиска имени файла:
# Находим событие закрытия дескриптора с Handle ID 0x14c: $Handle = "0x14c" Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4656,4663,4658} | Where-Object {$_.Properties[0].Value -eq $Handle -or $_.Message -like "*$Handle*"} - Оценка влияния на производительность сервера:
Категория Handle Manipulation является одной из самых «тяжелых» в Windows. Включение аудита закрытия дескрипторов может генерировать сотни тысяч записей в минуту на загруженных файловых серверах.
- Отключение аудита закрытия дескрипторов для снижения нагрузки:
auditpol /set /subcategory:"Handle Manipulation" /success:disable /failure:disable
Рекомендация: Включайте аудит Handle Manipulation только временно при точечной отладке утечек файловых дескрипторов в разрабатываемом ПО или при расследовании блокировок файлов.
Частые вопросы (FAQ)
Почему в событии 4658 нет пути к закрытому файлу?
В целях оптимизации ядро Windows указывает путь к файлу только в момент его открытия (Event 4656), а при закрытии оперирует исключительно числовым идентификатором Handle ID.
Что такое дескриптор (Handle) простыми словами?
Дескриптор — это временный числовой указатель, который Windows выдает программе, чтобы та могла читать или записывать открытый файл.
Безопасно ли отключить событие 4658 в корпоративной сети?
Да, подавляющее большинство рекомендаций по безопасности (включая стандарты CIS Benchmarks и Microsoft Security Baseline) рекомендуют отключать аудит закрытия дескрипторов.
Как сопоставить время удержания файла процессом?
Вычислите разницу во времени между Event ID 4656 (открытие) и Event ID 4658 (закрытие) для одного и того же значения Handle ID.