Skip to content

Releases: UncleStephenCode/OpenShield

v0.2.4

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 07 Sep 08:31

OpenShield v0.2.4 — дерево правил и групповое управление

Интерфейс

  • Исходящие правила представлены деревом cgroup → исполняемые файлы.
  • Выбор cgroup показывает все правила группы, выбор вложенного пути — только правила соответствующего приложения.
  • Исправлено выравнивание счётчиков трафика с учётом Unicode, больших чисел и узких терминалов.
  • Добавлена клавиша g для управления выбранной группой: удаление, Accept, Reject, Drop, включение и выключение.

Безопасность групповых операций

  • Изменения доступны только root и требуют подтверждения.
  • Группа и ревизия политики фиксируются при открытии меню. Устаревшая команда отклоняется без автоматического повтора.
  • Изменения применяются одной транзакцией с сохранением существующего механизма отката и fail-closed защиты.
  • Входящие правила и правила других групп не затрагиваются.
  • Accept/Reject/Drop сохраняют состояние enabled/disabled.

Важно: включение группы активирует также отключённые шаблоны приложений, которые могут разрешать неограниченный исходящий доступ. В интерфейс добавлено предупреждение.

Документация и проверки

  • Дополнены все 31 ресурс локализации.
  • Обновлена документация на русском и английском.
  • Пройдены 545 Rust-тестов, форматирование и Clippy.
  • В контейнерах Tumbleweed x86_64 проверены установка RPM, групповые операции и реальный TCP/UDP-трафик с nftables и iptables fallback.

Обновление

Обновляйте демон и TUI вместе: предыдущая сборка демона не поддерживает новую команду группового управления.

v0.2.3

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 07 Sep 04:39

OpenShield v0.2.3 — дерево правил и групповое управление

Интерфейс

  • Исходящие правила представлены деревом cgroup → исполняемые файлы.
  • Выбор cgroup показывает все правила группы, выбор вложенного пути — только правила соответствующего приложения.
  • Исправлено выравнивание счётчиков трафика с учётом Unicode, больших чисел и узких терминалов.
  • Добавлена клавиша g для управления выбранной группой: удаление, Accept, Reject, Drop, включение и выключение.

Безопасность групповых операций

  • Изменения доступны только root и требуют подтверждения.
  • Группа и ревизия политики фиксируются при открытии меню. Устаревшая команда отклоняется без автоматического повтора.
  • Изменения применяются одной транзакцией с сохранением существующего механизма отката и fail-closed защиты.
  • Входящие правила и правила других групп не затрагиваются.
  • Accept/Reject/Drop сохраняют состояние enabled/disabled.

Важно: включение группы активирует также отключённые шаблоны приложений, которые могут разрешать неограниченный исходящий доступ. В интерфейс добавлено предупреждение.

Документация и проверки

  • Дополнены все 31 ресурс локализации.
  • Обновлена документация на русском и английском.
  • Пройдены 545 Rust-тестов, форматирование и Clippy.
  • В контейнерах Tumbleweed x86_64 проверены установка RPM, групповые операции и реальный TCP/UDP-трафик с nftables и iptables fallback.

Обновление

Обновляйте демон и TUI вместе: предыдущая сборка демона не поддерживает новую команду группового управления.

v0.2.2

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 06 Sep 17:23

OpenShield v0.2.2 — дерево правил и групповое управление

Интерфейс

  • Исходящие правила представлены деревом cgroup → исполняемые файлы.
  • Выбор cgroup показывает все правила группы, выбор вложенного пути — только правила соответствующего приложения.
  • Исправлено выравнивание счётчиков трафика с учётом Unicode, больших чисел и узких терминалов.
  • Добавлена клавиша g для управления выбранной группой: удаление, Accept, Reject, Drop, включение и выключение.

Безопасность групповых операций

  • Изменения доступны только root и требуют подтверждения.
  • Группа и ревизия политики фиксируются при открытии меню. Устаревшая команда отклоняется без автоматического повтора.
  • Изменения применяются одной транзакцией с сохранением существующего механизма отката и fail-closed защиты.
  • Входящие правила и правила других групп не затрагиваются.
  • Accept/Reject/Drop сохраняют состояние enabled/disabled.

Важно: включение группы активирует также отключённые шаблоны приложений, которые могут разрешать неограниченный исходящий доступ. В интерфейс добавлено предупреждение.

Документация и проверки

  • Дополнены все 31 ресурс локализации.
  • Обновлена документация на русском и английском.
  • Пройдены 545 Rust-тестов, форматирование и Clippy.
  • В контейнерах Tumbleweed x86_64 проверены установка RPM, групповые операции и реальный TCP/UDP-трафик с nftables и iptables fallback.

Обновление

Обновляйте демон и TUI вместе: предыдущая сборка демона не поддерживает новую команду группового управления.

v0.2.1

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 06 Sep 15:16

OpenShield v0.2.1 — дерево правил и групповое управление

Интерфейс

  • Исходящие правила представлены деревом cgroup → исполняемые файлы.
  • Выбор cgroup показывает все правила группы, выбор вложенного пути — только правила соответствующего приложения.
  • Исправлено выравнивание счётчиков трафика с учётом Unicode, больших чисел и узких терминалов.
  • Добавлена клавиша g для управления выбранной группой: удаление, Accept, Reject, Drop, включение и выключение.

Безопасность групповых операций

  • Изменения доступны только root и требуют подтверждения.
  • Группа и ревизия политики фиксируются при открытии меню. Устаревшая команда отклоняется без автоматического повтора.
  • Изменения применяются одной транзакцией с сохранением существующего механизма отката и fail-closed защиты.
  • Входящие правила и правила других групп не затрагиваются.
  • Accept/Reject/Drop сохраняют состояние enabled/disabled.

Важно: включение группы активирует также отключённые шаблоны приложений, которые могут разрешать неограниченный исходящий доступ. В интерфейс добавлено предупреждение.

Документация и проверки

  • Дополнены все 31 ресурс локализации.
  • Обновлена документация на русском и английском.
  • Пройдены 545 Rust-тестов, форматирование и Clippy.
  • В контейнерах Tumbleweed x86_64 проверены установка RPM, групповые операции и реальный TCP/UDP-трафик с nftables и iptables fallback.

Обновление

Обновляйте демон и TUI вместе: предыдущая сборка демона не поддерживает новую команду группового управления.

v0.2.0

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 05 Sep 04:57

OpenShield v0.2.0 объединяет развитие проекта из версий v0.1.29–v0.1.32: переработанный интерфейс управления правилами, адаптивные уровни обработки трафика, оптимизированную fail-closed атрибуцию приложений и воспроизводимый performance gate для nftables и резервного iptables.

Новый интерфейс управления правилами

  • TUI разделён на вкладки состояния, исходящих правил, входящих правил, событий и справки.
  • Исходящие правила группируются по приоритету:
    1. cgroup v2;
    2. проверенный путь исполняемого файла;
    3. адрес назначения.
  • В правой панели показываются протокол, адрес, порт, интерфейс, аргументы запуска, UID, идентичность версии файла, источник правила, UUID и временные метки.
  • Группировка влияет только на отображение: каждое правило сохраняет собственный UUID и независимую семантику.
  • Добавлена отдельная вкладка входящих разрешений с выбором источника/CIDR, локального порта, интерфейса и протокола.
  • Входящий трафик по-прежнему запрещён по умолчанию.
  • Исправлены сообщения об успешном создании, изменении и удалении правил.
  • Вместо неясного состояния «Подписка» отображается фактический backend: nftables или iptables.

Адаптивные уровни обработки

StatusV2 показывает фактически используемый тракт:

  • L3 KernelNativeBlockAll либо Enforcing без правил, привязанных к приложениям.
  • L2 ConntrackHybrid — application-bound TCP: первое соединение проходит NFQUEUE-атрибуцию, established TCP использует conntrack-generation fast path.
  • L1 NfqueueLearning, application-bound UDP, ICMP, ICMPv6 и правила Any, требующие повторной атрибуции.
  • Unknown — прежняя версия протокола или непроверенное состояние.

Уровень обработки не изменяет строгость правил. nftables остаётся предпочтительным backend, а iptables/ip6tables используется только как проверенный fallback. Собственный модуль ядра, eBPF, CAP_BPF, MOK или изменение Secure Boot не требуются.

Производительность и безопасность

  • Добавлен ограниченный SOCK_DIAG-поиск сетевого сокета.
  • NFQUEUE обрабатывает микрооперации до 32 уже готовых пакетов без ожидания заполнения.
  • Для каждого пакета сохраняется отдельный SOCK_DIAG; совместно используются только ограниченные снимки владельцев /proc.
  • На пакетную операцию действует единый fail-closed срок 250 мс.
  • Кеш решений между пакетными операциями не используется.
  • Неопределённая идентичность, тайм-аут или превышение лимитов приводят к запрету пакета.
  • UDP, ICMP и ICMPv6 продолжают повторную атрибуцию для каждого иначе не совпавшего пакета.
  • Терминальные ошибки NFQUEUE переводят демон в наблюдаемый карантин EmergencyBlockAll.
  • Сохранение обученных правил выполняется двухфазно и не удерживает блокировку движка во время fsync.
  • Наблюдение за nftables получает таблицы, цепочки и счётчики одним процессом nft за цикл.

Нагрузочный стенд и release gate

В tests/perf реализовано тестирование настоящими сокетами и процессами:

  • baseline без OpenShield;
  • network-only правила;
  • application-bound TCP;
  • application-bound UDP;
  • режимы Enforcing и Learning;
  • nftables и iptables fallback;
  • входящий HTTP с keep-alive и короткими соединениями;
  • исходящий TCP;
  • UDP streaming и high-PPS профили с пакетами 128–512 байт;
  • фазы warm-up, ramp, steady-state и burst.

Собираются throughput, PPS, CPS, concurrency, latency p50/p95/p99, CPU/RSS демона, retransmits, packet loss, softirq, conntrack, NIC drops и ошибки NFQUEUE. Результаты сохраняются в JSON, CSV и Markdown.

Релиз блокируют:

  • падение throughput/PPS более чем на 10%;
  • нарушение абсолютных лимитов CPU/RSS или задержки;
  • drops и ошибки NFQUEUE;
  • fail-open;
  • несостоятельность baseline или насыщение генератора/peer.

Относительные CPU/latency-регрессии временно остаются диагностическими в CI-профиле, но продолжают блокировать production-like профиль.

Проверенный результат v0.1.32

Сохранённый локальный performance gate прошёл для nftables и iptables:

  • 36 групп сравнения;
  • 108 независимых AB/BA-пар;
  • 276 записей метрик;
  • худшее среднее падение throughput: 0,407%;
  • худшее падение PPS: 0,527%;
  • пиковый CPU демона: 26,78% одного ядра;
  • пиковый RSS: 7,66 МиБ;
  • пиковая p99 задержка запроса: 2,717 мс;
  • drops, NFQUEUE errors и fail-open не обнаружены;
  • все четыре проверки контролируемой перегрузки подтвердили fail-closed и восстановление.

Эти результаты относятся к точным артефактам v0.1.32 и не заменяют запуск release workflow для v0.2.0.

Локализация и документация

  • Поддерживается 31 отдельный файл локализации.
  • Проверяются полнота ключей, параметры подстановки и отсутствие скрытого массового fallback на английский.
  • Обновлены английские и русские README, архитектура, модель угроз, аудит безопасности, документация упаковки и совместимости.
  • Автоматическая проверка переводов не заменяет последующую проверку носителями языков.

Важное замечание для серверов

Новая установка запускается в режиме Learning, но входящий трафик запрещён по умолчанию. Перед удалённой установкой следует заранее обеспечить правило для административного доступа либо иметь локальную консоль или независимый out-of-band канал.

v0.1.32

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 05 Sep 03:19

v0.1.32

v0.1.31

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 04 Sep 14:29

v0.1.31

v0.1.30

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 04 Sep 09:06

v0.1.30

v0.1.29

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 04 Sep 04:02

v0.1.29

v0.1.28

Choose a tag to compare

@UncleStephenCode UncleStephenCode released this 03 Sep 11:03

Highlights

  • Unified build and packaging matrices without separate jobs for individual distributions.
  • 43 binary builds and 43 packages across supported architecture families.
  • Package installation validation for 86 distribution and architecture combinations.
  • 172 mandatory firewall E2E jobs: separate nftables and iptables/ip6tables scenarios for every platform.

Supported platforms

The release matrix covers Debian, Ubuntu, Fedora, Rocky Linux, AlmaLinux, openSUSE Leap, openSUSE Tumbleweed, Alpine Linux, and Arch Linux.

Supported architectures include:

  • AMD64/x86-64
  • x86/386
  • ARMv5, ARMv6, and ARMv7
  • ARM64/AArch64
  • PowerPC64LE
  • RISC-V 64
  • IBM Z/s390x

AMD64 and ARM64 use native GitHub-hosted runners. Other architectures use x86 compatibility mode or digest-pinned Cross/QEMU environments.

Testing improvements

  • Every binary is checked for its expected ELF architecture and static linkage.
  • Every package is installed using the target distribution’s native package manager.
  • Every platform runs complete Learning → Enforcing scenarios with both nftables and the iptables fallback.
  • Application-aware TCP and UDP rule matching is tested under QEMU using a dedicated static native client.
  • Package tests verify metadata, architecture, version, filesystem layout, permissions, system integration, and executable identity.
  • The Rust workspace passes all 262 unit tests.

Fixed

  • Fixed Alpine package version validation with apk-tools 3.
  • Added an explicit per-file APK manifest to avoid unsafe or unintended package contents.
  • Fixed package tests on minimal openSUSE Tumbleweed images by installing gawk.
  • Added complete iptables-only coverage for Alpine, Arch Linux, and Tumbleweed.
  • Removed the dependency on the disallowed docker/setup-qemu-action.

Release security

  • GitHub Actions and container images are pinned to immutable revisions or SHA-256 digests.
  • Cross compiler images are validated as digest-pinned inputs.
  • QEMU registration uses a dedicated fail-closed script and is restricted to ephemeral GitHub-hosted runners.
  • Publication requires complete installation and firewall-test evidence for every matrix entry.
  • Release assets, evidence manifests, and checksums are verified before publication.
  • Existing release assets are never silently overwritten.

QEMU results provide emulation evidence and do not represent certification on physical hardware.