| Версия | Поддерживается |
|---|---|
| 3.3 | ✅ |
| 3.2 | |
| 3.1 | ❌ — обновитесь, критические баги в apt |
| 3.0 | ❌ — обновитесь, критические баги в apt |
| 2.x | ❌ |
| 1.x | ❌ |
Нашли уязвимость? Не открывайте публичный issue.
Напишите: создайте приватный issue / discussion в репозитории, или свяжитесь с мейнтейнером напрямую.
Опишите:
- что именно уязвимо
- как воспроизвести
- возможное влияние
Мы постараемся ответить в течение 7 дней.
Этот скрипт запускается с root-правами и:
- меняет sysctl / limits
- ставит пакеты через apt
- скачивает и исполняет внешние тест-скрипты
- ставит Docker
Что сделано для безопасности:
- Верификация внешних скриптов — HTTPS-only, TLS 1.2+, SHA256, ручное подтверждение
- Docker — официальный apt-репозиторий с GPG, не
curl | sh - UFW-manager — git clone + diff перед запуском
- Бэкапы — все
/etcфайлы бэкапятся перед изменением - IPv6 — не трогается по умолчанию, есть откат
- Sysctl — консервативный SAFE профиль по умолчанию
- APT: стоп при ошибке — v3.2: если
apt update/installупал, настройка прерывается, а не идёт дальше ставить Docker/sysctl на сломанной системе - APT: apt-lock wait — ждёт освобождения dpkg lock, защита от race с unattended-upgrades
- Docker GPG keyring — v3.3: при сбое загрузки ключа битый файл удаляется, а не остаётся молча "как будто рабочий" до следующего запуска
Что НЕ защищено:
- Тест-скрипты (yabs.sh, bench.sh и др.) — вы сами подтверждаете их запуск. Если автор скомпрометирован — вы запустите вредоносный код с root. Зашивайте SHA256 хэши, см.
docs/TESTS.md - UFW-manager — сторонний репозиторий, проверяйте
git diffперед запуском - apt-пакеты — доверяем Ubuntu / Docker репозиториям
- Скрипт сам по себе не подписан. Проверяйте SHA256
server-setup.shпри скачивании с GitHub
Исправлено в v3.3
install_docker_apt() проверял наличие ключа через [[ ! -f /etc/apt/keyrings/docker.gpg ]]. Если
curl не мог скачать ключ (нет сети, таймаут, DNS), gpg --dearmor всё равно создавал пустой
0-байтовый файл по указанному -o пути. При повторном запуске скрипт видел, что файл "уже существует",
и больше никогда не пытался его перекачать — apt-репозиторий Docker переставал получать обновления
без явного сообщения об ошибке в консоли.
Это не RCE и не даёт постороннему исполнить код, но приводит к тихой деградации: apt-get update
на репозитории Docker будет либо падать с NO_PUBKEY, либо (в худшем случае у некоторых версий apt)
молча игнорировать пакеты из этого источника.
Митигация: обновитесь до v3.3, либо вручную проверьте и, если нужно, пересоздайте ключ:
ls -la /etc/apt/keyrings/docker.gpg
# если 0 байт:
rm -f /etc/apt/keyrings/docker.gpg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgИсправлено в v3.2
APT_QUIETкак строка + глобальный IFS ломал аргументы apt, пакеты ставились некорректно- При ошибке apt скрипт продолжал выполнение, ставил sysctl, писал "Docker установлен" с пустой версией
- Нет проверки apt-lock — гонка с unattended-upgrades на свежей системе
- Нет диагностики — только "см. /var/log/server-setup.log"
CVE: нет. Это баг, не уязвимость, но приводил к частично настроенной системе с ложным "✅ Готово!".
Митигация: обновитесь до v3.2. Если гоняли v3.0/v3.1 — проверьте:
dpkg -l mc net-tools ncdu iftop docker-ce
sysctl net.ipv4.tcp_congestion_control
# должно быть: bbr
cat /etc/sysctl.d/99-server.conf
# должен быть только один файл, без дублей 99-server-safe.conf / 99-xray-highload.confИсправлено в v3.1
SAFE и HIGHLOAD писали в разные файлы, оба грузились одновременно sysctl --system.
Исправление: единый файл /etc/sysctl.d/99-server.conf, старые файлы авто-удаляются.
- Всегда читайте скрипт перед запуском с root
- Проверяйте SHA256 при скачивании:
sha256sum server-setup.sh # v3.3: 82c409a0af074cc2d62c0f4fcf38f483e5234a0cf236c77b4d29b6ab2f7e9195 - Зафиксируйте SHA256 хэши тест-скриптов в
run_multitest()после первого прогона - Используйте SAFE sysctl профиль, если не уверены что нужен HIGHLOAD
- Не запускайте на продакшене без снапшота / бэкапа
- Проверяйте
git log/git diffдля UFW-manager перед запуском - При ошибке apt — читайте хвост лога, который скрипт выводит в консоль (v3.2+), чините причину, запускайте снова
Скрипт скачивает код с:
download.docker.com— Docker GPG keygithub.com/vernette/censorcheckgithub.com/itdoginfo/russian-iperf3-serversyabs.shbench.shipregion.vrnt.xyzip.check.place / check.placegithub.com/Balbuto/ufw-manager
Все через HTTPS, с верификацией. Список может меняться — смотрите run_multitest() в актуальной версии.