В рамках проекта OpenSnitch развивается динамический межсетевой экран для Linux
Как сообщает opennet.ru предложены для тестирования наработки проекта OpenSnitch, в рамках которого развивается открытый аналог проприетарного динамического межсетевого экрана Little Snitch. Приложение позволяет в интерактивном режиме контролировать сетевую активность пользовательских приложений и блокировать нежелательный сетевой трафик. Код проекта написан на языке Go (GUI на Python и PyQt5) и распространяется под лицензией GPLv3.
При обнаружении попыток установки приложением сетевых соединений, не подпадающих под ранее установленные разрешения, OpenSnitch выводит пользователю диалог с предложением принять решение о продолжении сетевой операции или блокирования сетевой активности. Программа позволяет создавать достаточно гибкие правила доступа, в которых можно учитывать приложения, пользователей, целевые хосты и сетевые порты. Разрешения могут создаваться как на постоянной основе, так и ограничиваться только текущим процессом или сеансом работы пользователя. OpenSnitch также позволяет вести статистку сетевой активности приложений и выполненных блокировок.
В основе OpenSnitch лежит написанный на языке Go фоновый процесс opensnitchd, который выполняется с правами root и взаимодействует с очередью пакетов Netfilter (libnetfilter-queue), вносит изменения в правила iptables и отслеживает сетевой трафик (libpcap). Лог работы процесса сохраняется в файле /var/log/opensnitchd.log, а база правил фильтрации размещается в /etc/opensnitchd/rules, правила хранятся в формате JSON. Отдельно в непривилегированном режиме выполняется интерфейс пользователя, который написан на языке Python 3 с использованием PyQt5. Интерфейс взаимодействует с управляющим процессом через unix-сокет с использованием протокола gRPC.