GPO не применяются; причина: недоступно, пусто или отключено; Server 2012 R2 и Windows 10

16

У меня есть домен Windows Server 2012 R2.

Вчера перестал работать сетевой диск компьютера (под управлением Windows 10 Pro).

После дальнейшего исследования ( gpresult /h) выясняется, что ВСЕ объекты групповой политики отказывают по причине Inaccessible, Empty, or Disabled.

Я подтвердил, что все объекты групповой политики все еще существуют и включены на обоих (избыточных и локальных) контроллерах домена. Кроме того, есть 20 других машин в том же домене и локальной сети без каких-либо проблем.

Тем не менее, есть еще один компьютер, который я протестировал, и с той же проблемой! Значит ли это, что проблема с серверами?

gpresult /rсообщает, что один клиент получает объекты групповой политики от локального DC1, а другой - от DC2. Так что это не проблема, связанная с конкретным DC.

gpupdate /force ничего не исправил (хотя утверждал, что политики были применены).

Я попытался удалить записи реестра для локальных политик (следуя этому руководству /superuser/379908/how-to-clear-or-remove-domain-applied-group-policy-settings-after-leaving-the -до ) и перезагрузка - та же проблема.

Я нашел эту страницу поддержки от Microsoft ( https://support.microsoft.com/en-us/kb/2976965 ), но она утверждает, что она относится только к Windows 7 или более ранним клиентам.

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

Даниил
источник
Благодарю. Ваш комментарий дал ключ к решению. См. ниже.
Даниэль

Ответы:

19

Проверьте ссылку патча joeqwerty тоже .

Есть важная деталь:

Известные вопросы

MS16-072 изменяет контекст безопасности, с которым извлекаются групповые политики пользователей. Это измененное поведение защищает компьютеры клиентов от уязвимости в системе безопасности. Перед установкой MS16-072 групповые политики пользователей были получены с использованием контекста безопасности пользователя. После установки MS16-072 групповые политики пользователей извлекаются с использованием контекста безопасности компьютеров. Эта проблема применима для следующих статей базы знаний:

  • 3159398 MS16-072: описание обновления безопасности для групповой политики: 14 июня 2016 г.
  • 3163017 Накопительное обновление для Windows 10: 14 июня 2016 г.
  • 3163018 Накопительное обновление для Windows 10 версии 1511 и Windows Server 2016 Technical Preview 4: 14 июня 2016 г.
  • 3163016 Накопительное обновление для Windows Server 2016 Technical Preview 5: 14 июня 2016 г.

симптомы

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

причина

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

разрешение

Чтобы решить эту проблему, используйте консоль управления групповой политикой (GPMC.MSC) и выполните одно из следующих действий:

- Добавьте группу «Прошедшие проверку» с разрешениями на чтение для объекта групповой политики (GPO).
- Если вы используете фильтрацию безопасности, добавьте группу «Компьютеры домена» с разрешением на чтение.

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

# 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"}

yagmoth555
источник
Похоже, я предварительно отмечу это как ответ. Я добавил «Доменные компьютеры» с доступом для чтения к своей фильтрации безопасности, и теперь по крайней мере один из компьютеров с проблемой работает. Поэтому я предполагаю, что патч автоматически установился на сервер через Центр обновления Windows и вызвал эту проблему. Теперь мне также интересно, в чем разница между вкладкой «Делегирование» для объекта групповой политики и разделом «Фильтрация безопасности» ... время, чтобы прочитать
Даниэль
2
Чтобы немного добавить к путанице, мне нужно было добавить группу безопасности, содержащую пользователя И группу, содержащую компьютер для применения политики. Добавление только одного (пользователя или компьютера) приведет к тому, что политика не будет применена. Это не обязательно должна быть группа «Компьютеры домена», просто комбинация пользователя и компьютера должна быть действительной в фильтрации безопасности, если политика должна применяться.
Adwaenyth
Это исправило это для нашей компании -> Добавить группу «Прошедшие проверку» с разрешениями на чтение для объекта групповой политики (GPO). Big Thx
Мозг Фу Лонг
Это не похоже на реальное решение, так как я не хочу, чтобы все применяли этот объект групповой политики, только конкретные люди в группе. Почему MS все еще развертывает это в Центре обновления Windows? Это ломает все.
Сефетус
@Sephethus Используйте вкладку делегирования для добавления правильного компьютера домена, GPO будет работать как обычно. Если у вашего объекта групповой политики нет настроек компьютера, то добавление компьютера домена в фильтр безопасности тоже ничего не даст, но, на мой взгляд, вкладка делегирования лучше.
yagmoth555