2

Есть два контроллера домена. Основной работает на Windows Server 2008 R2, а дополнительный - на Windows Server 2012.

Когда я создаю объект групповой политики на основном контроллере, он сразу же копируется на дополнительный контроллер домена со всеми файлами и сценариями.

В объекте групповой политики в разделе «Конфигурация пользователя» я устанавливаю системные переменные среды, а также создаю папку на рабочем столе и ярлыки в ней.

Фильтрация безопасности области объекта групповой политики содержит группу пользователей, которая находится в папке «Пользователи» контроллера домена. Члены, входящие в него, расположены в разных организационных единицах.

http://i.stack.imgur.com/MBZez.png

http://i.stack.imgur.com/QTIIP.png

Если я вошел в систему на компьютерах под управлением Windows XP с пакетом обновления 3 (SP3), политика будет выполнена немедленно или после запуска gpupdate /force . На компьютерах с операционной системой Windows 7 и выше (Windows 8.1, Windows 10) - политика не работает и не распространяется на пользователя.

В gpresult /scope user /z > c:\gpo_dump.log я вижу, что пользователь является членом нужной группы, но не нашел GPO в разделе примененных объектов групповой политики и в разделе непринятых объектов групповой политики. Зачем? Выполните gpupdate /force и несколько раз перезагрузка не поможет.

1 ответ1

3

Судя по дате вашего вопроса, я думаю, что знаю ответ на вашу проблему.

14/6/2016 вышло обновление MS Security, которое изменило поведение объектов групповой политики в соответствии с настройками пользователя! Много

До сих пор все объекты групповой политики с любыми пользовательскими настройками применялись в контексте безопасности пользователя. Таким образом, политики применялись до тех пор, пока пользователь был включен в список фильтрации безопасности (если он у вас есть).

Но с поведением после обновления MS они применяются в контексте компьютера. Таким образом, если у вас есть пользователь или группа в фильтрации безопасности, недостаточно применения пользовательских настроек в политике. Вам также необходимо иметь разрешение на чтение для компьютера, с которого пользователь обращается к объекту групповой политики. Вам не нужно указывать это в фильтрации безопасности, но вы должны добавить хотя бы разрешение READ (на вкладке делегирования объекта групповой политики) на компьютер или группу, членом которой является этот компьютер.

Таким образом, в основном, если пользователь A подключается с компьютера B, в списке фильтрации безопасности будет указан пользователь A, а компьютеру B необходимо иметь разрешение READ для объекта групповой политики (а не разрешение на применение политики). Посмотрите эту ссылку Deploy MS16-072, которая объясняет все, а также предлагает сценарий для восстановления уязвимых объектов групповой политики. MS предлагает добавить разрешение READ для аутентифицированных пользователей ко всем объектам групповой политики (для этого и предназначен скрипт), но я думаю, что доменные компьютеры немного безопаснее.

Это беспокоило меня уже несколько недель. Я не мог понять, почему некоторые объекты групповой политики вдруг перестали работать. Это все из-за этого. Я был бы признателен, если бы о столь значительных изменениях было больше гласности, потому что я работал в совершенно небезопасной среде в течение очень долгого времени, потому что не применялись не ограничивающие объекты групповой политики. Я знаю, что должен, но я действительно не читаю обо всех обновлениях MS, которые я применяю. Надеюсь, это поможет вашему делу.

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

    # Copyright (C) Microsoft Corporation. All rights reserved.

$osver = [System.Environment]::OSVersion.Version
$win7 = New-Object System.Version 6, 1, 7601, 0

if($osver -lt $win7)
{
    Write-Error "OS Version is not compatible for this script. Please run on Windows 7 or above"
    return
}

Try
{
    Import-Module GroupPolicy
}
Catch
{
    Write-Error "GP Management tools may not be installed on this machine. Script cannot run"
    return
}

$arrgpo = New-Object System.Collections.ArrayList

foreach ($loopGPO in Get-GPO -All)
{
    if ($loopGPO.User.Enabled)
    {
        $AuthPermissionsExists = Get-GPPermissions -Guid $loopGPO.Id -All | Select-Object -ExpandProperty Trustee | ? {$_.Name -eq "Authenticated Users"}
        If (!$AuthPermissionsExists)
        {
            $arrgpo.Add($loopGPO) | Out-Null
        }
    }
}

if($arrgpo.Count -eq 0)
{
    echo "All Group Policy Objects grant access to 'Authenticated Users'"
    return
}
else
{
    Write-Warning  "The following Group Policy Objects do not grant any permissions to the 'Authenticated Users' group:"
    foreach ($loopGPO in $arrgpo)
    {
        write-host "'$($loopgpo.DisplayName)'"
    }
}

$title = "Adjust GPO Permissions"
$message = "The Group Policy Objects (GPOs) listed above do not have the Authenticated Users group added with any permissions. Group policies may fail to apply if the computer attempting to list the GPOs required to download does not have Read Permissions. Would you like to adjust the GPO permissions by adding Authenticated Users group Read permissions?"

$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", `
    "Adds Authenticated Users group to all user GPOs which don't have 'Read' permissions"
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", `
    "No Action will be taken. Some Group Policies may fail to apply"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)  
$appliedgroup = $null
switch ($result)
{
    0 {$appliedgroup = "Authenticated Users"}
    1 {$appliedgroup = $null}
}
If($appliedgroup)
{
    foreach($loopgpo in $arrgpo)
    {
        write-host "Adding 'Read' permissions for '$appliedgroup' to the GPO '$($loopgpo.DisplayName)'."
        Set-GPPermissions -Guid $loopgpo.Id -TargetName $appliedgroup -TargetType group -PermissionLevel GpoRead | Out-Null
    }
}

Если вы предпочитаете установить разрешение на чтение для доменных компьютеров, а не для проверки подлинности. Пользователи просто меняют этот 0 {$appliedgroup = "Authenticated Users"} на этот 0 {$appliedgroup = "Domain Computers"}

Добавление для уточнения:

В зависимости от того, какой компьютер, пользователь или группа, к которой вы хотите применить параметры GPO, должен быть указан в фильтре безопасности. Включение в список фильтрации пользователей компьютера или группы фактически означает, что вы предоставляете компьютеру, пользователю или группе два разрешения для объекта групповой политики: одно разрешение - ЧИТАТЬ, а другое - ПРИМЕНИТЬ ПОЛИТИКУ ГРУППЫ. На вкладке делегирования можно более подробно назначить разрешения для объекта групповой политики, но вы можете проверить, что если вы добавите компьютер, пользователя или группу на вкладку фильтрации безопасности, они появятся на вкладке делегирования с этими двумя разрешениями READ и APPLY.

Добавляя компьютер, пользователя или группу на вкладку делегирования и давая ей разрешение на ЧТЕНИЕ, вы НЕ применяете к ней объект групповой политики. Вы просто позволяете ему читать объект групповой политики.

Итак, подведем итоги -

  • для применения настроек GPO COMPUTER вам необходимо, чтобы компьютер (или группа, в которой он находится) был включен в список фильтров безопасности.
  • Для применения настроек пользователя GPO необходимо, чтобы пользователь (или группа, в которой он находится) был указан в списке фильтрации безопасности, и вам необходимо предоставить компьютеру (или группе, в которой он находится) доступ к объекту GPO. ПРОЧИТАЙТЕ разрешение на объект групповой политики.

Я надеюсь, что это проясняет это для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .