Доступны межсетевые экраны OpenSnitch 1.6.0 и firewalld 2.0

Опубликован выпуск проекта OpenSnitch 1.6, развивающего открытый аналог проприетарного динамического межсетевого экрана Little Snitch. Приложение позволяет в интерактивном режиме контролировать сетевую активность пользовательских приложений и блокировать нежелательный сетевой трафик. Код проекта написан на языке Go (GUI на Python и PyQt5) и распространяется под лицензией GPLv3. Для установки подготовлены пакеты в форматах rpm и deb.

OpenSnitch выводит пользователю диалог с предложением принять решение о продолжении сетевой операции или блокирования сетевой активности, в случае обнаружения попыток установки приложениями сетевых соединений, не подпадающих под ранее установленные разрешения. Программа позволяет задавать правила доступа, в которых можно учитывать приложения, пользователей, целевые хосты и сетевые порты. Доступ может предоставляться как на постоянной основе, так и ограничиваться только текущим процессом или сеансом работы пользователя.

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

В основе OpenSnitch лежит написанный на языке Go фоновый процесс opensnitchd, который выполняется с правами root и взаимодействует с очередью пакетов Netfilter (libnetfilter-queue), вносит изменения в правила nftables и отслеживает сетевой трафик (libpcap). Лог работы процесса сохраняется в файле /var/log/opensnitchd.log, а база правил фильтрации размещается в /etc/opensnitchd/rules, правила хранятся в формате JSON. Отдельно в непривилегированном режиме выполняется интерфейс пользователя, который написан на языке Python 3 с использованием PyQt5.

В новой версии:

  • В графическом интерфейсе появилась возможность настройки правил системного пакетного фильтра и политик доступа.
  • Добавлена поддержка интеграции с внешними платформами управления безопасностью (SEIM, Security information and event management) и системами мониторинга.
  • Улучшено определение имён процессов, файловых путей и пиктограмм приложений.
  • Улучшена интеграция с системными DNS-резолверами и клиенсткими DNS-библиотеками.
  • Добавлена поддержка расширенных правил фильтрации, позволяющих учитывать новые протоколы, сетевые интерфейсы, исходные порты и IP-адреса.
  • Добавлена поддержка импорта и экспорта правил для переноса настроек на другие системы через графический интерфейс.
  • Улучшена интеграция с пользовательскими окружениями.
  • Улучшен интерфейс централизованного управления другими хостами.


Дополнительно можно отметить выпуск динамически управляемого межсетевого экрана firewalld 2.0, реализованного в форме обвязки над пакетными фильтрами nftables и iptables. Firewalld запускается в виде фонового процесса, позволяющего динамически изменять правила пакетного фильтра через D-Bus, без необходимости перезагрузки правил пакетного фильтра и без разрыва установленных соединений. Проект уже применяется во многих дистрибутивах Linux, включая RHEL 7+, Fedora 18+ и SUSE/openSUSE 15+. Код firewalld написан на языке Python и распространяется под лицензией GPLv2.

Для управления межсетевым экраном используется утилита firewall-cmd, которая при создании правил отталкивается не от IP-адресов, сетевых интерфейсов и номеров портов, а от названий служб (например, для открытия доступа к SSH нужно выполнить “firewall-cmd –add –service=ssh”, для закрытия SSH – “firewall-cmd –remove –service=ssh”). Для изменения конфигурации межсетевого экрана также может использоваться графический интерфейс firewall-config (GTK) и апплет firewall-applet (Qt). Поддержка управления межсетевым экраном через D-BUS API firewalld имеется в таких проектах, как NetworkManager, libvirt, podman, docker и fail2ban.

Присвоение номера версии 2.0 связано с внесением изменений, нарушающих обратную совместимость и устраняющих проблему с обработкой правил, предписывающих обработку входящих пакетов только в привязке к одной зоне в ситуации пересечения диапазонов адресов с другими зонами (если диапазоны адресов в зонах перекрывались, то пакет мог попадать в несколько зон, в обход заданных правил).

Другие изменения:

  • Добавлена поддержка использования в nftables механизма выбора пути перенаправления пакетов flowtable, позволяющего существенно увеличить производительность перенаправления трафика.
  • Добавлена поддержка установки разных приоритетов для зон, позволяющих управлять порядком попадания пакетов в зоны.
  • Добавлена настройка NftablesCounters для использования счётчиков пакетов nftables.
  • Добавлены сервисы для поддержки Zabbix Java Gateway и Zabbix Web Service.
  • Добавлены сервисы c поддержкой игр Minecraft, 0AD, anno 1602, anno 1800, Civilization IV, Civilization V, factorio, Need For Speed: Most Wanted, Stellaris, Stronghold Crusader, Super Tux kart, Terraria, Zero K и Settlers.
  • Добавлен сервис для OpenTelemetry (OTLP).

Release. Ссылка here.