- 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
7.1 KiB
7.1 KiB
Что нового
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.