3.1 KiB
Безопасность
Секреты
Секретами считаются Hysteria authentication, obfs password, URI целиком, generated config и все backups.
- CLI не принимает URI в argv.
- Dataclass скрывает credentials из
repr(). - Ошибки parser не включают исходное значение.
- diff заменяет secret values на
<REDACTED>. - state хранит только SHA-256 source/config и безопасный endpoint label.
- Policy/URI/config/state/backups имеют
root:root 0600, каталоги —root:root 0700;doctorпроверяет этот ограниченный набор объектов. - subprocess вызывается массивом аргументов без shell.
После попадания действующего URI в чат, issue, shell history или journal оба credential следует перевыпустить.
Fail closed
До изменения production проверяются:
- policy schema;
- URI syntax и поддерживаемые параметры;
- точная версия,
with_quicиwith_gvisorдляstack=mixed; - deterministic candidate;
sing-box check.
Неизвестные параметры никогда не игнорируются. Production bypass для другой версии отсутствует.
Anti-leak
Отдельная таблица inet vpn_egress_guard отклоняет forwarding с eth1 напрямую
на eth0. Она не принадлежит sing-box и остаётся отдельной от динамической
таблицы inet sing-box.
Guard запускается до sing-box. Drop-in sing-box.service одновременно задаёт
requirement и ordering dependency: ошибка запуска guard блокирует sing-box.
Остановка, удаление guard unit или ручное изменение его nftables-таблицы является
security-sensitive операцией и не выполняется CLI автоматически.
Имена интерфейсов поступают из уже провалидированного policy, subprocess не использует shell, а замена таблицы выполняется одной nft batch-транзакцией.
Healthcheck
HTTPS healthcheck подтверждает локальную post-activation связность шлюза, но не
весь forwarded path eth1 -> TUN -> HY2. Он раскрывает проверочному endpoint факт
обращения с VPN egress IP. URL можно заменить внутренним контролируемым endpoint.
Отключение URL ослабляет проверку до состояния systemd.
Ограничения URI 1.13.19
pinSHA256 не преобразуется в certificate_public_key_sha256, потому что это
разные fingerprint semantics. ech не преобразуется без проверенного PEM/config
list adapter. Silent downgrade TLS запрещён.