Обновление членства в группах AD без перезагрузки/перелогина

После добавления учетной записи компьютера или пользователя в группу безопасности Active Directory, новые полномочия доступа к ресурсам или новые GPO применяются не сразу. Чтобы обновить членство в группах и применить назначенные права/политики, нужно перезагрузить компьютер или перелогиниться в систему (для пользователя). Это связано с тем, что членство в группах AD обновляется при создании билета Kerberos, которое происходит при загрузке системы или при аутентификации пользователя во время входа в систему.

Если вы не можете немедленно выполнить перезагрузку компьютера или logoff пользователя, можно обновить членство учетной записи в группах AD помощью утилиты klist.exe . Эта утилита позволяет сбросить билеты Kerberos.

Примечание . Данная статья применима только для сетевых сервисов, поддерживающих Kerberos аутентификацию. Службы, работающие только с NTLM аутентификацией , по-прежнему требуют выполнения logoff + logon пользователя или перезагрузки Windows.

Вы можете вывести список групп безопасности домена, в которых состоит текущий пользователь с помощью команды:

whoami /groups

или GPresult

gpresult /r /scope user

Список групп, в которых состоит пользователь указан в разделе “ The user is a part of the following security groups ”.

Обновить билет Kerberos и группы компьютера без перезагрузки

Список групп безопасности, в которых состоит данный компьютер можно вывести командой:

gpresult /r /scope computer

The computer is a part of the following security groups

Вы можете вывести список кэшированных билетов Kerberos, полученных компьютером, а также дату их получения и следующего обновления:

klist.exe -li 0x3e7

Примечание . 0 x 3e 7 — специальный идентификатор, указывающий на сессию локального компьютера (Local System).

Теперь добавьте компьютер в новую группу безопасности AD (через оснастку ADUC или с помощью PowerShell команды: Add-AdGroupMember -Identity corpAntivirusExclusionPC -Members wks-msit012$ )

Чтобы очистить кэш тикетов Kerberos компьютера и обновить членство компьютера в группах AD, выполните команду (для Windows 7 и Windows Server 2008R2)

klist -lh 0 -li 0x3e7 purge

Или для Windows 11/10/8 и Windows Server 2012+

klist –li 0x3e7 purge

Deleting all tickets:_x000D_Ticket(s) purged!

Обновите настройки групповых политик командой gpupdate /force , после этого к компьютеру без перезагрузки будут применены все GPO, назначенные группе безопасности AD через Security Filtering.

Вы можете проверить время получения билетов Kerberos компьютера с помощью команды:

klist -li 0x3e7 tgt

Если в вашем домене настроены политики ограничения доступа к LSA(например, политика Debug Program , ограничивающая получение SeDebugPrivilege ), или другие политики безопасности, то в некоторых случаях при запуске команды klist -li 0:0x3e7 purge вы получили ошибку вида ( Error calling API LsaCallAuthenticationPackage ):
Current LogonId is 0:0x5d2ed1_x000D_Targeted LogonId is 0:0x3e7_x000D_*** You must run this tool while being elevated, and you must have TCB or be a local admin.***_x000D_ klist failed with 0xc0000001/-1073741823: {Operation Failed}_x000D_The requested operation was unsuccessful._x000D_

В этом случае нужно запустить командную строку от имени NT AuthoritySystem и в уже в этой консоли сбросить кэш билетов Kerberos:

psexec -s -i -d cmd.exe
– для запуска cmd.exe от имени System используется утилита psexec.exe.

klist –li 0x3e7 purge – сброс тикета компьютера

gpupdate /force – обновление настроек GPO

Такой способ обновления членства в группах компьютера – единственный рабочий вариант обновления настроек GPO на клиентах, который подключаются к вашей сети через VPN, а пользователь входит под кэшированными учетными данными .

Klist: сброс тикета Kerberos для пользователя

Например, вы добавили пользователя в группу безопасности с правами доступа к сетевой папке. Пользователь не сможет отрыть данный сетевой каталог без выполнения logoff+logon.

Если нужно обновить список назначенных групп безопасности для пользователя, нужно сбросить его кэш билетов Kerberos. Откройте в сессии пользователю непривилегированную командную строку (не нужно запускать cmd в режиме Run as administrator). Выполните команду:

klist purge

Current LogonId is 0:0x5d2e96_x000D_Deleting all tickets:_x000D_Ticket(s) purged!

Чтобы увидеть обновлённый список групп, нужно запустить новое окно командной строки с помощью runas (чтобы новый процесс был создан с новым токеном безопасности). Выведите список групп пользователя:

whoami /groups

На RDS сервере , на котором работает множество пользователей вы можете сбросить Kerberos тикеты сразу для всех сессий пользователей с помощью следующего однострочного PowerShell скрипта:

Get-WmiObject Win32_LogonSession | Where-Object {$_.AuthenticationPackage -ne 'NTLM'} | ForEach-Object {klist.exe purge -li ([Convert]::ToString($_.LogonId, 16))}

Чтобы пользователь смог подключиться к сетевой папке, доступ к которой ему предоставлен новой группой безопасности, нужно перезапустить оболочку прводника Windows с новым токеном.

  1. Откройте командную строку;
  2. Завершите процесс File Explorer пользователя: taskkill /f /im explorer.exe
  3. Запустите новый процесс explorer под вашей учетной записью. Можно использовать переменные окружения %USERDOMAIN%%USERNAME% или указать домен и имя пользователя вручную. Например, remontkakbuldogov: runas /user:remontkakbuldogov explorer.exe
  4. Укажите пароль своей учетной записи;
  5. После этого оболочка проводника перезапустится с новым токеном и вы сможете получить доступ к сетевой папке с правами новой группы безопасности.

В предыдущем способе для обновления групп безопасности нужно явно указывать пароль пользователя. Если это невозможно, можно попробовать обходное решение.

Допустим, пользователь был добавлен в группу AD для получения доступа к сетевому каталогу. Попробуйте обратиться к нему по имени или FQDN (!!! это важно) (к примеру, \msk-fs1.remontka.locdistr). Но не по IP адресу.

Для короткого имени ресурса ( NAME ) и полного имени ( FQDN ) используются разные cifs тикеты. Если вы ранее использовали FQDN, то после сброса тикетов на клиенте командой klist purge , вы сможете получить доступ по NAME (при первом обращении будет выдан новый тикет с новыми группами). Старый тикет для FQDN при этом все еще находится в процесс explorer и не будет сброшен до его перезапуска (как описано выше).

В этот момент для пользователя выдается новый тикет Kerberos. Вы можете проверить, что TGT тикет был обновлен:

klist tgt

(см. значение Cached TGT Start Time )

Сетевой каталог, к которому был предоставлен доступ через группу AD, должен открыться без перелогина пользователя.

Выполните команду whoami /groups чтобы убедиться, что пользователь получил новый TGT с обновленными группами безопасности не завершая сеанс .

Еще раз напомним, что данная возможность обновления групп безопасности будет работать только для сервисов, поддерживающих Kerberos. Для сервисов с NTLM аутентификацией нужна перезагрузка или ре-логин для обновления токена.

admin

Share
Published by
admin

Recent Posts

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

7 дней ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

3 недели ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

3 недели ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

3 недели ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

3 недели ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

3 недели ago