Когда доменный пользователь входит в Windows, по умолчанию его учетные данные (Cached Credentials: имя пользователя и хэш пароля) сохраняются на локальном компьютере. Благодаря этому, пользователь сможет войти на локальный компьютер, даже если контроллеры домена AD недоступны, выключены или на компьютере отключен сетевой кабель. Функционал кэширования учетных данных доменных аккаунтов удобен для пользователей ноутбуков, которые могут получить доступ к своим локальным данным на компьютере, когда нет доступа к корпоративной сети.
Сохраненный кэш доменной учетной записи в Windows
Вход на компьютер под кэшированными данными для пользователя доступен, если он ранее хотя бы один раз авторизовался на этом компьютере, и пароль в домене не был сменен с момента входа. Пароль пользователя в cashed credentials никогда не истекает. Если доменная политика паролей вынудит пользователя изменить пароль, сохраненный пароль пользователя в локальном кэше компьютера не изменится, пока пользователь не войдет на компьютер под новым паролем. Т.е. если пароль пользователя в AD был изменен после последнего входа на компьютер, и компьютер находился все время в офлайн режиме без доступа в сеть, то пользователь сможет войти на этот компьютер под старым паролем.
Если домен Active Directory недоступен, Windows проверяет, что введенные имя пользователя и пароль соответствуют сохраненному локальному хэшу и разрешает локальный вход на компьютер.
Сохраненные пароли хранятся в ветке реестра HKEY_LOCAL_MACHINE\Security\Cache (файл %systemroot%\System32\config\SECURITY). Каждый сохранённый хэш содержится в Reg_Binary параметре NL$x (где x – индекс кэшированных данных). По умолчанию даже у администратора нет прав на просмотр содержимого этой ветки реестра, но при желании их можно легко получить.

Если в локальном кэше для пользователя нет сохранённых учетных данных, то при входе на офлайн компьютер, появится сообщение:
There are currently no logon servers available to service the logon request.
Отсутствуют серверы, которые могли бы обработать запрос на вход в сеть.
Настройка Cached Credentials с помощью групповых политик
С помощью параметров групповых политик вы можете задать количество уникальных пользователей, чьи учетные данные могут быть сохранены в локальный кэш на компьютерах домена. Чтобы данные попали в кэш, пользователь должен хотя бы один раз залогиниться на компьютер.
По-умолчанию в Windows 10 /Windows Server 2016 сохраняются учетные данные для 10 пользователей. Чтобы изменить это количество, используется параметр GPO Interactive logon: Number of previous logons to cache (in case domain controller is not available) (Интерактивный вход в систему: количество предыдущих подключений к кэшу в случае отсутствия доступа к контроллеру домена), который находится в разделе Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options. Можно задать значение от 0 до 50.
При входе под сохраненными данными, пользователь не видит, что контроллер домена не доступен. С помощью GPO можно вывести уведомление о входе под кэшированными данными. Для этого нужно включить политику Report when logon server was not available during user logon (Сообщать, когда сервер входа недоступен при входе пользователя) в разделе Compute configuration -> Policies -> Administrative templates -> Windows Components -> Windows Logon Options.
В этом случае при входе пользователя в трее будет появляться уведомление:
Не удается подключиться к серверу входа (контроллеру домена). Вход выполнен с помощью ранее сохраненных сведений об учетной записи.
A domain controller for your domain could not be contacted. You have been logged on using cached account information. Changes to your profile since you last logged on might not be available.
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/Current Version/Winlogon
- ValueName: ReportControllerMissing
- Data Type: REG_SZ
- Values: TRUE
Безопасность кэшированных учетных данных в Windows
Локальное кэширование учетных данных несет ряд рисков безопасности. Злоумышленник, получив физический доступ к компьютеру/ноутбуку с кэшированными данными, может с помощью брутфорса расшифровать хэш пароля (тут все зависит от сложности и длины пароля, для сложных паролей время подбора огромное). Поэтому не рекомендуется использовать кеширование для учетных записей с правами локального администратора (или, тем более, доменного администратора).
Для уменьшения рисков безопасности, можно отключить кэширование учетных записей на офисных компьютерах и компьютерах администраторов. Для мобильных устройств желательно уменьшить количество кэшируемых аккаунтов до 1. Т.е. даже если администратор заходил на компьютер и его учетные данные попали в кэш, при входе пользователя-владельца устройства, хэш пароля администратора будет удален.
Для доменов с функциональным уровнем Windows Server 2012 R2 или выше можно добавить учетные записи администраторов домена в группу Protected Users. Для таких пользователей запрещено локальное сохранение кэшированных данных для входа.
Можно создать в домене отдельные политики по использованию кэшированных учетных данных для разных устройств и категорий пользователей (например, с помощью GPO Security filters, WMI фильтров, или распространению настроек параметра реестра CashedLogonsCount через GPP Item level targeting).
Для мобильных пользователей –
CashedLogonsCount = 1
Для обычных компьютеров –
CashedLogonsCount = 0
Такие политики снизят вероятность получения хэша привелигированных пользователей с персональных компьютеров.
Спасибо за Ваши статьи.
Очень подробно расписаны проблемы и варианты их решения.
Поддерживаю комментарий выше. Спасибо за статьи! Очень помогают мне как начинающему.
Ок. Мерси, очень интересно! Но ткните пальцем, плиз, где задается срок хранения кэшированного пароля ? У нас часто бывают ситуации, комп долго был в отключке или проблемы с сетью и войти нет возможности (локальные админы отключены, кэш «обнулился»). Где задать, чтобы кеш паролей доменных учеток админов не обнулялся ?
Пароль в кэше хранится бессрочно пока не будет перезатерт следующим.
Спасибо! Ну, то есть, я правильно понял — срок хранения пароля в кеше нигде не может быть установлен (политики, реестр) на какое-то заданное значение.
Верно!
Есть варианты кроме VPN дать пользователю синхронизировать пароль на вход?
А то уже поменял например через OWA а на вход старый и оутлук иногда брутфорсит сервер старым паролем.
Ответ на вопрос содержится в вопросе. Синхронизация происходит только при подключении к доменной сети, например через VPN) Мы решили вопрос через информирование юзеров об особенностях работы на удаленке и, в т.ч. как менять пароль, чтобы не получить блокировку.
Может Azure AD? ИЛИ RODC на хостинге или в том же Azure.
Azure AD — не подойдет, он для плоской синхронизации данных в тенант Azure.
RODC наружу, не представляю реализацию. .
Присмотритесь к RAS, поддерживает постоянный VPN. Даже до входа пользователя в систему, можно управть через GPO. Ссылка на конфигурацию и обзор технологии
https://docs.microsoft.com/en-us/windows-server/remote/remote-access/vpn/always-on-vpn/deploy/always-on-vpn-deploy-deployment
RAS VPN от Microsoft
Статья рассчитана на новых администраторов.
Насколько я помню эта фишка была вроде в 2003 винде.
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc755473(v=ws.10)
И она работает только локально, а вот по рдп не зайдешь или есть способ?
Гениальное предложение хранить 1 пароль! И вот:
— что-то глюкануло и машина не входит в домен (бывало и не раз);
— или есть у тебя образ машины годовалой давности, а домена уже нет;
— или текущая [ОС\винчестер] [сломалась\заглючила\вирусы\хакеры] и есть у тебя образ машины месячной давности, и домен есть, но войти в него невозможно — за месяц утеряны доверительные отношения;
И что делать? Для того, чтобы дать команды — надо обладать правами админа на компе. Войти админом на компе не получится — машина не видит домен или домена вообще нет. Переустанавливать всё на компе? А если компов несколько?
Надо хорошо подумать о последствиях, прежде чем выбирать такой путь.
Администратору всегда приходится выбирать между удобством и безопасностью. Эти пункты обчно противоречат друг другу. Хранить хэш пароля учетки с правами администратора на всек компьютерах домена не слишком-то безопасно.
И не пойму, в чем проблема войти под локальным админом? Пароль локального администратора можно безопасно хранить в AD через тот же LAPS (https://winitpro.ru/index.php/2015/05/07/ms-local-administrator-password-solution-upravlenie-parolyami-lokalnyx-administratorov-v-domene/)
Либо всегда есть вариант со сбросом пароля лок админа, не думаю что описанные вами случаи происходят ежедневно
Почему не написали, что редактор реестра нужно запустить от имени системы, чтобы увидеть cache.
Скачать утилиту psexec и запустить редактор реестра: psexec.exe -i -d -s c:\windows\regedit.exe
Только после этого раскроется ветка — SECURITY.