Короткий ответ
Offboarding — чеклист в день увольнения (или в момент отзыва допуска), а не «когда дойдут руки». Минимум: отключить учётку AD, сбросить пароль, отозвать сессии, убрать из привилегированных групп, закрыть VPN/MFA, почту (по политике: блок или конвертация в shared), ключи SSH/WinRM, токены API, физический доступ, сертификаты. Владелец исполнения — Иван Петров или дежурный по заявке HR.
Не удаляйте объект AD в первую минуту, если нужна почта/файлы: Disable + снятие групп обычно безопаснее немедленного delete.
Симптомы и как отличить
Типичная картина:
- HR сказал «Петров уволен в пятницу», VPN-сертификат жив в понедельник;
Get-ADUserпоказываетEnabled $true;- ключ в
authorized_keysнаUBNT01; - в Teams/почте статусы «был сегодня».
Отличия:
| Что видно | Не offboarding | Куда |
|---|---|---|
| Нет списка админов вообще | инвентарь прав | реестр доступов |
| Пароли в Excel у уволенного | секреты | Excel |
| Разово забыли одного | дыра процесса | этот материал |
| Нет квартальной сверки | аудит | аудит прав |
Возможные причины
- HR не создаёт заявку IT в тот же день.
- Чеклист есть, но только AD — VPN и облако забыты.
- Общая учётка
salesвместо именной. - Подрядчик не в HR-контуре.
- Ключи на Linux добавляли вручную.
- Редко: злонамеренно оставленный backdoor-аккаунт.
Диагностика
Для конкретного человека (пример j.doe, не Иван Петров как owner процесса):
1. AD и группы
Get-ADUser -Identity 'j.doe' -Properties Enabled, LastLogonDate, MemberOf, EmailAddress |
Select-Object SamAccountName, Enabled, LastLogonDate, EmailAddress
Get-ADPrincipalGroupMembership -Identity 'j.doe' |
Select-Object NameПривилегии:
Get-ADGroupMember -Identity 'Domain Admins' -Recursive |
Where-Object { $_.SamAccountName -eq 'j.doe' }2. VPN и сертификаты
По вашей реализации: отозвать сертификат в CA, убрать из группы VPN-Users, отключить учётку RADIUS. Проверьте журнал VPN на вход после даты увольнения — это уже инцидент, не «процесс».
3. Linux-ключи и sudo
По инвентарю критичных узлов:
sudo grep -R 'j.doe\|jdoe@' /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null
getent passwd j.doe
sudo userdel -r j.doe # только после подтверждения, не вслепую4. Почта и облако
Проверьте лицензию, MFA-устройства, правила пересылки, mobile devices. Неизвестный forward на личную почту — отдельный пункт расследования.
Решение
Чеклист дня 0 (обязательный)
- Заявка HR с датой/временем отзыва (не «примерно с понедельника»).
- Disable AD + reset password + revoke Kerberos (
revocationчерез disable обычно достаточно; при компрометации — смотрите incident-процедуры). - Снять группы, особенно привилегированные. Членство зафиксировать в заявке до снятия (для восстановления почты/доступа по суду — редкость, но список нужен).
- VPN: группа, сертификат, IPSec peer если именной.
- Почта: блок входа, снять ActiveSync, решить shared vs litigation hold по политике Contoso.
- Файловые шары: не обязательно переносить ACL с персоны в день 0, но отключить учётку уже закрывает доступ.
- Панели вне AD из реестра.
- Vault: убрать из группы менеджера паролей; если знал мастер Excel — ротация.
- Физика: пропуска, ключи стойки, токены.
- Оборудование: ноутбук, 2FA-ключ — акт возврата.
Чеклист дня 7
- Лицензии ПО на имя уволенного.
- Делегирование ящика преемнику.
- Переназначение владельца сервисов, если он был owner.
- Проверка логов VPN/AD на входы после disable (не должно быть успешных).
Сервисные и общие учётки
Если человек знал пароль svc-backup или Wi‑Fi PSK — ротация в том же изменении, не «в следующем квартале».
Disable-ADAccount -Identity 'j.doe'
Set-ADAccountPassword -Identity 'j.doe' -Reset -NewPassword (Read-Host -AsSecureString 'Temp')
# Disable + смена пароля закрывают парольный вход. Сессии RDP снимите точечно через quser/logoff.На Windows Server 2022 штатно: Disable-ADAccount и смена пароля. Принудительный logoff сессий RDP на серверах — по необходимости:
quser /server:FILE01
# logoff <id> /server:FILE01 — только своей сессии уволенного, не всехКак проверить, что проблема устранена
Enabled= False, LastLogon не растёт.- Нет в
Domain Admins/VPN-Users/ sudo. - Вход VPN тестовым «старым» клиентом (если ещё есть профиль) получает отказ.
- Почта: OWA отклоняет пароль.
- Заявка закрыта с приложенным чеклистом, не устным «вроде отключил».
Раз в месяц: пользователи Enabled с LastLogonDate старше 45 дней vs список HR — ловите тех, кого «забыли», не только уволенных.
Если не помогло
- Учётка была не в AD, а Microsoft 365 native: отдельный шаг в чеклисте облака.
- Почта на личном Google/Yandex директора — вне IT; эскалируйте письменно, не делайте вид, что AD всё закрыл.
- Общий пароль Wi‑Fi: смена PSK больнее, чем кажется — планируйте окно, гостевая сеть отдельно.
- Подрядчик без HR: договор и дата окончания в реестре доступов, иначе offboarding не стартует.
Профилактика
- Именные учётки, запрет общих
admin. - HR → IT заявка как обязательный шаг увольнения в регламенте.
- Квартальный аудит прав.
- Ключи SSH только через централизованный hop + инвентарь ключей.
FAQ
Удалять пользователя из AD сразу?
Обычно нет: сломаете restore почты, SID на ACL, расследование. Disable + перемещение в OU Disabled. Delete — по политике хранения (часто 30–90 дней).
Сотрудник уходит в отпуск с последующим увольнением?
Дата отзыва допуска = дата, которую дал HR/ИБ, не «официальный приказ через месяц», если риск высок. Фиксируйте в заявке.
Нужно ли менять пароль Domain Admin, если уволенный был в DA?
Да, и другие известные ему break-glass. Считайте компрометацию привилегий, не «он честный».
Что с переадресацией почты на личный ящик?
По умолчанию запретить. Если бизнес настаивает — отдельное согласование, срок, аудит.
Как отзывать доступ в 03:00 без HR?
Дежурный по письменному запросу руководителя + ИБ. Постфактум заявка. Не ждать утра, если это P1 компрометации.
Linux-учётка с тем же логином, что AD, но локальная
Ищите оба контура. getent passwd на каждом сервере из CMDB, не только Get-ADUser.