Skip to content
Эта страница переведена с помощью ИИ и может содержать неточности. Помогите улучшить перевод на GitHub.

Модель безопасности и обязательства по приватности ​

Gately работает на границе сети и имеет дело с ключами DNS-провайдеров, закрытыми ключами сертификатов и разными учётными данными, поэтому безопасность и прозрачность — главные цели проекта.

Обязательства по приватности ​

  • Ноль внешних подключений по умолчанию: нет обращений к серверам проекта, отправки данных об устройстве и удалённой доставки конфигурации.
  • Внешние адреса видны и настраиваются: адреса определения публичного IP, STUN-серверы и другие показываются в интерфейсе и могут быть изменены или отключены.
  • Самостоятельная сторонняя авторизация: вход через GitHub, Google, QQ и OIDC использует ваши собственные OAuth-приложения, без каких-либо посредников.
  • Обновления под вашим контролем: программа не скачивает и не подменяет себя в фоне. Онлайн-обновление бинарной установки в Linux запускается только по нажатию администратора, сверяет SHA-256 и сохраняет предыдущую версию; момент обновления выбираете вы.

Защита данных ​

  • Конфигурация хранится в открытом JSON с правами 0600, её можно аудировать и откатывать.
  • Чувствительные поля маскируются в выводе API.
  • Токен cloudflared передаётся через переменную окружения и не виден в списке процессов; токены и ключи frp и Tailscale хранятся с правами 0600.

Аутентификация и контроль доступа ​

  • хеширование паролей bcrypt, сессионные токены с HMAC-подписью;
  • пароль по умолчанию gately.cn общеизвестен, поэтому, пока он используется, вверху интерфейса управления постоянно отображается напоминание сменить его; забытый пароль или потерянный аутентификатор двухфакторной аутентификации можно сбросить только на сервере командами gately reset-password / gately reset-totp (нужен доступ на чтение и запись к каталогу конфигурации и подтверждение вводом yes), после сброса все сеансы становятся недействительными, а операция записывается в журнал аудита, подробнее в разделе Сброс пароля и двухфакторной аутентификации;
  • вход по passkey (WebAuthn): хранится только открытый ключ, обязательна проверка пользователя (отпечаток пальца, лицо или PIN), счётчик подписей защищает от клонирования; требуется доступ по домену через HTTPS (или localhost);
  • двухфакторная аутентификация (TOTP, проверена по тестовым векторам RFC 6238);
  • учётные записи только для чтения: могут просматривать состояние и конфигурацию, но не могут вносить изменения, скачивать резервные копии, читать секреты или открывать терминал; после сброса пароля или удаления их сеансы сразу становятся недействительными;
  • ограничение частоты неудачных попыток входа;
  • локальный обратный прокси: если интерфейс управления стоит за nginx, haproxy или веб-службой Gately на этом же хосте, заголовкам X-Real-IP / X-Forwarded-For доверяют только от адресов этого хоста; по ним доступ только из локальной сети, ограничение попыток входа и журнал аудита получают реальный источник. Это можно отключить или добавить дополнительные доверенные прокси в «Настройки → Ограничения доступа»;
  • секретный путь входа, доступ только из локальной сети, HTTPS для интерфейса управления;
  • единый шлюз fnOS: при доступе к пакету для fnOS через единый шлюз fnOS доступ контролирует fnOS, и открыть интерфейс могут только администраторы fnOS. «Вход через fnOS» по умолчанию отключён; после включения администраторы, уже вошедшие в fnOS, входят как администратор Gately (без двухэтапной проверки), а обычные пользователи fnOS по-прежнему входят с паролем, подробнее в разделе Нативное приложение для fnOS;
  • переключатели модулей: модули, отключённые в разделе «Настройки → Модули», не запускают служб и не обслуживают API управления, что сокращает поверхность атаки;
  • несколько API-токенов: каждый токен получает права чтения и записи только для модулей, отмеченных при создании, может иметь срок действия, а система запоминает IP-адрес последнего использования; аккаунт, двухфакторная аутентификация, управление токенами, а также резервное копирование, восстановление, перезапуск и системные настройки доступны только через сессию входа, подробнее в разделе API-токены и OpenAPI;
  • контроль доступа к сайтам: автоблокировка при неудачной аутентификации, фильтрация по странам через GeoIP, правила по путям, подробнее в разделе Веб-службы;
  • резервные копии конфигурации можно шифровать (scrypt + AES-GCM), подробнее в разделе Резервное копирование.

Аудит и прослеживаемость ​

Журнал аудита фиксирует входы, изменения конфигурации и доступ к чувствительным данным, а история конфигурации хранит версию каждого файла конфигурации до перезаписи и позволяет откатиться одним щелчком; подробнее в разделе Аудит и история конфигурации. Артефакты релизов сопровождаются подписями cosign, аттестацией происхождения сборки и SBOM; как их проверить, описано в разделе Проверка релизов.

Значения по умолчанию для рискованных функций ​

Терминал локального Shell по умолчанию отключён. Для SSH-терминала действует политика «доверие при первом подключении»: отпечаток ключа хоста запоминается.

Сообщить об уязвимости ​

Сообщайте об уязвимостях приватно через страницу Security в репозитории GitHub, не раскрывая подробности в публичных Issue: https://github.com/wangwanjie/gately/security

Больше рекомендаций — в разделе Рекомендации по защите.

Распространяется по лицензии Apache-2.0.