← Назад к «Клиент»

Клиент LSUS

Агент обновлений на управляемом хосте: регистрация на сервере, heartbeat, получение политик и команд, проверка и установка обновлений. Для администратора это конечная точка системы — через неё становятся заметны ошибки политики, проблемы связи с сервером, сбои TLS.

Клиент поддерживает Astra Linux, Debian, Ubuntu, РЕД ОС, Oracle Linux 8/9/10, ALT и другие RHEL-совместимые системы. Эта страница — установка, конфигурация и диагностика клиента на Linux. Серверная часть — Развёртывание серверов. Быстрая установка — Быстрый старт.

Пакеты клиента

Клиент поставляется двумя пакетами:

Пакет Назначение Когда нужен
lsus-client Фоновый сервис (systemd + D-Bus), CLI lsus-client-ctl, бизнес-логика, связь с сервером на всех машинах (серверы, рабочие станции, терминалы)
lsus-client-gui Графический клиент для системного трея (PyQt5), иконка, desktop-файл только на рабочих станциях с графикой

На серверах без графики достаточно lsus-client. Пакет lsus-client-gui зависит от lsus-client и python3-pyqt5.

Установка

Astra / Debian / Ubuntu (.deb)

cd /opt/lsus-pkgs

# Базовый пакет (обязателен на всех машинах)
sudo apt install ./lsus-client_<версия>_all.deb

# GUI (только для рабочих станций с графикой)
sudo apt install ./lsus-client-gui_<версия>_all.deb

РЕД ОС / Oracle Linux (.rpm)

cd /opt/lsus-pkgs

sudo dnf install ./lsus-client-<версия>-1.noarch.rpm
sudo dnf install ./lsus-client-gui-<версия>-1.noarch.rpm   # опционально

ALT Linux (.rpm, apt-rpm)

Установка — только через apt-get от root (su -, без sudo): зависимости ALT называются python3-module-*, и разрешить их может только apt-get — команда rpm -Uvh оставит пакет без требуемых модулей.

$ cd /opt/lsus-pkgs
$ su -
# apt-get install ./lsus-client-<версия>-1.noarch.rpm
# apt-get install ./lsus-client-gui-<версия>-1.noarch.rpm   # опционально

Зависимости

Зависимость Назначение Обязательность
python3-requests HTTP-клиент для связи с сервером обязательно
python3-dbus связь сервиса с GUI обязательно
python3-gi GObject Introspection (D-Bus) обязательно
lvm2 создание снимков перед установкой обновлений обязательно
python3-dnspython DNS SRV-обнаружение сервера рекомендуется (deb) / обязательно (ALT)
python3-pyqt5 GUI-трей только для lsus-client-gui

Подключение к серверу

Клиент может находить сервер двумя способами: прямой URL или DNS SRV.

Способ 1. Прямой URL

Укажите адрес сервера в /etc/lsus-client/lsus-client-common.conf:

[server]
# порт 443 по умолчанию; указывайте явно при нестандартном порте
server_url = https://master.example.com

lightbulbЯвно указывайте порт

Если сервер слушает на нестандартном порту (не 443), обязательно укажите его в URL: server_url = https://master.example.com:9443. Без явного порта клиент использует значение по умолчанию, которое может не совпасть с настройкой сервера.

Способ 2. DNS SRV (автообнаружение)

Если создана DNS SRV-запись, укажите домен вместо URL:

[server]
server_discovery_domain = example.com

infoКак клиент выбирает сервер

Приоритет источников адреса:
1. Назначенный сервер (после первого успешного запроса через SRV сервер может назначить клиенту конкретный Site);
2. DNS SRV-запись _lsus._tcp.<домен>;
3. Значение server_url из конфига.

Если SRV не настроен — достаточно server_url. Подробнее о DNS SRV — в Требованиях.

Запуск службы

sudo systemctl enable --now lsus-client.service

Проверка, что хост зарегистрировался:

lsus-client-ctl status

Конфигурация

Файлы конфигурации (приоритет от высокого к низкому):

Файл Кто создаёт Назначение
/etc/lsus-client/lsus-client.conf пакет (шаблон) системный конфиг, защищён от изменений пользователем
/etc/lsus-client/lsus-client-common.conf сервис (D-Bus) применяет политики сервера; меняется автоматически
~/.config/lsus_client.conf пользователь пользовательские настройки (только если разрешено политикой)

Ключевые параметры lsus-client.conf

Секция Ключ По умолчанию Назначение
[server] server_url адрес сервера (fallback, если SRV не сработал)
[server] server_discovery_domain автоопределение по FQDN хоста домен для DNS SRV _lsus._tcp.<домен>. Если не задан — клиент берёт домен из FQDN машины автоматически
[server] server_ca_cert /etc/lsus-client/ca.crt путь к CA-сертификату сервера
[server] verify_ssl true проверка TLS-сертификата сервера
[system] check_interval_minutes 15 интервал проверки обновлений
[system] reminder_interval_days 1 интервал напоминания о доступных обновлениях
[system] policies_priority True приоритет серверных политик над локальными
[system] boot_min_free_mib 100 минимум свободного места в /boot, МБ
[system] lvm_snapshot_min_free_mib 512 минимум в VG для снимка, МБ

lightbulbГде задавать адрес сервера

Адрес сервера (server_url или server_discovery_domain) задавайте в /etc/lsus-client/lsus-client-common.conf — этот файл сервис обновляет автоматически, и он сохраняется между перезапусками. lsus-client.conf — системный шаблон, его лучше не редактировать напрямую (обновление пакета может его перезаписать).

infoПараметры, приходящие с сервера

Большинство эксплуатационных настроек (интервал heartbeat, окна установки, hold-пакеты, флаги disable_*) приходят централизованно с сервера как политика и применяются в lsus-client-common.conf в секции [policy]. Их не нужно задавать вручную на каждом клиенте. Подробнее о полях политики — в SERVER_INTEGRATION.md в каталоге клиента.

CLI lsus-client-ctl

Утилита диагностики и управления клиентом. Доступна после установки пакета lsus-client.

Команда Назначение Нужен root
status показать URL сервера, токен, UUID, сертификат, наличие конфига нет
test-connection health-probe сервера (GET /api/v1/clients/health) нет
diagnose полная диагностика: конфиг + файлы + эндпоинты /health и /clients/settings нет
register принудительная регистрация на сервере да
set-server <url> задать server_url, сбросить назначенный сервер, переподключиться да
clear-assigned-server сбросить assigned_server_url (вернуться к server_url) да
reset-cert перезагрузить сертификат сервера да
reset-identity удалить UUID, сгенерировать новый, перерегистрироваться да
full-reset полный сброс (токен + CA), затем bootstrap + регистрация да

Типовые сценарии CLI

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

lsus-client-ctl status

Проверить связь с сервером (без аутентификации):

lsus-client-ctl test-connection

Полная диагностика (рекомендуется при проблемах):

lsus-client-ctl diagnose

Сменить адрес сервера:

sudo lsus-client-ctl set-server https://site.example.com

Принудительно перерегистрироваться:

sudo lsus-client-ctl register

Диагностика

Системная служба

# статус службы
systemctl status lsus-client

# журнал службы (systemd)
journalctl -u lsus-client.service -n 50 --no-pager

# журнал в реальном времени
journalctl -u lsus-client.service -f

Файловый лог

tail -f /var/log/lsus-client.log | grep server

Логи установки пакетов: /var/log/lsus-client/updates/. Файл ротируется (10 МБ, 5 резервных копий).

Типичные ошибки в логах

Сообщение Значение Что делать
Ошибка отправки heartbeat транспортная ошибка отправки heartbeat проверьте сеть и доступность сервера
SSL-ошибка при heartbeat сертификат сервера недоверенный/устаревший lsus-client-ctl reset-cert, проверьте server_ca_cert
HTTP 401 при heartbeat токен устарел/отозван lsus-client-ctl register (клиент повторяет автоматически)
повторная выдача токена запрещена строгий /register без Bearer и без окна в портале: меню хоста «Разрешить перерегистрацию», затем lsus-client-ctl register
HTTP 503 от сервера сервер перегружен (backpressure) клиент уважает Retry-After, подождите

Чек-лист «клиент не появляется на сервере»

  1. systemctl status lsus-client — служба активна?
  2. lsus-client-ctl status — конфиг и адрес корректны?
  3. lsus-client-ctl test-connection — сервер достижим по HTTPS?
  4. lsus-client-ctl diagnose — полная проверка;
  5. Сетевой доступ: исходящий HTTPS до сервера (порт 443 по умолчанию), firewall;
  6. Доверие сертификату: verify_ssl и server_ca_cert;
  7. Зависимости: python3-dnspython установлен (если используете SRV).

Признаки исправной работы

Клиент работает корректно, если:

  • служба lsus-client.service активна;
  • хост появился в админке Master/Site;
  • heartbeat обновляется (видно по времени последнего связи);
  • lsus-client-ctl status показывает корректный URL и UUID;
  • политики с сервера применяются.

GUI-клиент (рабочие станции)

При установленном lsus-client-gui:

  • значок в трее показывает состояние обновлений;
  • левый клик — планирование установки;
  • правый клик — сокращённое меню;
  • Ctrl+Alt + левый клик — расширенное меню.

GUI общается со службой через D-Bus, поэтому lsus-client (служба) должен быть установлен и запущен.

D-Bus: аудит и блокирующий режим

Служба проверяет UID вызывающего и флаги политики disable_* на входе D-Bus-методов (установка обновлений, журнал, USB-заявки, вложения тестирования).

По умолчанию включён аудит (LSUS_CLIENT_DBUS_ENFORCE=0): вызовы не отклоняются, в журнал пишутся строки dbus_audit. Так GUI остаётся работоспособным, даже если loginctl не видит сессию (XRDP без seat, нестандартный display manager).

Блокирующий режим включают осознанно, после разбора журнала на стенде:

sudo systemctl edit lsus-client

В drop-in:

[Service]
Environment=LSUS_CLIENT_DBUS_ENFORCE=1

Затем sudo systemctl daemon-reload && sudo systemctl restart lsus-client.

Откат — удалить drop-in или поставить LSUS_CLIENT_DBUS_ENFORCE=0 и перезапустить службу.

Дополнительно:

Переменная По умолчанию Назначение
LSUS_CLIENT_DBUS_ENFORCE 0 1 — отказ постороннему UID и при disable_*
LSUS_CLIENT_DBUS_AUDIT_VERBOSE 0 В enforce писать в журнал и разрешённые вызовы (отказы пишутся всегда)

Если множество активных сессий пусто, служба не отказывает (fail-open) и пишет причину unknown_session.

Windows-клиент

Для управления хостами Windows используется отдельный агент — .NET-приложение (требует .NET Framework 4.6.2+). Поставка — MSI-пакет и ZIP-архив с PowerShell-скриптами установки (Install-LsusAgent.ps1 / Uninstall-LsusAgent.ps1). Агент использует Windows Update API (Microsoft.Update.Session, wusa.exe).

Подробная инструкция по установке на Windows — в комплекте поставки агента (docs/install.md). Управление обновлениями KB на стороне сервера описано в Windows.

Безопасность клиента

Клиент LSUS реализует многоуровневую защиту от подмены сервера, перехвата трафика и несанкционированного доступа. Все механизмы работают автоматически — администратору не нужно настраивать их вручную.

TLS Certificate Pinning (TOFU + pin)

Основная защита от подмены сервера — модель Trust On First Use с последующим закреплением сертификата:

  1. Первое подключение — клиент скачивает сертификат сервера с /api/v1/server-settings/repo-cert (без проверки TLS) и сохраняет в /etc/lsus-client/ca.crt.
  2. Закрепление — все последующие соединения проверяются по этому закреплённому сертификату.
  3. Проверка fingerprint — при каждом соединении вычисляется SHA-256 fingerprint реального TLS-сертификата и сравнивается с сохранённым. При несовпадении — диагностика и логирование, соединение отклоняется.

infoЧто если сертификат сервера сменился

При плановой замене сертификата на сервере нужно обновить ca.crt на клиентах. Команда lsus-client-ctl reset-cert скачивает новый сертификат. Если сертификат сменился без ведома администратора — клиент заблокирует подключение и запишет ошибку в лог.

Проверка TLS

Параметр Значение по умолчанию Где
verify_ssl true /etc/lsus-client/lsus-client.conf
CA-сертификат путь к /etc/lsus-client/ca.crt server_ca_cert
Защита конфига только root (системный конфиг) lsus-client.conf

При verify_ssl = true все HTTPS-запросы проверяются по цепочке CA. Системный конфиг защищён от изменения пользователем.

Валидация цепочки сертификатов

  • Выбор leaf-сертификата по SAN/hostname — клиент определяет, какой сертификат из bundle соответствует серверу.
  • Для корпоративного CA — leaf + intermediate из TLS handshake.
  • Различение самоподписанных и CA-сертификатов — корректная обработка обоих случаев.

Очистка trust store

Клиент автоматически удаляет неизвестные и чужие сертификаты из локального bundle (ca.crt). В нём остаются только сертификаты известных серверов LSUS (Master + назначенный Site). Это защищает от накопления «левых» сертификатов и подмены.

Интеграция с системным CA-хранилищем

Установленный сертификат LSUS регистрируется в системном trust store ОС:

Семейство ОС Путь Команда обновления
Debian/Ubuntu/Astra /usr/local/share/ca-certificates/ update-ca-certificates
RHEL/РЕД ОС/CentOS /etc/pki/ca-trust/source/anchors/ update-ca-trust
SUSE/ALT /etc/pki/trust/anchors/ update-ca-trust

Благодаря этому пакетные менеджеры (apt/dnf) тоже доверяют репозиториям LSUS — не нужно отключать проверку GPG или TLS при работе с локальными репозиториями.

Аутентификация (Bearer token)

После регистрации сервер выдаёт клиенту уникальный api_token:

  • Хранится в /etc/lsus-client/.api_token с правами 0600 (только root).
  • Каждый запрос к серверу содержит заголовок Authorization: Bearer <token>.
  • При компрометации токен можно отозвать на сервере — клиент перерегистрируется и получит новый.

Идентификация клиента

Механизм Что защищает
client_uuid в /etc/lsus-client/client-id Уникальный идентификатор хоста. Привязан к ОС.
os_install_id Обнаружение переустановки ОС — сервер сбрасывает привязку при смене идентификатора.
Детекция клонов ВМ Если сервер обнаруживает два хоста с одинаковым UUID (клонирование диска) — выдаёт новому клону другой UUID.

Kerberos / SPNEGO (доменные машины)

В доменной среде (AD/FreeIPA/ALD Pro) клиент может использовать взаимную аутентификацию через Kerberos (SPNEGO). Это защищает от подмены сервера: для успешного обмена нужен валидный TGT от доменного KDC, который подменяющий сервер получить не может.

DNS SRV с health-probe

При автообнаружении сервера через DNS SRV (_lsus._tcp.<домен>) клиент не доверяет записи слепо:

  1. Находит серверы по SRV-записи.
  2. Зондирует каждый через GET /api/v1/health (замеряя время отклика).
  3. Предпочитает серверы в той же подсети (/24).
  4. Выбирает сервер с минимальным RTT.

lightbulbМногоуровневая защита

Клиент LSUS защищён на нескольких уровнях одновременно: TLS pinning (защита от подмены сертификата), Bearer-токен (аутентификация), Kerberos (взаимная проверка в домене), DNS health-probe (защита от подмены SRV-записи). Даже при компрометации одного уровня остальные продолжают работать.

Связанные страницы