WFWarpFleet / документация Личный кабинет Консоль

Безопасность

Агент никогда не работает от root — ни при мониторинге, ни при автолечении. Всё, что требует root, делают две маленькие службы с закрытым списком действий. Ниже — честно о том, что каждая из них может, как это ограничено и что можно выключить на самом сервере.

Агент

Агент работает от системного пользователя warpfleet: без root, без единой capability, повысить права не может (sudo, su и setuid-программы для него не работают). Он собирает состояние, находит проблемы и сообщает о них, но сам ничего не меняет. Своё состояние держит в /var/lib/warpfleet/monitor.

sudo warpfleet-agent mode status    # что включено на сервере
sudo warpfleet-agent mode monitor   # применить настройки (флаги ниже)

Переустановка той же командой настройки сохраняет. Сервер, где стояла старая версия с лечением под root, после обновления сам переходит на эту схему: политика лечения переносится.

Помощник проверок

Часть данных без root не прочитать: проверки конфигураций nginx, Apache, HAProxy, PHP-FPM и BIND, запросы к PostgreSQL, LVM, SMART дисков, Kubernetes, keytab Active Directory, резервные копии закрытых системных файлов. Их в режиме мониторинга выполняет помощник проверок — отдельная служба warpfleet-probe под root, которую systemd запускает по запросу через локальный сокет.

Данные с помощником те же, что получал бы агент под root. Помощника можно не ставить — curl … | sudo env WARPFLEET_PROBE_HELPER=off bash или sudo warpfleet-agent mode monitor --helper=off: тогда эти проверки не выполняются, а в карточке сервера перечислено, что именно не проверяется. В журналах при этом не остаётся «неудачных входов»: без помощника агент даже не пытается войти от имени postgres.

Служба исполнения: действия, обновления, терминал

Кнопки действий консоли, установку обновлений и веб-терминал для агента без root выполняет служба warpfleet-exec под root. Сам агент попросить её ни о чём не может:

Что разрешено, решает администратор сервера:

Терминал можно дополнительно закрыть кодом из письма — для отдельных, самых важных серверов: замок ставится в списке серверов консоли, а снять его тоже можно только с кодом. Остальные серверы открываются сразу.

Автолечение

Плейбуки исполняет та же служба исполнения, а не агент. Агент только сообщает ей об аварии и предлагает плейбук; дальше служба всё проверяет сама:

Даже взломанный агент не получит через службу root: он может лишь попросить починить настоящую аварию проверенным плейбуком.

Файл на сервер

Файл из консоли (до 200 МБ) шифруется от браузера до службы так же, как терминал, и кладётся в /var/lib/warpfleet/inbox — права 0640, без права на исполнение, существующий файл не перезаписывается. Через 7 дней служба удаляет его сама.

Что можно выключить на сервере

sudo warpfleet-agent mode monitor --terminal=root    # терминал сразу под root (по умолчанию)
sudo warpfleet-agent mode monitor --terminal=login   # вход по учётной записи сервера
sudo warpfleet-agent mode monitor --terminal=off     # без терминала
sudo warpfleet-agent mode monitor --actions=off      # без действий и установки обновлений
sudo warpfleet-agent mode monitor --heal=off         # без автолечения
sudo warpfleet-agent mode monitor --files=off        # без приёма файлов

При установке то же задаётся переменными WARPFLEET_TERMINAL, WARPFLEET_ACTIONS и WARPFLEET_HEAL, например curl … | sudo env WARPFLEET_TERMINAL=login bash. Если выключено всё — терминал, действия, лечение и файлы, — служба не устанавливается вовсе. Выбор сохраняется при переустановке.

Что исполняется на сервере

Всё ниже выполняет служба исполнения, а не агент, — по билетам консоли или по политике лечения (выше).

Как запретить исполнение на самом сервере

Надёжнее всего — режим мониторинга без службы исполнения: sudo warpfleet-agent mode monitor --actions=off --terminal=off --heal=off --files=off. Если нужно оставить пробы, но запретить остальное, есть выключатели в /opt/warpfleet/runtime/agent.env; из облака они не переопределяются, после правки — systemctl restart warpfleet-agent.

Ограничения плейбуков

Рискованное — только через человека

У каждого плейбука есть уровень риска. Низкий чинится автоматически, средний — по вашей политике, высокий (рестарт критичных служб, доменные операции) — только после явного подтверждения оператора в консоли. До подтверждения можно посмотреть dry-run: что именно будет исполнено.

Проверка результата и откат

После починки агент верифицирует, что проблема ушла. Не ушла — исполняет описанные в плейбуке шаги отката; как последняя линия — восстановление из бэкапа, снятого до вмешательства. Необратимые операции откат не имитируют: такие плейбуки честно помечены «ручной разбор» и эскалируются.

Цепочка доверия: всё подписано

Изоляция самого агента

Аудит и роли

Данные

Облако размещено в РФ (152-ФЗ соблюдён, уведомление РКН подано). Состояние ноды хранится локально на ней (SQLite). В облачном варианте агент отправляет в WarpFleet (app.warpfleet.ru) снимки метрик и инцидентов, а по запросу из консоли — строки журналов служб, вывод проб и результаты поиска по логам (с маской секретов). Self-hosted-вариант не отправляет наружу ничего: всё уходит на ваш собственный сервер.

Установщик меняет только своё: создаёт службу warpfleet-agent и файлы в /opt/warpfleet и /var/lib/warpfleet. Настройки журнала сервера (journald) и приоритеты процессов при нехватке памяти он не трогает.

Полное удаление

Удаление из консоли (нода → удалить) останавливает и удаляет службу, стирает бинарь, плейбуки, файл с токеном (/opt/warpfleet), базу и рантайм-файлы (/var/lib/warpfleet), а также настройки журнала, которые писали прежние версии установщика. Ручная команда — в FAQ. Чего удаление вернуть не может: записи журнала, удалённые ротацией, и результаты уже выполненных починок.