Безопасность
Что обеспечивает сам relay
- Конфиденциальность транзитного трафика. Между узлами — gRPC
поверх стандартного TLS 1.3. Собственных криптопримитивов нет:
только устоявшиеся реализации из стандартной библиотеки и
crypto/tls. - Унифицированный транспорт с HTTPS. Релейный канал и обычный
веб-канал слушают один и тот же порт 443 и используют один и тот
же транспортный профиль — TLS 1.3, тот же ALPN, та же конфигурация
handshake. Невалидные и неавторизованные обращения получают
штатную веб-страничку, не
403и неconnection reset. - Аутентификация соседних узлов. Каждый соседний узел подтверждается HMAC-токеном, выданным мастером. Подменить узел или подставить чужой не получится: токен проверяется на каждом RPC. Токены хранятся в bootstrap-конфиге узла, не в общем доступе.
- Защита от перебора. Anti-abuse: больше 10 неудачных попыток аутентификации с одного IP за час — адрес уходит в бан-лист на 24 часа. Бан-лист сохраняется на диск и переживает перезапуск. Распределённый перебор по разным выходным узлам не обходит порог: бан работает на каждом узле локально, атакующему придётся попасть в бан-лист у всех узлов поочерёдно.
- Минимум привилегий процесса. Сервис работает от
непривилегированного системного пользователя
ololo-relay(без shell). Сетевые возможности (управление TUN-устройством, слушание привилегированных портов) выданы через Linux capabilities (cap_net_admin,cap_net_bind_service) — не отroot. - Изоляция через systemd. В юните включены
NoNewPrivileges=true,ProtectSystem=strict,ProtectHome=true,PrivateTmp=true, ограниченный набор сетевых семейств (AF_INET,AF_INET6,AF_UNIX,AF_NETLINK). Файловая система видна только на чтение, кроме/var/lib/ololo-relay/. Доступа к/homeнет.
GPG-ключ репозитория
Все пакеты и метаданные подписаны одним ключом:
- Fingerprint:
7996 8800 C963 EE63 2443 8ADA 2E81 F9E2 E462 1CF2 - Key ID:
2E81F9E2E4621CF2 - UID:
ololo-relay repo <repo@ololo.tech> - Действителен до: 2028-05-22
Скачать публичный ключ: repo.ololo.tech/pubkey.asc.
Проверить отпечаток вручную:
curl -fsSL https://repo.ololo.tech/pubkey.asc | gpg --show-keys
Вывод должен содержать тот же fingerprint, что указан выше.
Что подписывается
.deb-пакеты — через подпись APT-метаданных. Файлыapt/dists/stable/Releaseиapt/dists/stable/InReleaseсодержат хэшиPackagesиPackages.gz. APT отвергает изменённый или повреждённый артефакт автоматически..rpm-пакеты — подпись внутри RPM-заголовка (rpm --addsign). Плюс отдельная подписьrepodata/repomd.xml.ascдля метаданных репозитория.dnfпроверяет обе при установке.
При обновлении репозитория ключом подписываются и пакеты, и метаданные за одну CI-операцию.
Сообщения об уязвимостях
Для ответственного раскрытия уязвимостей в ololo-relay и
других продуктах — security@ololo.tech.
При сообщении полезно указать:
- версию пакета (
apt-cache policy ololo-relayилиdnf info ololo-relay); - дистрибутив и версию ядра;
- по возможности — минимальный воспроизводящий пример или PoC;
- ожидаемое и фактическое поведение.