remo · документация
EN

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

Что защищает доступ, где лежат секреты и какие настройки нельзя оставлять по умолчанию.

Статус: доступно обновлено 2026-10-28

Границы

Что Как защищено
Сессия httpOnly cookie, SameSite=Lax, Secure в production
Пароль хеш на сервере, проверка постоянного времени
Секреты провайдеров и вебхука конверт: свой DEK, обёрнутый KEK; KEK не в базе
Токены интеграций только SHA-256 в базе, секрет показывается один раз
Токены агентов хеш, срок, отзыв
Публичная ссылка без токена, только чтение, пароль и срок по желанию
Метрики токен в production; прокси закрывает /api/metrics снаружи
Read-only сокет тип и шаг читаются varint-декодером; разрешены awareness и один syncStep1, update и syncStep2 отбрасываются
Приглашение токен — bearer-секрет; email получателя проверяется до выдачи прав, внутри транзакции
Метаданные доски без доступа /access отвечает 404 и не отдаёт название, организацию и visibility
Исходящие AI-запросы и вебхуки только HTTPS, проверка всех DNS-адресов на каждой доставке, привязка к IP, запрет редиректов; ALLOW_PRIVATE — явное исключение
Комментарии только аккаунт с доступом; ссылка-посетитель обсуждение не видит
Замок координация правок, не ACL; сырой клиент с board.edit может обойти

Что нельзя оставлять по умолчанию

  1. REMO_KEK — 32 байта base64, хранится вне сервера и резервируется. Потеря KEK делает сохранённые ключи провайдеров нечитаемыми.
  2. NODE_ENV=production — иначе cookie не Secure; без HTTPS вход будет выглядеть сломанным.
  3. REMO_METRICS_TOKEN — иначе /metrics отвечает 404 (что лучше, чем открытые метрики).
  4. REMO_CORS_ORIGIN — конкретный origin, не *, если используете cookie.
  5. Postgres на loopback — POSTGRES_PORT=127.0.0.1:5432 и ufw.
  6. REMO_WEBHOOK_ALLOW_PRIVATE — только если действительно нужен внутренний эндпоинт.

Публичная ссылка

Ссылка — свойство доски, а не токен: она даёт только чтение и никогда не даёт экспорт или бэкап. Смена пароля закрывает все открытые браузеры. Отзыв ссылки не отзывает персональные роли.

Что стоит проверить на установке

  • /api/metrics снаружи отвечает 404.
  • Порт 1234 и 5432 не видны из интернета (ss -ltnp).
  • .env доступен только пользователю сервиса.
  • Резервная копия KEK лежит отдельно от базы.
  • Доска без доступа отвечает 404 на /api/boards/<id>/access, без названия и организации.
  • Подделанный varint-кадр от viewer не меняет документ.
  • Приглашение, открытое чужим аккаунтом, не выдаёт членство и остаётся доступным получателю.
  • Custom AI endpoint с [::ffff:127.0.0.1] отклоняется при сохранении.

Куда дальше

Наблюдаемость — как убедиться, что всё это работает.