Групповые политики
Групповая политика — это набор правил, в соответствии с которыми производится настройка рабочей среды относительно локальных политик, по умолчанию. Групповые политики в реализации Active Directory — это часть интегрированного решения. Альтернативной реализацией Active Directory под Linux/Unix является проект Samba. Поддержка применения групповых политик в конкретных дистрибутивных решениях, в целом, не является частью проекта Samba. В данной статье представлен общий обзор данного инструмента в контексте интеграции применения групповых политик в решениях ALT.
Механизмы назначения и кеширования
В дистрибутивах ALT для применения групповых политик на данный момент предлагается использовать инструмент gpupdate. Инструмент рассчитан на работу на машине, введённой в домен Samba. Среди применяемых настроек присутствуют:
Настройка | Статус | Комментарий |
---|---|---|
Настройка браузера Firefox | Стабильная | Возможно установить при использовании ADMX-файлов Mozilla Firefox (пакет admx-firefox, https://github.com/mozilla/policy-templates/releases) |
Настройка браузера Chromium | Стабильная | Возможно установить при использовании ADMX-файлов Google Chrome (пакет admx-chromium, https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip) |
Настройка «Яндекс.Браузера» | Стабильная | Возможно установить при использовании ADMX-файлов Yandex (пакет admx-yandex-browser, https://yandex.ru/support/browser-corporate/deployment/deployment.html) |
Запрет на подключение внешних носителей данных | Стабильная | Стандартные средства RSAT, GPUI |
Включение или выключение различных служб (сервисов systemd) | Стабильная | Возможно установить при использовании ADMX-файлов ALT (пакет admx-basealt, https://github.com/altlinux/admx-basealt) |
Управление control framework | Стабильная | Возможно установить при использовании ADMX-файлов ALT (пакет admx-basealt, https://github.com/altlinux/admx-basealt) |
Управление настройками KDE | Экспериментальная | Возможно установить при использовании ADMX-файлов ALT (пакет admx-basealt, https://github.com/altlinux/admx-basealt) |
Управление GSettings | Стабильная | Возможно установить при использовании ADMX-файлов ALT (пакет admx-basealt, https://github.com/altlinux/admx-basealt) |
Управление настройками службы Polkit | Стабильная | Возможно установить при использовании ADMX-файлов ALT (пакет admx-basealt, https://github.com/altlinux/admx-basealt) |
Генерация ярлыков запуска программ | Стабильная | Стандартные средства RSAT, GPUI. С некоторыми ограничениями. Также можно делать ярлыки типа URL и делать, например, URI-ссылки smb:// для открытия Samba shares.
|
Подключение сетевых дисков | Стабильная | Стандартные средства RSAT, GPUI |
Управление каталогами | Стабильная | Стандартные средства RSAT, GPUI |
Управление INI-файлами | Экспериментальная | Стандартные средства RSAT, GPUI |
Управление общими каталогами | Экспериментальная | Стандартные средства RSAT, GPUI |
Управление файлами | Экспериментальная | Стандартные средства RSAT, GPUI |
Управление переменными среды | Стабильная | Стандартные средства RSAT, GPUI |
Управление logon-скриптами | Экспериментальная | Стандартные средства RSAT, GPUI |
Установка программного обеспечения | Экспериментальная | Возможно установить при использовании ADMX-файлов ALT (пакет admx-basealt, https://github.com/altlinux/admx-basealt) |
Установка пароля для локального пользователя root | Не реализовано | |
Политика замыкания | Возможно установить при использовании ADMX-файлов от Microsoft (пакет admx-msi-setup) | |
Периодичность запроса конфигураций | Стандартные средства RSAT, GPUI | |
Указание прокси-сервера | Стандартные средства RSAT, GPUI |
Оценить полный набор возможностей могут администраторы инфраструктур на базе Active Directory скачав файлы ADMX из репозитория: https://github.com/altlinuxteam/admx-basealt и загрузив их в оснастку RSAT. Модули (настройки), помеченные как экспериментальные, необходимо включать вручную через ADMX-файлы ALT в разделе gpupdate.
Процесс применения настроек:
- настройки для машины реплицируются при запуске компьютера и далее обновляются раз в час;
- настройки для пользователя реплицируются при входе пользователя в систему и далее обновляются раз в час.
Развёртывание клиентских средств применения групповых политик
На текущий момент для включения инструмента групповых политик на клиентах AD необходимо установить пакеты из репозитория:
- oddjob-gpupdate
- gpupdate
Установка ПО производится командами:
# apt-get update
# apt-get install gpupdate
Конфигурирование в командной строке
Включение работы групповых политик и выбор шаблона локальной политики (local policy) выполняется командой gpupdate-setup
от пользователя с правами администратора:
# gpupdate-setup enable
workstation
Для применения настроек следует перезагрузить рабочую машину.
Примеры, работы с командой gpupdate-setup
:
- показать текущий статус групповой политики:
# gpupdate-setup enabled
- показать текущий профиль политики:
# gpupdate-setup active-policy workstation
- показать список доступных профилей локальной политики:
# gpupdate-setup list server ad-domain-controller workstation
- включить групповые политики и установить профиль локальной политики server:
# gpupdate-setup write enable server server
Конфигурирование с помощью Alterator
Включить работу групповых политик и выбрать профиль локальной политики по умолчанию можно также с помощью GUI в ЦУС. Должны быть установлены пакеты alterator-auth и alterator-gpupdate:
# apt-get install alterator-auth alterator-gpupdate
Конфигурирование групповых политик с помощью Alterator возможно как при вводе машины в домен AD, так и на уже включённой в домен рабочей станции.
Для включения групповых политик при вводе машины в домен, следует в модуле ЦУС «Аутентификация» отметить пункт «Включить групповые политики»:
Если рабочая станция уже находится в домене, конфигурирование групповых политик с помощью Alterator возможно с помощью модуля «Групповые политики» из пакета alterator-gpupdate:
Функционал модуля «Групповые политики» пока ограничен включением/выключением политики и выбором шаблона локальной политики — Сервер, Рабочая станция или Контроллер домена:
Конфигурирование gpupdate
По умолчанию, нет необходимости конфигурировать gpupdate.
Однако, в файле /etc/gpupdate/gpupdate.ini можно указать в явном виде следующие опции:
в разделе [gpoa]
backend = выбор способа получения настроек
local-policy = профиль локальной политики, который будет применен сразу после загрузки ОС.
в разделе [samba]
dc = контроллер домена, с которого нужно обновлять групповые политики
В следующем примере указан пустой профиль локальной политики. Это бывает необходимо для тестирования групповых политик, чтобы они не наслаивались на локальные политики:
[gpoa]
backend = samba
local-policy = /usr/share/local-policy/default
[samba]
dc = dc0.domain.alt
Периодичность запуска групповых политик
У машины и пользователя собственные таймеры процесса gpupdate.
Для мониторинга и контроля времени выполнения службы gpupdate.service используются системный таймер gpupdate.timer и пользовательский таймер gpupdate-user.timer. Для управления периодом запуска групповых политик достаточно изменить параметр соответствующего таймера systemd (по умолчанию период запуска составляет 1 час).
Изменить периодичность запуска системного таймера можно в /lib/systemd/system/gpupdate.timer. По умолчанию таймер gpupdate.timer запустится после загрузки ОС, а затем будет запускаться каждый час во время работы системы. Просмотреть статус системного таймера:
# systemctl status gpupdate.timer
Изменить периодичность запуска пользовательского таймера можно в /usr/lib/systemd/user/gpupdate-user.timer. По умолчанию таймер gpupdate-user.timer запустится после входа пользователя в систему, а затем будет запускаться каждый час пока активен сеанс соответствующего пользователя. Просмотреть статус пользовательского таймера:
$ systemctl --user status gpupdate-user.timer
$ systemctl --user daemon-reload
Управлять периодичностью запуска gpupdate можно также через групповые политики (см. Периодичность запроса конфигураций).
Установка административных шаблонов и инструментов администрирования ГП
Для задания конфигурации необходимо установить административные шаблоны (ADMX-файлы).
Установка ADMX-файлов и инструментов администрирования: Развёртывание административных шаблонов для групповых политик.
Подробнее о инструменте удалённого управления базой данных конфигурации: ADMC.
Подробнее о инструменте редактирования настроек клиентской конфигурации: GPUI.
Internals
В gpupdate до версии 0.10.0-alt1 групповые политики кэшировались в файле /var/cache/gpupdate/registry.sqlite (можно просматривать его командой sqlite3
).
В gpupdate, начиная с версии 0.10.0-alt1 , ключи реестра, полученные из объектов групповой политики (GPO), хранятся в Dconf, а не в SQLite.
Отследить какие политики «прилетели» на машину клиента можно, выполнив команду dconf dump /.
При выполнении этой команды с правами доменного пользователя будут выведены машинные политики и политики данного пользователя, при выполнении с правами пользователя root будут выведены только машинные политики.
[kim@w2 ~]$ dconf dump /
[SOFTWARE/Policies/Microsoft/WindowsFirewall/FirewallRules]
OpenSSH='v2.20|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=22|Name=Open SSH port|Desc=Open SSH port|'
[Software/BaseALT/Policies/Control]
ssh-gssapi-auth='enabled'
sshd-allow-groups='enabled'
sshd-allow-groups-list='remote'
sshd-gssapi-auth='enabled'
system-policy='gpupdate'
[Software/BaseALT/Policies/ReadQueue/Machine]
0="('Local Policy', '/var/cache/gpupdate/local-policy', None)"
1="('Firefox', '/var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{0CCFA74C-57F5-42B5-98E2-007D4A59C4C4}', 262148)"
[Software/BaseALT/Policies/ReadQueue/User]
0="('nm', '/var/cache/samba/gpo_cache/TEST.ALT/POLICIES/{6F65CD4D-9209-4A81-9801-17A35CEE5CFD}', 131074)"
[Software/BaseALT/Policies/SystemdUnits]
gpupdate.service=1
oddjobd.service=1
sshd.service=1
[Software/Policies/Mozilla/Firefox]
DisableMasterPasswordCreation=1
PasswordManagerEnabled=1
ShowHomeButton=1
[Software/Policies/Mozilla/Firefox/Authentication]
SPNEGO="['.test.alt']"
[Software/Policies/Mozilla/Firefox/Homepage]
Locked=1
URL='https://basealt.ru'
[org/gnome/evolution-data-server]
migrated=true
network-monitor-gio-name=''
[org/mate/caja/window-state]
geometry='800x550+310+75'
maximized=false
start-with-sidebar=true
start-with-status-bar=true
start-with-toolbar=true
[org/mate/desktop/accessibility/keyboard]
bouncekeys-beep-reject=true
bouncekeys-delay=300
bouncekeys-enable=false
enable=false
feature-state-change-beep=false
mousekeys-accel-time=1200
mousekeys-enable=false
mousekeys-init-delay=160
mousekeys-max-speed=750
slowkeys-beep-accept=true
slowkeys-beep-press=true
slowkeys-beep-reject=false
slowkeys-delay=300
slowkeys-enable=false
stickykeys-enable=false
stickykeys-latch-to-lock=true
stickykeys-modifier-beep=true
stickykeys-two-key-off=true
timeout=120
timeout-enable=false
togglekeys-enable=false
[org/mate/desktop/session]
session-start=1718111448
[org/mate/mate-menu/plugins/applications]
last-active-tab=0
[org/mate/panel/general]
object-id-list=['menu-bar', 'show-desktop', 'workspace-switcher', 'window-list', 'notification-area', 'clock']
toplevel-id-list=['bottom']
[org/mate/panel/objects/clock]
applet-iid='ClockAppletFactory::ClockApplet'
locked=true
object-type='applet'
panel-right-stick=true
position=0
toplevel-id='bottom'
[org/mate/panel/objects/clock/prefs]
custom-format=''
format='24-hour'
[org/mate/panel/objects/menu-bar]
applet-iid='MateMenuAppletFactory::MateMenuApplet'
has-arrow=false
locked=true
object-type='applet'
position=0
toplevel-id='bottom'
[org/mate/panel/objects/notification-area]
applet-iid='NotificationAreaAppletFactory::NotificationArea'
locked=true
object-type='applet'
panel-right-stick=true
position=10
toplevel-id='bottom'
[org/mate/panel/objects/show-desktop]
applet-iid='WnckletFactory::ShowDesktopApplet'
locked=true
object-type='applet'
position=1
toplevel-id='bottom'
[org/mate/panel/objects/window-list]
applet-iid='WnckletFactory::WindowListApplet'
locked=true
object-type='applet'
position=20
toplevel-id='bottom'
[org/mate/panel/objects/workspace-switcher]
applet-iid='WnckletFactory::WorkspaceSwitcherApplet'
locked=true
object-type='applet'
position=10
toplevel-id='bottom'
[org/mate/panel/toplevels/bottom]
expand=true
orientation='bottom'
screen=0
size=28
y=836
y-bottom=0
[org/mate/terminal/profiles/default]
background-color='#2C2C2C2C2C2C'
background-darkness=0.94999999999999996
background-type='transparent'
bold-color='#000000000000'
foreground-color='#F5F5F5F5E4E4'
palette='#2E2E34343636:#CCCC00000000:#4E4E9A9A0606:#C4C4A0A00000:#34346565A4A4:#757550507B7B:#060698209A9A:#D3D3D7D7CFCF:#555557575353:#EFEF29292929:#8A8AE2E23434:#FCFCE9E94F4F:#72729F9FCFCF:#ADAD7F7FA8A8:#3434E2E2E2E2:#EEEEEEEEECEC'
use-theme-colors=false
visible-name='По умолчанию'
Состав локальной политики
Для клиента также существует понятие локальной политики. Настройки локальной политики находятся в каталоге /usr/share/local-policy/. Данные настройки по умолчанию поставляются пакетом local-policy. Администраторы инфраструктур имеют возможность поставлять собственный пакет с локальной политикой и развёртывать её единообразно на всех клиентах. Формат шаблонов локальных политик представляет из себя архивный формат политик Samba с дополнительными модификациями. Локальную политику рекомендуется править только опытным администраторам. Состав локальной политики может меняться или адаптироваться системным администратором.
Название параметров | Описание | Комментарий |
---|---|---|
sshd-gssapi-auth, ssh-gssapi-auth | Включение аутентификации с помощью GSSAPI для sshd (механизм Control) | Необходимо для аутентификации в домене при доступе через SSH. |
sshd-allow-groups, sshd-allow-groups-list | Ограничение аутентификации для sshd по группам wheel и remote (механизм Control) | Необходимо для ограничения доступа при доступе через SSH для всех пользователей домена (только при наличии соответствующей привилегии). |
system-policy | Применение групповых политик при логине (механизм Control) | Необходимо для применения групповых политик при логине. |
oddjobd.service | Включение oddjobd.service (механизм Systemd) | Необходимо для обеспечения возможности запуска gpupdate для пользователя с правами администратора.
|
gpupdate.service | Включение gpupdate.service (механизм Systemd) | Необходимо для регулярного обновления настроек машины. |
sshd.service | Включение sshd.service (механизм Systemd) | Необходимо для обеспечения возможности удалённого администрирования. |
оpenSSH | Открытие порта 22 | Необходимо для обеспечения возможности подключения SSH на машинах при старте Firewall applier. |
Troubleshooting
В случае неописанных ошибок и «развала» отладочного вывода один из простых подходов к решению проблемы — удалить файл «реестра» /var/cache/gpupdate/registry.sqlite и запустить gpoa
заново для перегенерации файла и вызова «применялки настроек».
Для диагностики механизмов применения групповых политик на клиенте можно выполнить команды:
- получить и применить настройки для текущей машины:
# gpoa --loglevel 0
- получить и применить настройки для пользователя ivanov:
# gpoa --loglevel 0 ivanov
Коды ошибок
Сообщения, сопутствующие кодам ошибок, могут изменяться (переводиться, исправляться), но сам код уникален для определённой части программы, что позволяет однозначно идентифицировать проблему.
Код | Описание | Решение |
---|---|---|
E00001 | Недостаточно прав для запуска программы gpupdate .
|
Необходимо повысить уровень привилегий. Может помочь запуск программы от имени администратора. |
E00002 | Программа gpupdate не будет запущена из-за предыдущих ошибок.
|
|
E00003 | Ошибка работы бэкэнда, которая привела к досрочному прекращению обработки групповых политик. Этот код характеризует серьёзные ошибки, которые обрабатываются на самом высоком уровне. | Возможно, это баг в коде и необходимо отправить багрепорт в багтрекер проекта. |
E00004 | Ошибка во время работы фронтенда. | Высокоуровневая ошибка при инициализации фронтенда или во время работы appliers. С большой вероятностью может оказаться багом в коде. |
E00005 | Не получилось запустить применялку политик для обновления групповых политик компьютера. | Проверьте, что машина всё ещё в домене, демон oddjobd доступен через D-Bus и у пользователя достаточно прав для запуска ПО. |
E00006 | Не получилось запустить применялку политик для обновления групповых политик пользователя. | Проверьте, что машина всё ещё в домене, демон oddjobd доступен через D-Bus и у пользователя достаточно прав для запуска ПО. |
E00007 | Невозможно инициализировать бэкэнд Samba в силу неполадок компонентов, связанных с Samba. | Необходимо проверить инсталляцию Samba на машине, убедиться, что машина введена в домен и домен доступен. |
E00008 | Невозможно инициализировать бэкэнд no-domain для выполнения процедуры бутстрапа групповых политик. | Возможно, было произведено вмешательство в локальную политику или произошёл misconfiguration. Необходимо проверить целостность пакета local-policy и настройки домена в Alterator. |
E00009 | Произошла ошибка при попытке запуска adp
|
Необходимо обратиться к руководству по устранению неполадок проекта ADP. |
E00010 | Произошёл сбой при попытке получить имя домена Active Directory | Необходимо проверить работу доменной службы имён (DNS), а также доступность доменного LDAP. Для доступа к LDAP необходим работоспособный Kerberos, так что стоит проверить и его конфигурацию. |
E00011 | Во время работы applier с пониженным уровнем привилегий произошла неполадка. | Возможно, что в используемой групповой политике заданы параметры, для установки которых требуются права администратора. Это необходимо проверить и исправить объект групповой политики соответственно. |
E00012 | Высокоуровневая ошибка инициализации бэкэнда. | Необходимо проверить наличие условий для запуска бэкэнда. В случае с Samba — удостовериться, что машина введена в домен. |
E00013 | У пользователя, запустившего программу, недостаточно прав для обновления настроек машины. | Запустите программу с правами администратора. |
E00014 | Не прошла проверка наличия билета Kerberos. Билет Kerberos нужен для доступа к сервисам домена. | Проверьте конфигурацию Kerberos в файле /etc/krb5.conf . Попробуйте получить билет Kerberos вручную.
|
E00015 | Запрос на получение имени домена Active Directory через LDAP не прошёл. | Проверьте возможность получения Kerberos ticket для машины. Проверьте работу DNS и возможность обратиться к доменному LDAP. |
E00016 | Утилита wbinfo не отдаёт SID для пользователя, для которого выполняется обновление групповых политик. | Проверьте целостность программы wbinfo. Проверьте, что машина введена в домен. |
E00017 | Невозможно получить список групповых политик для репликации на используемое имя пользователя. | Удостоверьтесь, что пользователь, для которого происходит попытка получить список групповых политик, существует в домене. Также необходимо удостовериться, что проблема не вызвана misconfiguration домена. |
E00018 | Не получилось прочитать содержимое настройки XDG_DESKTOP_DIR. | Удостоверьтесь, что XDG в системе сконфигурирован корректно и пользователь, для которого вычитывается настройка, существует. |
E00019 | Произошла ошибка во время работы applier для пользователя. | Необходимо удостовериться, что это не misconfiguration в используемой GPO. Возможен баг. В таком случае необходимо оставить bug report на страничке проекта. |
E00020 | Произошла ошибка во время работы applier для пользователя с пониженными привилегиями. | Необходимо удостовериться, что это не misconfiguration в используемой GPO. Возможен баг. В таком случае необходимо оставить bug report на страничке проекта. |
E00021 | Не был получен ответ от D-Bus при попытке запустить GPOA для текущего пользователя. | Удостоверьтесь, что D-Bus работает корректно и демон oddjobd запущен. Удостоверьтесь, что у текущего пользователя достаточно прав для обращения к D-Bus. |
E00022 | Не был получен ответ от D-Bus при попытке запустить GPOA для машины. | Удостоверьтесь, что D-Bus работает корректно и демон oddjobd запущен. |
E00023 | Не был получен ответ от D-Bus при попытке запустить GPOA для пользователя. | Удостоверьтесь, что D-Bus работает корректно и демон oddjobd запущен. Удостоверьтесь, что у текущего пользователя достаточно прав для обращения к D-Bus. |
E00024 | Ошибка во время работы машинного applier. | Проверьте настройки applier вручную, чтобы убедиться, что соответствующая часть ОС не поломана. |
E00025 | Ошибка во время инициализации пользовательского applier. | Проверьте, что машина является частью домена и контроллер домена доступен. Удостоверьтесь, что пользователь существует. Проверьте, что соответствующая часть ОС не поломана. |
E00026 | Ошибка слияния машинной групповой политики. | Необходимо очистить кэш gpupdate. |
E00027 | Ошибка слияния пользовательской групповой политики. | Необходимо очистить кэш gpupdate. |
E00028 | Ошибка слияния машинной части групповой политики. | Необходимо очистить кэш gpupdate. |
E00029 | Ошибка слияния пользовательской части групповой политики. | Необходимо очистить кэш gpupdate. |
E00030 | Ошибка при запуске процесса с пониженным уровнем привилегий в контексте пользователя. | Необходимо проверить наличие домашнего каталога пользователя, для которого выполняется gpupdate. |
E00042 | Не входит в возможные значения для control. | Ошибка возникает в случае некорректного целочисленного типа данных, прописанного в шаблонах групповых политик (ADMX-файлах). |
E00055 | Ошибка при запуске pkcon_runner синхронно для компьютера. | Необходимо проверить наличие в системе и корректность файла pkcon_runner. |
E00056 | Ошибка запуска apt-get update. | Необходимо проверить подключение к сети и корректность репозиториев, отсутствие подключённых дополнительных репозиториев. |
E00057 | Ошибка установки пакета. | Необходимо проверить наличие пакета в репозиториях, правильность имени пакета, наличие подключения к сети и наличие в системе пакета packagekit. |
E00058 | Ошибка удаления пакета. | Вероятно, пакет не установлен в систему или в системе отсутствует пакет packagekit. |
E00059 | Не входит в возможные значения для control. | Ошибка возникает в случае некорректного строкового типа данных, прописанного в шаблонах групповых политик (ADMX-файлах). |
E00060 | Ошибка при запуске pkcon_runner синхронно для пользователя. | Необходимо проверить наличие в системе и корректность файла pkcon_runner. |
E00061 | Ошибка при запуске pkcon_runner асинхронно для компьютера. | Необходимо проверить наличие в системе и корректность файла pkcon_runner. |
E00062 | Ошибка при запуске pkcon_runner асинхронно для пользователя. | Необходимо проверить наличие в системе и корректность файла pkcon_runner. |
E00067 | Ошибка создания переменных среды. | Необходимо убедиться в наличии переменных окружения: XDG_DATA_DIRS, XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS, PATH. |
E00068 | Ошибка выполнения команды kwriteconfig5. | Необходимо убедиться, что установлен пакет kf5-kconfig. |