# Журнал изменений

## v0.7.1 — 2026-09-26

### Документация и развёртывание
- Руководство администратора по установке — `docs/install/`, Markdown и PDF (`docs/pdf/`, сборка — `tools/docs/build_pdf.py`):
  требования, сервер, ретранслятор, агент, подготовка хостов Linux и Windows, диагностика.
- `deploy/server.yaml.example` и юниты systemd сервера: `deploy/systemd/gits-server|gits-core|gits-console.service`.
- Подготовка хостов:
  - `deploy/host-prep/linux/prepare-host.sh` — auditd, правила `30-gits.rules` и `31-gits-noise.rules`, journald, события PARSEC Astra;
  - `deploy/host-prep/windows/prepare-host.ps1` — расширенная политика аудита по GUID, реестр, размеры журналов, W32Time, WinRM;
  - оба скрипта поддерживают режим проверки.
- Роль Ansible: переменная `gits_agent_prepare_host` для подготовки хоста перед установкой агента.
- Новый артефакт релиза `gits-deploy_<ver>.zip`: примеры конфигурации, юниты, подготовка хостов, роль Ansible, перечень мер, руководство.
- Примечания к выпуску для администраторов — `docs/release_notes.md`. Описание релиза в Gitea берётся из них.
- В релиз вкладываются PDF: `gits-install-guide_<ver>.pdf` и `gits-release-notes_<ver>.pdf`.
- `go run ./tools/dev docs-check -version vX.Y.Z` — первый шаг релизного workflow. Релиз не соберётся, если в
  примечаниях нет раздела версии или если PDF в `docs/pdf` собраны для другой версии либо не из текущего Markdown
  (`manifest.json` хранит версию и SHA-256 исходников).

### Исправления
- Агент (Windows): на русской Windows разбор `auditpol /backup` сдвигал столбцы у подкатегории с запятой в имени
  («Использование прав, затрагивающее конфиденциальные данные»), поэтому CHK-MAS-010a не могла пройти.
- CHK-MAS-009a (версия 2): источник времени берётся из `w32tm /query /source`, так как подпись `Source:` в выводе
  `/query /status` локализована. Остановленная служба W32Time больше не принимается за источник времени.
- Агент (Linux): из юнита убран `ProtectSystem=full`. С ним `/etc` доступен только для чтения, и действие
  блокировки локальной учётной записи (`usermod -L/-U`) завершалось ошибкой. `gits-agent install` перезаписывает
  юнит на уже установленных хостах.
- Порт шлюза в `deploy/agent.yaml.example` и design/02 приведён к значению по умолчанию 8443.

## v0.7.0 — 2026-09-26

Первый тегированный релиз Системы контроля соответствия ГОСТ Р 57580.1 (уровень 1). В него вошли шаг 1 и этапы v1–v4 дорожной карты ([design/09](design/09_roadmap.md)).

### Возможности

**Агент (Windows 10 / Server 2016+, Linux, включая Astra Linux с PARSEC)**
- регистрация по токену;
- mTLS с внутренним УЦ, автопродление сертификата;
- проверки конфигурации (45 проверок, 52 меры);
- инвентаризация оборудования и ПО;
- сбор событий: Windows Event Log, journald, auditd, PARSEC Astra; дисковый буфер;
- подписанные команды, включая команды реагирования.

**Ядро**
- конвейер событий с нормализацией по таксономии;
- правила выявления: match, threshold, sequence, absence, state;
- алерты, инциденты с жизненным циклом и SLA, реагирование с «двумя руками»;
- печати целостности журнала;
- уведомления и эскалация;
- ACC: сверка УЗ с AD/ALD Pro, HR-реестр, эталоны групп;
- уязвимости;
- приём syslog, пересылка в SIEM (CEF/JSON);
- свидетельства для оценки по 57580.2, отчёты соответствия;
- информационные системы и разграничение доступа по ним;
- действия администраторов как события.

**Консоль** — SPA: дашборд соответствия, хосты, проверки, события, алерты, инциденты, отчёты, учётные записи, ИС, аудит, МФА (TOTP).

### Новое в v4 (жизненный цикл агентов и развёртывание)

**Защита от клонов хоста или ВМ**
- Каждый экземпляр агента передаёт идентификатор сессии, отпечаток машины и монотонный счётчик.
- События `AGENT_CLONE_SUSPECTED`, `AGENT_IDENTITY_MISMATCH` и `AGENT_STATE_ROLLBACK`; правила RUL-AGENT-CLONE-01..03.
- Оператор закрепляет легитимный экземпляр в карточке хоста.
- Клон, зарегистрированный при работающем оригинале, заводится отдельным хостом и оригинал не вытесняет.

**Ядро и консоль раздельно**
- `gits-core` (шлюз, конвейер, правила, фоновые задачи, ключи) и `gits-console` (REST API + SPA, без секретов).
- Связь — только через общую БД: LISTEN/NOTIFY и задания `core_jobs`.
- Ядро допускает несколько экземпляров: синглтон-задачи исполняются у лидера.
- Режим «всё в одном» — `gits-server run`.

**Ретрансляторы `gits-relay` и несколько адресов у агента**
- Одно правило МСЭ на сегмент.
- Буферизация событий на время недоступности ядра, кэш пакетов обновлений.
- Ядро сквозно перепроверяет сертификат агента; ретранслятор можно ограничить ИС.
- Адреса подключения агентов назначаются в карточке ИС.

**Обновление агентов**
- Пакеты подписываются отдельным ключом обновлений.
- Раскатка волнами с утверждением «двумя руками».
- Автоматический откат, если новая версия не выходит на связь; остановка раскатки по порогу сбоев.

**Первичная установка**
- `gits-agent install`.
- Установочные пакеты из консоли: ZIP с `install.cmd` для GPO/SCCM, tar.gz с `install.sh`.
- Роль Ansible.
- Push-установка по SSH/WinRM из ядра или ретранслятора; учётные данные запечатаны ключом исполнителя и стираются после задания.

**События Linux**
- `SYSCALL.<ключ>` по ключам правил аудита СКР: запуск команд, изменение объектов УЗ/СЗИ/аудита.
- Меньше шума journald: cron, сеансы sudo, служебные юниты systemd, пользовательский менеджер systemd.
- Варианты записей таксономии.

### Обновление с предыдущих сборок

- Миграции `0020`–`0024` применяет ядро при запуске (`gits-core` или `gits-server run`). Консоль ждёт актуальную схему.
- Ключи `update.key` (подпись пакетов агента) и `deploy.key` (push-установка) создаются в каталоге ключей автоматически. Сделайте их резервную копию вместе с остальными ключами.
- Самообновление, `gits-agent install` и экземпляры/несколько адресов появились в этой версии. Агенты более ранних сборок обновляются вручную один раз, дальше — раскаткой.
- Опубликуйте пакеты агента из релиза в репозиторий обновлений: `gitsctl publish-agent -file … -version 0.7.0 -os … -arch … -format …`. Установочные пакеты консоли берут агента оттуда.

### Известные ограничения

- Push-установка по WinRM не подтверждена на стенде: тестовые Windows-ВМ отклоняли NTLM. SSH-путь проверен из ядра и из ретранслятора.
- Сборка MSI не реализована; для GPO используйте ZIP-пакет с `install.cmd`.
- Автопродление сертификата ретранслятора не реализовано (срок — 1 год).
- При нескольких экземплярах ядра пороговые правила считают события в пределах экземпляра; нужно распределение агентов по экземплярам.
- Агент не запускается на Windows Server 2012 R2 и старше (требование Go ≥ 1.21).
- HSM/KMS для ключей не поддерживается (ключи — файлы с ограниченными правами), горячее резервирование БД не настроено (design/02 §7).
