Event ID 4647: Выход из системы инициирован пользователем (Logoff)
Архитектура ручного выхода и симптомы
Событие 4647 логируется в журнале Security, когда пользователь явно нажимает кнопку 'Выйти' (Start -> Logoff) или выполняет консольную команду logoff. В отличие от системного события >4634 (которое фиксирует техническую смерть сессии), 4647 фиксирует НАМЕРЕНИЕ человека (интерактивного пользователя) завершить работу.
Отличия 4647 от 4634 и 4779
| Событие (Event ID) | Суть действия (Что произошло) |
|---|---|
| 4647 (User Initiated Logoff) | Пользователь нажал 'Выйти'. Все его программы закрываются, сессия уничтожается. |
| 4634 (Logoff) | Техническое уничтожение токена доступа. Генерируется всегда (после 4647 или по таймауту). |
| 4779 (Session Disconnected) | Пользователь нажал 'Крестик' в окне RDP или заблокировал ПК (Win+L). Программы продолжают работать в RAM. |
Пошаговое дерево решений (Мониторинг дисциплины)
Сценарий 1: Контроль завершения рабочего дня
Событие 4647 — самый надежный (юридически значимый) маркер окончания рабочего дня сотрудника на локальном ПК или терминальном сервере RDS.
Скрипт поиска ручных выходов из системы:# Отслеживание ручных выходов сотрудников (Start -> Sign Out)
Get-WinEvent -FilterHashtable @{LogName="Security"; ID=4647; StartTime=(Get-Date).AddDays(-1)} |
Select-Object TimeCreated, @{N="User";E={$_.Properties[1].Value}} | Format-Table -AutoSizeСценарий 2: Защита от "брошенных" сессий
Если пользователи не генерируют события 4647, значит они уходят домой, оставляя сессии открытыми (или заблокированными). Незакрытые сеансы (Disconnected) на сервере RDS ведут к утечкам данных (если сессию перехватят) и "сжигают" оперативную память.
Настройка принудительного Logoff (GPO):- Откройте
gpedit.mscна сервере. - Перейдите:
Конфигурация компьютера -> Адм. шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов -> Ограничение времени сеансов. - Включите Задать ограничение времени для отключенных сеансов (Set time limit for disconnected sessions).
- Установите значение, например, 2 часа. (Через 2 часа ядро убьет сессию, сгенерировав 4634, но не 4647).
Типовые ошибки администраторов
- Попытка искать 4647 для сетевых шар: Событие 4647 генерируется ТОЛЬКО для интерактивного (Logon Type 2) или RDP-входа (Logon Type 10). Для сетевых папок (Type 3) этого события в природе не существует.
Хаос в управлении удаленным доступом ведет к кражам баз данных. Возьмем ИТ-инфраструктуру на абонентское обслуживание: настроим GPO на авто-выход при простое, внедрим СКУД (Смарт-карты) и жестко защитим коммерческую информацию.
Частые вопросы (FAQ)
Генерируется ли 4647 при выключении ПК (Shut down)?
Да. Если пользователь нажимает 'Завершение работы' (Shut down) или 'Перезагрузка' (Restart), подсистема Winlogon сначала инициирует корректный Logoff пользователя, создавая событие 4647, а затем уже выключает ядро (событие 1074).
Можно ли скриптом вызвать 4647?
Да, выполнение команды 'logoff.exe' (или 'shutdown /l') в командной строке от имени пользователя инициирует точно такое же интерактивное завершение с генерацией события 4647.