- kit update ставит только релизы, у которых SHA256SUMS подписан ключом автора (ssh-keygen -Y verify), версия внутри подписи совпадает, файлы сошлись с хешами; откат на старую версию запрещён; после обновления проверяется подписка, иначе возврат - автообновление: systemd-таймер раз в сутки ночью со случайной задержкой, kit update --manual / --auto, журнал /var/log/kit-update.log - hy2 update тоже проверяет подпись - tools/release.sh: проверка версий и хеша установщика 3X-UI, SHA256SUMS и подпись - kit backup и 3x-ui.sh --restore: архив 600, строгая проверка архива, конфиги nginx и kit-sub собираются заново, смена IP в подключениях - сайт-заглушка: случайный из шести шаблонов внутри скрипта - zashboard закреплён на v3.29.1, короткие тире и 192.168.x.x в текстах и картинках - CI: ключ подписи одинаковый в kit и hy2, проверка подписи релиза - CHANGELOG, README, инструкция, SECURITY.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
77 lines
7.1 KiB
Markdown
77 lines
7.1 KiB
Markdown
# Что нового
|
||
|
||
## v1.1: kit сходил к аудитору, сдал анализы и теперь не доверяет никому, даже GitHub
|
||
|
||
Подписчик прислал нам полноценный аудит безопасности. Мы почитали, покраснели и всё починили.
|
||
Спасибо: такие письма лучше любых звёзд на GitHub (но звёзды тоже ставьте).
|
||
|
||
**Безопасность**
|
||
|
||
- **Hysteria2 больше не верит на слово.** Почта, адрес сервера и сайт маскировки теперь проверяются
|
||
строго, а в файл настроек пишутся с экранированием. Раньше особо изобретательная почта могла
|
||
выполниться как команда. Теперь `me@gmail.com;rm -rf` получит вежливый отказ.
|
||
- **Установщик 3X-UI сверяем по отпечатку.** Мы закрепили не только версию, но и SHA256 файла.
|
||
Если на GitHub кто-то подменит установщик, скрипт посмотрит на него как на незнакомца в чате
|
||
с «выгодным предложением» и запускать не станет.
|
||
- **Hysteria проверяется нашим ключом, а не чужим.** Контрольная сумма бинарника теперь записана
|
||
в сам скрипт, а не скачивается из того же места, что и бинарник. Проверять человека по
|
||
справке, которую он же и принёс, так себе идея.
|
||
- **Всё качаем из релиза, а не из черновиков.** `kit`, `kit-sub` и `hy2 update` берут файлы
|
||
из тега версии, а не из ветки `main`, которая может поменяться посреди установки.
|
||
- **Подписка больше не root.** `kit-sub` работает от временного пользователя без прав: конфиг
|
||
и сертификат ему выдаёт systemd на время работы. Даже если его взломают, ключей от сервера
|
||
у него нет.
|
||
- **Меню x-ui оставили в покое.** Больше не переписываем чужие файлы по расписанию, только
|
||
один раз при установке.
|
||
- **Строгие имена.** Параметры `--sni` и `--host` у установщика 3X-UI тоже проверяются.
|
||
- **Веб-панель Mihomo на роутере закреплена.** Генератор больше не ставит на роутер «последнюю»
|
||
версию zashboard, а только ту, которую мы видели в лицо (v3.29.1).
|
||
|
||
**Для тех, кто хочет проверить сам**
|
||
|
||
- В README появилась установка с проверкой: скачать, прочитать, сверить SHA256, запустить.
|
||
- `SECURITY.md`: как сообщить об уязвимости, не публикуя её на весь интернет.
|
||
- Проверка кода на каждый коммит: ShellCheck, Python, тесты генераторов.
|
||
|
||
**Обновления приходят сами, но только с нашей печатью**
|
||
|
||
- Раньше, чтобы получить исправление, приходилось сносить всё и раздавать ссылки заново.
|
||
«Мам, удали старый VPN, вот новый» больше не повторится.
|
||
- Раз в сутки ночью сервер сам проверяет, не вышла ли новая версия, и обновляет kit и подписку.
|
||
Пользователи, ссылки и подписки остаются прежними. Панель 3X-UI и Xray не трогаем.
|
||
- Каждый релиз подписан ключом автора, а открытая часть ключа уже лежит на вашем сервере.
|
||
Подпись не сошлась? Сервер вежливо отказывается. Даже если взломают GitHub, чужое обновление
|
||
не встанет: для этого нужен ещё и ключ, а он не в облаке, а у автора.
|
||
- Откатить сервер на старую версию под видом новой тоже не выйдет: номер версии внутри подписи.
|
||
- После обновления сервер проверяет, что подписка отвечает. Не отвечает – возвращает прежнюю
|
||
и пишет об этом в журнал `/var/log/kit-update.log`.
|
||
- Не любите сюрпризы? `kit update --manual`, и обновляться будете сами, командой `kit update`.
|
||
|
||
**Переезд без боли: `kit backup`**
|
||
|
||
- `kit backup` складывает в один файл всё, что нужно серверу: подключения, ключи, пользователей,
|
||
настройки подписки. `--restore` поднимает из него тот же сервер на новом VPS.
|
||
- Хостер поднял цены или IP попал в немилость? Переезжаете за 5 минут, а на домене клиенты
|
||
вообще ничего не заметят.
|
||
- Копия восстанавливается только из вашего файла и сначала проходит досмотр: лишние файлы
|
||
и хитрые пути внутри архива, и восстановление не начнётся.
|
||
|
||
**Заглушка с характером**
|
||
|
||
- На случайный заход сервер теперь показывает один из шести сайтов: кофейню, фотографа, блог
|
||
про Linux и других. Выбирается при установке, так что тысячи серверов 3X-UI KIT больше
|
||
не выглядят как близнецы. Всё лежит внутри скрипта, ничего не качаем со сторонних сайтов.
|
||
|
||
**Как обновиться**
|
||
|
||
- Сервер 3X-UI KIT из версии 1.0 (там ещё нет `kit update`), один раз:
|
||
`curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/v1.1/scripts/kit.sh -o /usr/local/bin/kit && chmod 755 /usr/local/bin/kit && kit update`
|
||
- Дальше обновления будут приходить сами.
|
||
- Hysteria2: `hy2 update` (тоже проверяет подпись).
|
||
- Новые установки получают всё сразу.
|
||
|
||
## v1.0
|
||
|
||
Первая версия: 11 протоколов одной командой, всё через 443, одна подписка на все приложения,
|
||
пользователи через `kit user`, генераторы конфигов для XKeen.
|