← Документация Hope·HopeDChopedc.ru
HopeDC · Документация

Политики для Linux‑клиентов

Sudo‑правила, файлы, пакеты, cron, sysctl и общие папки для доменных Linux‑машин
Документ 11 · Версия 1.7
Аудитория: администраторы Linux и домена
Раздел панели: домен → «Политики Linux»

Содержание

  1. 1. Как устроено
  2. 2. Кому применяется политика
  3. 3. Sudo‑правила
  4. 4. Политики машин
  5. 5. Политики пользователей
  6. 6. Связи с подразделениями (OU)
  7. 6‑а. Каталог шаблонов
  8. 7. Агент hopedc-agent
  9. 8. Изменение, удаление и откат политик
  10. 9. Диагностика
  11. 10. Ограничения

1. Как устроено

Политики для Linux настраиваются в домене → «Политики Linux» (право роли «Групповые политики»: просмотр — gpo.view, изменение — gpo.edit). Доставка идёт двумя путями:

ЧтоКто применяет на клиентеКогда
Sudo‑правила (объекты sudoRole)Штатный SSSD (sudo_provider = ad)При обновлении кэша SSSD (по умолчанию в течение нескольких минут) или сразу после sss_cache -E
Политики машин и пользователей (объекты hopeLinuxPolicy): файлы, пакеты, cron, sysctl, общие папки SMBАгент hopedc-agent.py по LDAPS (636)Через 2 минуты после загрузки и каждые 10 минут (systemd‑таймер), или вручную

Все объекты хранятся в служебном подразделении OU=Linux Policys,<домен> (создаётся автоматически при первом правиле, в «Структуре домена» скрыто). Это локальные объекты HopeDC: в домене‑зеркале они в MS AD не записываются. В кластере они реплицируются на все узлы.

Политики применяются к машинам, введённым в домен (Документ 10). Групповые политики Windows (раздел «Групповые политики») к Linux не применяются.

Обновите агент на клиентах, введённых до v150. В v150 исправлены выбор политик по группам компьютеров и чтение политик по LDAP: прежний агент политики не получает. Скачайте новый hopedc-agent.py (раздел 7) и замените файл на клиентах — настройки таймера менять не нужно.

2. Кому применяется политика

Агент находит объект своего компьютера по имени хоста (HOSTNAME$, первые 15 символов) и применяет политику, если выполняется любое из условий:

Как добавить компьютер в группу: «Структура домена» → компьютер → вкладка «Member Of» → найти группу → сохранить. Как поместить компьютер в OU при вводе: adcli join … --computer-ou="OU=Linux,DC=corp,DC=local" (Документ 10) или перенести объект в «Структуре домена».

Если объект компьютера не найден (хост не введён в домен или имя изменилось), агент применяет только политики «для всех машин» и пишет об этом в журнал.

3. Sudo‑правила

Вкладка «Sudo‑правила» → «Создать правило»:

ПолеЗначениеПример
Имя правилаЛатиница, цифры, . _ -linux-admins-all
sudoUserПользователь или %группа домена%linux-admins
sudoCommandКомандыALL или /usr/bin/systemctl restart nginx
sudoOptionПараметры sudo (необязательно)!authenticate — без пароля

Правило действует на всех машинах домена (sudoHost = ALL) от имени любого пользователя (sudoRunAsUser = ALL); привязка к группам машин и OU к sudo‑правилам не применяется. Группа в sudoUser должна иметь gidNumber (Документ 10, п. 2.1).

Проверка на клиенте:

sudo sss_cache -E                  # сбросить кэш SSSD, чтобы не ждать
sudo -l -U ivanov

4. Политики машин

Вкладка «Политики машин» → «Создать политику»: «Шаблон» (выбор окном каталога), «Применять к машинам (группа компьютеров)» (по умолчанию «Все машины»), «Имя политики», «Тип» и поля типа. Редкие поля — под ссылкой «Дополнительно». Над списком политик — поиск (по имени, типу, данным) и кнопка «Удалить найденные»: так удаляется, например, весь набор по префиксу имени.

Типы политик (v161, v163). Агент v163 выполняет 22 типа (v161 — 20, без «Защиты Astra» и «Параметра control»); агент более старой версии новые типы пропускает с записью «unknown type» — скачайте агент заново (вкладка «Агент» или скрипт ввода).

ТипПоляЧто делает агент / откат при снятии политики
Файл (file)Путь, права, содержимое; дополнительно: состояние (есть/удалить), команда при изменении, проверкаЗаписывает файл целиком (или удаляет). Откат — прежний файл из резервной копии или удаление созданного.
Ключ в конфиге (kv)Файл, ключ, значение, разделитель (пробел, «=», « = », табуляция, «: »), секция [ini], состояние; дополнительно: «вставлять до строки», создать файл, регистр ключа (для /etc/environment — важен), команда при изменении, проверкаМеняет одну строку «ключ значение», не трогая остальное (sshd_config, login.defs, journald.conf…). Новая строка ставится после закомментированного образца или до указанной строки (для sshd_config — до блоков Match). Откат — прежняя строка ключа.
Строка в файле (line)Файл, строка, состояние; дополнительно: заменять строку по выражению, вставлять до строкиДобавляет строку (или заменяет найденную) либо удаляет. Откат — прежняя строка.
Права на файлы (perm)Пути (шаблоны *), убрать биты (например 022 = go-w) или задать права, владелец, группа; рекурсивно; к файлам/каталогамchmod/chown. Откат — прежние права.
Параметр ядра (sysctl)Параметр, значение/etc/sysctl.d/90-hopedc.conf + sysctl -w. Неподдерживаемый ядром параметр — «пропущено». Откат — прежнее значение.
Параметр загрузки ядра (grub)Параметр (например init_on_alloc=1), состояниеGRUB_CMDLINE_LINUX в /etc/default/grub, update-grub или grub2-mkconfig, на РЕД ОС/RHEL также grubby. Действует после перезагрузки. Откат — прежний параметр.
Модуль ядра (module)Модули через пробел, запретить/разрешить/etc/modprobe.d/hopedc-<модуль>.conf (install … /bin/false + blacklist), выгрузка модуля. Откат — файл удаляется.
Служба (service)Служба (несколько имён через «|» — первая найденная: ssh|sshd), состояние: включена, выключена, запрещена (mask), снять запрет, запустить, остановить, перезапуститьsystemctl. Нет такой службы — «пропущено». Откат — прежнее состояние (включена/запущена).
Пакеты (package)Пакеты (вариант имени для разных ОС через «|»: auditd|audit), установить/удалитьapt-get / dnf / yum. При откате пакеты не удаляются.
Задание по расписанию (cron)Расписание, пользователь, команда/etc/cron.d/hopedc-<имя>. Откат — файл удаляется.
Скрипт (script)Скрипт, интерпретатор, когда (один раз / при каждом запуске); дополнительно: таймаут, скрипт отката«Один раз» — повторно только при изменении текста. Последняя строка вывода попадает в отчёт. Откат — скрипт отката, если задан.
Монтирование (mount)Новая точка (что, куда, тип, параметры) или параметры существующей точки (nodev, nosuid, noexec)Запись в /etc/fstab (с меткой) и монтирование; для существующей точки — добавление параметров и mount -o remount. Если точка — не отдельный раздел, «пропущено». Откат — прежняя запись.
USB-накопители (usb)Запретить / только чтение / разрешить; разрешённые устройства VID:PIDПравила udev /etc/udev/rules.d/90-hopedc-usb.rules. Откат — правила удаляются.
Принтер (printer)Имя, адрес (ipp://, socket://, smb://…), драйвер (по умолчанию IPP Everywhere), расположение, по умолчанию, общий доступ; дополнительно: параметры -o (например auth-info-required=negotiate для печати через Windows по Kerberos)lpadmin (CUPS ставится при необходимости). Откат — принтер удаляется.
Доверенный сертификат (cert)Корневой ЦС домена или вставленный PEMupdate-ca-certificates / update-ca-trust. «ЦС домена» — если агент работает в режиме проверки по ЦС. Откат — сертификат удаляется.
Межсетевой экран (firewall)Разрешить/запретить порт или службу (с источником), включить экран, входящие по умолчанию — запрещеныfirewalld или ufw (что установлено). Откат — правило снимается.
Рабочий стол (dconf)Ключ dconf, значение (GVariant), запрет изменения; дополнительно: база — сеансы пользователей или экран входа (GDM)Файлы /etc/dconf/db/local.d (или gdm.d) и locks, профиль dconf, dconf update (GNOME/MATE/Cinnamon). Откат — удаляются.
Браузер (browser)Firefox / Chromium / Chrome / Яндекс Браузер, политики JSONFirefox — политики разных политик HopeDC объединяются в policies.json; Chromium/Chrome/Яндекс — managed-файл в каталоге политик браузера. Откат — удаляются.
Защита Astra Linux SE (astra, v163)Переключатель astra-safepolicy (30 штук: astra-ptrace-lock, astra-mount-lock, astra-digsig-control, astra-mic-control …), включить/выключить; дополнительно — параметр (уровень для astra-mic-control, пользователь для astra-autologin-control)Состояние — <переключатель> is-enabled, изменение — enable/disable. Нет переключателя (не Astra SE) — пропуск. Для ЗПС, МКЦ, hardened, LKRG и др. в отчёт пишется «действует после перезагрузки». Откат — прежнее состояние (кроме строгого режима МКЦ: его отключение не поддерживается).
Параметр control (control, v163)Параметр и состояние (su wheelonly, sudo restricted, ping netadmin …)ALT Linux: control <параметр> <состояние>. Нет control или параметра — пропуск; недопустимое состояние — ошибка без изменений. Откат — прежнее состояние.
Несколько действий (steps)JSON-список действий разных типовВыполняет по порядку (например: пакет → файл → служба). Откат — в обратном порядке.
Общая папка (smb)«Имя шары», «Путь на сервере», «Доступ группе (домен)», «Доступ», «Гостевой доступ», «Описание»Ставит Samba, режим члена домена с idmap через SSSD (старый файл — smb.conf.hopedc-bak), каталог с setgid и ACL группы, шара для @группа. Откат — блок шары удаляется.

Проверка перед применением и команда при изменении. У файлов, ключей и строк можно задать «Проверку» (например sshd -t, visudo -c): если она не прошла, изменение отменяется и политика получает статус «ошибка» — так ошибочная настройка не ломает службу. «Команда при изменении» (например systemctl reload ssh) выполняется, только если файл действительно изменился.

Только для ОС. Поле «Только для ОС» (в «Дополнительно») ограничивает политику: astra, astra17, astra18, astra-se, redos, redos7, redos8, alt, debian, ubuntu, rhel, deb (Debian-подобные), rpm (RPM-системы); через запятую — любая из; «!» — кроме (!alt). Определяется по /etc/os-release.

Общая папка SMB. С Windows папка открывается как \\<linux-хост>\<шара> по билету Kerberos текущего пользователя; доступ — по членству в группе. SPN cifs/<хост> HopeDC добавляет к объекту компьютера сам при вводе.

5. Политики пользователей

Вкладка «Политики пользователей» — файлы окружения и лимитов для доменной группы пользователей: «Шаблон», «Группа пользователей», «Развернуть на машинах» (группа компьютеров или все), «Имя политики», «Путь файла», права, «Содержимое». Подстановка %USERGROUP% заменяется именем группы при создании политики.

Это файловая политика: агент записывает файл на выбранные машины, а действие на членов группы обеспечивает сам файл (например, строка @%USERGROUP% hard nofile 65535 в /etc/security/limits.d/). Шаблоны: «Лимит открытых файлов (nofile)», «Лимит процессов (nproc)», «umask 027 для группы», «Приветствие при входе», «Переменные окружения для группы». Такие политики можно удалить, но не изменить — для правки создайте новую.

6. Связи с подразделениями (OU)

Вкладка «Связи (OU)» → «Привязать политику к OU»: выберите одну или несколько политик и OU. Политика применится ко всем Linux‑машинам, объекты которых лежат в выбранных OU, включая вложенные, — аналог связей GPO в Windows. Связь дополняет группу компьютеров: политика применяется, если подходит любое условие (раздел 2).

6‑а. Каталог шаблонов (v158)

Вкладка «Каталог шаблонов» — список всех шаблонов политик: встроенные и свои. Свои шаблоны — объекты каталога домена в служебной OU «Linux Policys»: реплицируются на все узлы кластера и входят в резервную копию. Каталог рассчитан на тысячи шаблонов:

Из главного меню (v160). Тот же каталог открывается пунктом «Каталог шаблонов» главного меню (под «Домены», право gpo.view) — без входа в домен. Сверху выбирается домен: свои шаблоны хранятся в каталоге домена; выбор запоминается. Кнопка «Политика» у шаблона открывает форму политики этого домена.

Выбор шаблона в форме политики. Поле «Шаблон» открывает окно каталога: строка поиска сразу в фокусе, категории слева, только шаблоны своей области (машины или пользователи). Клавиши: ↑ ↓ — выбор, Enter — применить, Esc — закрыть; «Без шаблона» — очистить.

Встроенные шаблоны (v163) — 600 для машин и 13 для пользователей.

Шаблоны с адресами-примерами (fs.<домен>, proxy.<домен>, portal.<домен>) — замените адреса своими после выбора шаблона.

Подстановки. В любых полях политики можно писать %DOMAIN% (DNS-имя домена), %REALM%, %NETBIOS%, %DC% (контроллер, к которому подключается агент), %HOST% (имя машины) — агент подставляет значения на каждой машине. Так одна политика «Время — с контроллера домена» или «SSO по Kerberos» подходит для любого домена.

Наборы (23). Кнопка «Наборы» в каталоге: ФСТЭК 2022 (без пунктов, требующих проверки / все), наборы для классов защищённости 3, 2 и 1, базовое усиление сервера и рабочей станции (CIS), усиление SSH, полный аудит, сетевые параметры; рабочая станция GNOME (блокировка и приватность), рабочая станция KDE, базовая настройка Firefox, Chromium и Яндекс Браузера, «Домен: время, вход и SSO», службы сервера; v163: Astra Linux SE — базовая и усиленная защита (ЗПС, МКЦ, LKRG), РЕД ОС — базовая настройка, ALT Linux — базовая настройка, «Обслуживание: журналы, очистка, обновления», «Отчёты о машине в панель». «Применить…» — выбор машин (группа компьютеров или все), префикса имён и состава (можно снять отдельные шаблоны); создаётся по политике на каждый шаблон, имена — <префикс>001-<шаблон>, порядок применения — по номеру. Повторное применение обновляет политики набора. Убрать набор — поиск по префиксу на вкладке «Политики машин» и «Удалить найденные» (агенты откатят изменения).

Наборы для классов 1–3 — рекомендация HopeDC: класс 3 — рекомендации ФСТЭК без пунктов, требующих проверки, базовый аудит, журналы и сеансы; класс 2 — плюс параметры загрузки ядра, запрет редких модулей, усиление SSH, расширенный аудит, USB «только чтение»; класс 1 — плюс оставшиеся пункты ФСТЭК (кроме запрета user namespaces), запрет USB-накопителей, смена локальных паролей не реже 60 дней. Требования к паролям доменных учёток по классам (ИАФ.4) задаются в «Политике паролей» домена (Документ 2, раздел 4.15).

7. Агент hopedc-agent

7.1. Аутентификация

РежимКак настроить
Пароль (по умолчанию)«Агент» → «Создать сервисную учётку»: svc-hopedc-agent без административных прав, только чтение. Пароль показывается один раз и встраивается в агент. Без сервисной учётки агент входит как администратор домена по паролю из поля «Пароль bind‑учётки» — не рекомендуется.
Сертификат (mTLS)Сначала сервисная учётка, затем «Аутентификация агента» → «Сертификат (mTLS)» → «Выдать сертификат агента». Нужен корневой ЦС домена («Центр сертификации»). Клиентский сертификат (EC P‑256, 825 дней) кладётся в /etc/hopedc/agent.crt и agent.key; агент входит по LDAPS через SASL EXTERNAL, пароль не хранится. Сертификат можно отозвать в «Центре сертификации».

7.2. Установка

Вариант A — вместе с вводом в домен: sudo bash join-hopedc.sh (Документ 10).

Вариант B — на уже введённом хосте: скачайте hopedc-agent.py на вкладке «Агент» и выполните:

sudo apt install -y python3-ldap3        # РЕД ОС: dnf install -y python3-ldap3; ALT: apt-get install -y python3-module-ldap3
sudo install -m 0755 hopedc-agent.py /usr/local/bin/hopedc-agent.py
printf '[Service]\nType=oneshot\nExecStart=/usr/local/bin/hopedc-agent.py\n' | sudo tee /etc/systemd/system/hopedc-agent.service
printf '[Timer]\nOnBootSec=2min\nOnUnitActiveSec=10min\n[Install]\nWantedBy=timers.target\n' | sudo tee /etc/systemd/system/hopedc-agent.timer
sudo systemctl daemon-reload && sudo systemctl enable --now hopedc-agent.timer

Для режима mTLS в варианте B скопируйте также /etc/hopedc/agent.crt и agent.key (права 600) — проще использовать вариант A.

7.2‑а. Проверка контроллера (v158)

Агент выполняет политики от root, поэтому подлинность контроллера проверяется строго. Способ определяется при скачивании агента (вкладка «Агент»):

Агенты, установленные до v158, работают как прежде (без строгой проверки); скачайте и установите агент заново.

7.3. Ручной запуск и журнал

sudo /usr/local/bin/hopedc-agent.py                 # применить сейчас
systemctl list-timers hopedc-agent.timer            # когда следующий запуск
journalctl -u hopedc-agent.service -n 50            # что применилось

Строки журнала начинаются с [hopedc-agent]: хост и число его групп, «policies: N», применённые file/pkg/cron/sysctl/smb, ошибки получения политик.

7.4. Отчёты машин в панели (v163)

Агент 163 после каждого запуска отправляет отчёт в панель — расширенной операцией LDAP по тому же LDAPS-соединению и той же учётке (отдельный порт и права записи в каталог не нужны). Отчёт принимается от сервисной учётки агента (за компьютер своего домена по имени хоста) или от учётки самого компьютера (только за себя); от остальных — отказ. Сервер хранит отчёт на объекте компьютера (реплицируется в кластере); неизменившийся отчёт перезаписывается не чаще раза в 6 часов.

Вкладка «Отчёты машин»: машины домена с ОС, версией агента, временем последнего отчёта и числом применённых, пропущенных политик и ошибок; фильтры «С ошибками», «Нет отчёта больше суток», «Приостановлены», «Без отчёта». Строка открывает отчёт: сведения о машине (ОС и версия Astra / РЕД ОС / ALT, ядро, процессоры, память, диск, время работы) и все политики с состоянием и сообщением — ошибки первыми; для проверочных и отчётных скриптов — их итог.

Приостановить политики (право gpo.edit) — при следующем запуске агент откатывает всё, что применил, и не применяет новые политики, в отчёте — «приостановлена». «Возобновить политики» — следующий запуск применяет их снова. Так машину можно быстро вернуть в исходное состояние для разбора проблемы, не трогая группы и политики.

С контроллером до v163 агент 163 работает как прежде (без отчёта в панель). Объекта компьютера нет — в журнале агента «отчёт в панель не принят: доступ: компьютер … не найден в домене».

8. Изменение, удаление и откат политик

Изменённая политика применяется при следующем запуске агента: агент v161 сначала возвращает прежнее состояние (откат старой версии), затем применяет новую. Политику сняли — удалили, машина вышла из группы или OU, политика стала не для этой ОС — агент сам возвращает как было (см. «Откат» в таблице типов): восстанавливает файлы из резервных копий (/var/lib/hopedc-agent/backup), прежние строки ключей, параметры ядра и загрузки, состояние служб. Если две политики меняли одно и то же, откат идёт в обратном порядке применения. Пакеты при откате не удаляются.

Политики, применённые агентом до v161, отката не имеют — их следы убираются вручную или политикой с состоянием «удалить»: файл (/etc/cron.d/hopedc-<имя>), строка в /etc/sysctl.d/90-hopedc.conf, блок шары в /etc/samba/hopedc-shares.conf.

Отменить все политики на машине (например, перед выводом из домена): sudo hopedc-agent.py --undo-all или «Приостановить политики» в отчёте машины (раздел 7.4). Sudo‑правило перестаёт действовать после обновления кэша SSSD (sss_cache -E).

Отчёт о применении. sudo hopedc-agent.py --report показывает итог последнего запуска: для каждой политики — ok, skipped (не для этой ОС, нет службы или программы, не отдельный раздел), error (с причиной) или removed (откат), а для проверочных скриптов — их итог (например «файлов с SUID/SGID: 23 (список: …)»). Отчёт — /var/lib/hopedc-agent/report.json, состояние — /var/lib/hopedc-agent/state.json.

Инвентаризация (агент v179+). Вместе с отчётом агент отправляет сведения о машине — ОС, оборудование, диски, сеть, вошедшие пользователи, установленные пакеты (dpkg/rpm) — при изменениях и не реже раза в 12 часов. Они видны в разделе панели «Инвентаризация» (Документ 2, «Инвентаризация компьютеров»). Посмотреть, что будет отправлено: sudo hopedc-agent.py --inventory.

9. Диагностика

СимптомПричина и решение
Журнал агента: invalidCredentialsНеверный пароль сервисной учётки (её пересоздали) или учётка удалена — пересоздайте и обновите агент.
Журнал агента: «объект компьютера … не найден»Хост не введён в домен или его имя отличается от объекта; применяются только политики для всех машин.
Политика для группы не применяетсяКомпьютер не состоит в группе (вкладка «Member Of» компьютера) или агент до v150 — обновите агент.
«policies: 0», хотя политики естьПолитики заданы в другом домене, либо агент до v150.
Ошибка TLS/соединенияЗакрыт порт 636 или клиент не в списке «Сетевой доступ → Клиенты домена».
sudo не работаетНет sudo_provider в sssd.conf; у группы нет gidNumber; кэш — sss_cache -E; sudo -l -U пользователь.
Журнал агента: «отчёт в панель не принят: доступ: …»Агент входит не сервисной учёткой агента (например, администратором) или в домене нет объекта компьютера с именем хоста (первые 15 символов) — создайте сервисную учётку, скачайте агент заново, проверьте ввод в домен.
Машины нет в «Отчётах машин»Агент старше 163, ещё не запускался или контроллер до v163 — фильтр «Без отчёта».
Пакеты не ставятсяНет доступа клиента к репозиториям — агент лишь запускает apt-get/dnf.

10. Ограничения