Обновление членства в группах 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

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago