Изменения в обработке групповых политик после обновления MS16-072
Введение
В очередной Patch Tuesday, Microsoft выпустила исправление, чтобы предотвратить атаку "человек посередине", когда GPO скачиваются с контроллеров домена клиентами.
Отлично звучит! Но, на самом деле, есть нюанс. :) Исправление это меняет обработку в поведении GPO. Ничего особо ужасного здесь нет, но некоторые объекты групповых политик могут перестать применяться. Именно об этом мы и поговорим.
Как воспроизвести поведение
Обновление MS16-072 установлено на клиентах
Администратор удалил группу Authenticated Users из фильтра безопасности
Администратор добавил выделенную группу безопасности в фильтр
Примечание: Учетная запись компьютера не имеет прав Чтение на объекте групповой политики
Поведение по умолчанию
Все пользовательские разделы GPO выполняются, поскольку пользователь имеет право читать и применять политику, даже если у компьютера нет права чтения на конкретном объекте.
Измененное поведение, которое приносит элемент "неожиданности".
Все пользовательские разделы не выполняются (если уз компьютера не имеет права чтения объекта)
Почему так происходит? Ответ из статьи базы знаний "Before MS16-072 is installed, user group policies were retrieved by using the user’s security context. After MS16-072 is installed, user group policies are retrieved by using the machines security context"
Итак, большие перемены пришли: для обработки пользовательских разделов политики, Компьютеру нужны права чтения. И если вы удалите группу AUTHENTICATED USERS из GPO, компьютер не сможет больше прочитать его, и соответственно, GPO не применится должным образом.
Исправления
Вы можете вручную обновить каждый объект политик чтобы восстановить их работу после обновления, и для этого есть два пути:
- #1: Просто добавить группу Domain Computers в фильтр безопасности
- #2: Добавить группу Domain Computers “неявно”, используя вкладку "Delegation" |
Для автоматического исправления можно воспользоваться oneliner'ом
Get-GPO -All | Set-GPPermissions -TargetType Group -TargetName "Domain computers" -PermissionLevel GpoRead
Какой способ лучше?
Достоинства и недостатки:
Способ 1:
Когда вы добавляете группу Domain Computers напрямую в фильтр безопасности, вы можете сразу же визуально считывать ситуацию
Способ 2:
Если вы используете вкладку "Делегирование", то не получаете 2наглядной" картины происходящего. Пока вы снова ее не откроете, не сможете увидеть, должны ли применяться объекты политик или же нет.
Заметьте также, что второй способ не работает с SBS 2008 или SBS 2011.
Хорошо, я исправил все свои GPO, которые у меня были, что дальше?
Изменение схемы - Group-Policy-Container
Дальше неплохо бы переопределить умолчания, чтобы не делать каждый раз тоже самое для вновь созданных GPO.
Для этого:
- Откроем ADSI Edit
- Подключимся к конексту schema
- Найдем объект “CN = Group-Policy-Container”
- И откроем его атрибут defaultSecurityDescriptor и добавим следуещее значение в конец: (A;CI;LCRPLORC;;;DC)
https://fromreallife.files.wordpress.com/2016/06/screenshot_15.jpg?w=680
"DC" здесь “Domain Computers” а не не “Domain Controllers”, как многие подумали. Контроллеры домена сокращенно будут “ED”, поскольку входят в группу “Enterprise Domain Controllers”.
5. Примените изменения, закройте все консоли и откройте заново. У новых созданных GPO должно появиться право чтения.
https://fromreallife.files.wordpress.com/2016/06/screenshot_16.jpg?w=680
Если изменения не сработали, обновите кэш схемы или перезагрузите контроллеры. Впрочем, можно просто немного подождать и почитать что-нибудь полезное :)
Если это кажется очень страшным, то есть всегда добрый друг Powershell!
Давайте попробуем сделать тоже самое с его помощью. Запуск скрипта для изменения GPO без параметров выведет отчет о текущем состоянии:
https://fromreallife.files.wordpress.com/2016/06/screenshot_17.jpg?w=680
Как поменять поведение по умолчанию для компьютеров?
Без глубогого погружения в Security Descriptor Definition Language (SDDL), рассмотрим разрешения, которые нам нужно добавить для следующих 6 полей:
Тип ACE:
- A = Access Allowed
Флаги ACE:
- CI = Container Inherit
Разрешения:
- LC = List Contents
- RP = Read All Properties
- LO = List Object
- RC = Read Permissions
Тип объекта:
- (здесь у нас пустое поле)
Унаследованный тип объекта:
- (и здесь тоже)
Trustee:
Выполним скрипт с параметром -Action и проверим, что битовая маска изменена:
https://fromreallife.files.wordpress.com/2016/06/screenshot_18.jpg?w=680
Другие ресурсы
Never a dull moment with Group Policy (or what to do about MS16-072): http://www.gpanswers.com/
Deploying Group Policy Security Update MS16-072 \ KB3163622: https://blogs.technet.microsoft.com/askds/2016/06/22/deploying-group-policy-security-update-ms16-072-kb3163622/
Powershell script to adjust permissions for Authenticated Users on Group Policy: https://gallery.technet.microsoft.com/Powershell-script-to-cc281476