Короткий ответ

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
Разово забыли одногодыра процессаэтот материал
Нет квартальной сверкиаудитаудит прав

Возможные причины

  1. HR не создаёт заявку IT в тот же день.
  2. Чеклист есть, но только AD — VPN и облако забыты.
  3. Общая учётка sales вместо именной.
  4. Подрядчик не в HR-контуре.
  5. Ключи на Linux добавляли вручную.
  6. Редко: злонамеренно оставленный 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 (обязательный)

  1. Заявка HR с датой/временем отзыва (не «примерно с понедельника»).
  2. Disable AD + reset password + revoke Kerberos (revocation через disable обычно достаточно; при компрометации — смотрите incident-процедуры).
  3. Снять группы, особенно привилегированные. Членство зафиксировать в заявке до снятия (для восстановления почты/доступа по суду — редкость, но список нужен).
  4. VPN: группа, сертификат, IPSec peer если именной.
  5. Почта: блок входа, снять ActiveSync, решить shared vs litigation hold по политике Contoso.
  6. Файловые шары: не обязательно переносить ACL с персоны в день 0, но отключить учётку уже закрывает доступ.
  7. Панели вне AD из реестра.
  8. Vault: убрать из группы менеджера паролей; если знал мастер Excel — ротация.
  9. Физика: пропуска, ключи стойки, токены.
  10. Оборудование: ноутбук, 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.