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

Вышел Gately v0.6.6 ​

12 ноября 2026 г.

Скачать v0.6.6 · GitHub Release

Релиз посвящён усилению безопасности. Обновиться рекомендуется всем пользователям.

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

  • Подделка заголовков источника: раньше удалялись только заголовки с точным совпадением имени, например X-Real-Ip, а бэкенды на PHP, WSGI и CGI считают X_Forwarded_For и X_Real_IP той же переменной, что и настоящий заголовок, поэтому посетитель мог сообщить такому бэкенду любой адрес клиента или схему. Теперь заголовки источника и исходного порта, присланные посетителем, вместе с вариантами через подчёркивание всегда удаляются перед пересылкой. Подзапросы прямой аутентификации обрабатываются так же, а X-Original-URI теперь записывает сам Gately, поэтому службы аутентификации, разрешающие пути по этому значению, больше не вводятся в заблуждение значением от посетителя.
  • Ограничение попыток входа в файловые службы: проверки паролей WebDAV, FTP и SMB не имели лимита попыток. Теперь источник с 10 неудачами за 15 минут отклоняется до конца окна (IPv6 группируется по /64, успешный вход счётчик не сбрасывает). Недавно проверенные учётные данные не занимают место, а анонимные пробы SMB не учитываются.
  • Восстановление: при восстановлении файла учётной записи используется новый ключ сеансов, поэтому старая резервная копия не вернёт в силу токены, отозванные позже выходом или функцией «Выйти на всех устройствах». Копии, которые после распаковки занимают больше 128 МБ или содержат более 256 файлов, отклоняются.
  • Прочее: импорт конфигурации nginx ограничивает глубину вложенности блоков (сильно вложенный файл исчерпывал стек и завершал процесс); заголовки Host длиннее 300 байт получают ответ 400; имена пользователей, записываемые в аудит и журналы при неудачном входе, обрезаются до 64 символов.
  • Зависимости: исправления безопасности стандартной библиотеки Go 1.26.11; обновлены golang.org/x/net, klauspost/compress и andybalholm/brotli; SMB-клиент монтирования хранилищ заменён на поддерживаемый cloudsoda/go-smb2 (GO-2026-5051).

Учётные записи и сеансы ​

  • Серверный отзыв сеансов: при выходе токен отзывается, а в «Настройки → Аккаунт и безопасность → Сеансы входа» появилась кнопка «Выйти на всех устройствах» (POST /api/account/sessions/revoke), которая сразу завершает все сеансы, созданные входом по паролю, Passkey, через сторонних провайдеров и через шлюз fnOS. API-токены остаются без изменений.
  • Ограничение исходящих запросов (restrictOutbound, по умолчанию выключено): при включении исходящие запросы по адресам, заданным администратором (вебхуки, уведомления, подписки на списки IP, обратные вызовы DDNS, проверка обновлений, вход через сторонних провайдеров и т. д.), отклоняют loopback-, частные и link-local-адреса (включая 169.254.169.254). Проверка применяется к разрешённому IP при каждом соединении, поэтому охватывает и перенаправления, и DNS rebinding. Апстримы обратного прокси, Wake-on-LAN, монтирование хранилищ и другие функции для внутренней сети остаются без изменений.
  • Защита от медленных запросов: порт управления ограничивает чтение тела запроса для каждой конечной точки. Обычные конечные точки должны завершить передачу за 60 секунд; конечные точки для больших файлов (восстановление копии, пакеты обновления, загрузка файлов) не ограничены по общему времени, но должны непрерывно передавать данные со средней скоростью не менее 4 КиБ/с.

Веб-служба ​

  • Удаление префикса пути у бэкендов по путям (#86): у бэкенда по пути появился параметр «Убирать префикс пути при передаче»: /api/zyqd/abc приходит на бэкенд как /abc, а путь из адреса бэкенда ставится перед ним. Это соответствует proxy_pass http://backend/; в nginx, при импорте конфигурации nginx параметр включается автоматически.
  • Исходный порт посетителя (#83): при включённом «Добавлять X-Forwarded-*» бэкенду отправляются X-Real-Port и X-Forwarded-For-Port. Если Gately находится за CDN или обратным прокси, в глобальных настройках можно указать «Заголовок реального порта».
  • Двухуровневый Gately (#81): если внешний экземпляр выполняет только WAF, а вход обрабатывает внутренний, задайте на обоих один и тот же ключ метки аутентификации и включите на внешнем сайте «Доверять метке аутентификации бэкенда»; посетители, прошедшие аутентификацию на внутреннем экземпляре, обходят и внешний WAF.

Подробнее в разделах Веб-служба и WAF.

Резервное копирование и восстановление (#85) ​

При восстановлении конфигурации теперь можно выбрать «Сохранить текущую учётную запись администратора»: учётная запись, API-токены и вход через сторонних провайдеров в интерфейсе управления сохраняют текущие значения, а в копии может не быть account.json, что удобно при переносе конфигурации с другого экземпляра. Подробнее в Конфигурация · Резервное копирование и восстановление.

Исправления ​

  • DDNS (#84): записи dynv6 с основным доменом dynv6.net и поддоменом xxxx больше не приводят к ошибке 404 при синхронизации и при удалении записи у провайдера; зона xxxx.dynv6.net определяется автоматически.

Производительность ​

  • Список блокировок при большом числе записей больше не перестраивает список CIDR при каждом изменении; маршрутизация сайтов сравнивает домены с подстановкой только после промаха по точному домену; просроченные записи ограничения частоты и неудачных входов очищаются не чаще раза в секунду.
  • Базовая аутентификация сайтов и WebDAV кэшируют успешные проверки bcrypt на 10 минут, поэтому затраты CPU на запрос снижаются с примерно 85 мс до микросекунд.
  • Перенаправление портов повторно использует буферы копирования, когда splice недоступен; список живых соединений строит только возвращаемые 500 строк; удаление заголовков источника больше не выделяет память.
  • Статистика сайтов, состояние и журналы Docker и список сеансов терминала в веб-интерфейсе перестают опрашиваться, пока вкладка браузера скрыта.

Заметки об обновлении ​

  • Docker: загрузите новый образ и пересоздайте контейнер; OpenWrt: установите новый .apk / .ipk поверх старого; fnOS: установите новый .fpk в Центре приложений; остальные установки можно обновить онлайн в «Системных настройках».
  • Открытые сеансы остаются действительными после обновления; если все устройства должны войти заново, используйте «Выйти на всех устройствах».

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