
OpenSnitch – ручной контроль сетевой активности Linux приложений
Приветствую!
OpenSnitch – это настольное open source приложение, способное блокировать исходящие запросы различных программ с выводом уведомлений на рабочем столе🔔. В этой заметке мы рассмотрим установку, запуск и демонстрацию работы OpenSnitch в дистрибутиве Linux Mint 22🐧.
Подписывайтесь на наш телеграм @r4ven_me📱, чтобы не пропустить новые публикации на сайте😉. А если есть вопросы или желание пообщаться по тематике – заглядывайте в Вороний чат @r4ven_me_chat🧐.
Предисловие
Некоторые вводные данные по программе OpenSnitch📑:
Характеристика | Значение |
---|---|
Платформа | Linux |
Дистрибутив (среда выполнения в статье) | Linux Mint 22 |
Обозреваемая версия OpenSnitch | 1.5.8 |
Написан на | Python, Go, C, Qt |
Категория ПО | Сетевые экраны |
Методы контроля сетевого трафика | proc или ebpf или auditd |
Файл журнала | /var/log/opensnitchd.log |
OpenSnitch является инструментом информационной безопасности, который позволяет значительно повысить степень контроля над вашей системой (а мы такое любим😌). Проект вдохновлен аналогичным для MacOS: Little Snitch.

Программа OpenSnitch работает в режиме сервиса/демона, управление которым осущесвляется через настольное GUI приложение.
Основная концепция: при попытке какой-либо пользовательской программы/утилиты выполнить запрос на сетевой ресурс (в т.ч. в интернет), OpenSnitch заблокирует его и выведет графическое информационное уведомление. В зависимости от принятого решения (разрешить, запретить или бездействовать) создается правило фильтрации, которое потом можно изменить/удалить, а при необходимости гибко настроить. Также новые правила можно создавать и вручную.
На первых парах использования, OpenSnitch может показаться излишним, в плане контроля, т.к. при каждом чихе любая сетевая активность будет подвергнута аудиту с выводом уведомления и по умолчанию заблокирована🔒.
Но по опыту скажу, достаточно один раз, в течение короткого периода сформировать список правил доступа для своих приложений: нужное разрешить, а не нужное продать запретить и OpenSnitch перестанет вас часто беспокоить😴.
За то вы будете уверены, что если некая проприетарная программа попытается отправить данные на сторонние сервера, вы об этом узнаете. А если пропустите уведомление, то применится политика по умолчанию – из коробки это правило запрета.
Привычку пользоваться подобным софтом я выработал еще будучи пользователем Windows🪟. К слову там я использовал аналогичный open source инструмент, под названием Simpelwall (потому что в винде даже блокнот зачем-то лезет в интернет😡). Принцип работы у Simpelwall похожий на OpenSnitch: блокировка соединений с показом уведомлений💬.

Как это работает?
OpenSnitch предлагает на выбор один из 3-х методов контроля сетевых подключений (указывается в настройках):
- proc – метод чекает сетевые соединения через системные файлы:
/proc/net/tcp
и/proc/net/udp
, связывая их с процессами по PID. Этот метод прост в использовании и может работать на большинстве систем, но обновление/proc
может происходить с задержкой, что снижает точность и не всегда позволяет заблокировать соединение до его установления.
- ebpf (рекомендуемый) – чаще всего это метод по умолчанию, который использует механизм eBPF в ядре Linux для перехвата системных вызовов (SOCKET_CONNECT) до установления соединения. По заявлению разработчиков этот метод обеспечивает высокую производительность, точность и минимальную нагрузку на систему, но требует современного ядра (5.x+).
- audit – метод записывает сетевые события через службу аудита Linux —
auditd
. Он позволяет вести детальный аудит сетевой активности, но может работать с задержкой и создаёт дополнительную нагрузку на систему, т.к. работает через сервис-посредника.
Стоит также отметить, что проект OpenSnitch активно развивается👌 и в последних версиях добавлено много чего интересного, например:
- Блокировка рекламы и трекеров по спискам доменов (с версии 1.4.0)
- Возможность управления системным фаерволом: Nftables (с версии 1.6.0)
- Интеграция с системами сбора и аудита событий (SIEM) (с версии v1.6.0): Syslog, Grafana+Loki+Promtail или ElasticSearch+LogStash+Kibana
- Организация централизованного сервера для управления другими нодами OpenSnitch с помощью того же GUI с защитой соединений по TLS (с версии 1.6.1)
- и т.д.
Выглядит многообещающе, но оставим эти возможности для будущих материалов😇, а сегодня рассмотрим только базовый функционал.
Установка OpenSnitch
Данная программа есть в стандартных репозиториях Linux Mint / Ubuntu / Debian. Поэтому просто открываем терминал, обновляем кэш пакетов и выполняем установку:
sudo apt update && sudo apt install -y opensnitch
Проверить установленную версию OpenSnitch можно так:
opensnitchd --version
Если вам нужна более свежая версия ищите ее на странице релизов. Необходимо скачать 2 файла: демон —
opensnitch_<версия>_amd64.deb
и GUI —python3-opensnitch-ui_<версия>_all.deb
.
В системе должно появиться два исполняемых файла: opensnitchd
и opensnitch-ui
. Первый, как понятно из названия — сервис/демон, который запускается в фоне с помощью системы инициализации systemd. Проверить статус можно такой командой:
systemctl status opensnitch
Сервис должен быть запущен, а его автозапуск включен:
Если это не так, выполните команду:
sudo systemctl enable --now opensnitch
Обратите внимание, что для выполнения команды выше необходимы привилегированные права sudo.
Эта команда делает сразу два действия: запускает сервис и активирует его автозапуск при старте системы.
Автостарт же графического интерфейса (свернутого в трей) обеспечивается с помощью системного .desktop
файла в директории /etc/xdg/autostart
:
cat /etc/xdg/autostart/opensnitch_ui.desktop
Отключить автозапуск GUI (и сам OpenSnitch) можно в соответсвующем разделе настроек системы:
Запуск и обзор GUI
Первый запуск графического интерфейса OpenSnitch можно выполнить через меню приложений:
В системном трее появится иконка приложения. А также, вероятнее всего, вы сразу увидите его в действии: при любой сетевой активность пользовательского сеанса всплывет окно-уведомление:
В примере выше программа синхронизации файлов syncthing пытается подключиться к TCP порту 8080
по адресу 127.0.0.1
.
Тут нам в течение 30 секунд предлагается создать правило, разрешающее или запрещающее сетевой доступ к указанному ресурсу.
Как видно на скриншоте выше, доступны следующие параметры для правила:
Тип запрса | – от исполняемого файла – от конкретной команды – на конкретный сетевой адрес или подсеть – на конкретный сетевой порт – от конкретного пользователя – по ID процесса (PID) |
Время действия правила | – до перезагрузки системы – единожды – навсегда – на какой-то период |
Действие правила | – разрешить соединение – запретить соединение |
Если до истечения теймера не выбрать действие, будет применена политика по умолчанию. Из коробки это: запретить любой сетевой доступ от исполняемого файла до следующей перезагрузки системы. Данное поведение можно легко изменить в настройках прграммы, про которые поговорим ниже.
⚠️Важно понимать, что контроль сетевого доступа будет осуществляться для всех программ и утилит (в т.ч. консольных). Поэтому на первых парах рекомендую внимательно изучать, что именно и куда пытается получить доступ.
Например, на скрине ниже видно, что утилита службы разрешения имен systemd-resolvd
пытается обратиться к DNS серверу по стандартному порту 53
:
Для подобных системных запросов лучшие сразу создавать постоянные правила с привязкой к исполняемому файлу, чтобы уменьшить количество срабатываний нервов в будущем.
При клике по иконке OpenSnitch в системном трее откроется основное окно программы. Обратите внимание, что в верхнем углу справа↗️ есть кнопка остановки работы OpenSnitch:
Интерфейс программы разделен на вкладки📑, далее вкратце рассмотрим каждую из них.
Вкладка “События”
Этот раздел представляет собой журнал всех зафиксированных сетевых соединений:
- какой процесс инициировал соединение;
- с каким IP-адресом или доменом установлено соединение;
- какой протокол и порт использовался (например TCP/UDP, порт 80, 443 и т. д.);
- примененное правило (разрешено/заблокировано).
Здесь удобно анализировать текущие подключения и выявлять подозрительную активность🔍.
💡В нижней части каждого раздела доступен контекстный поиск/фильтр.
Вкладка “Узлы”
Отображает список локальных и удалённых узлов, которые контролирует OpenSnitch:
В нашем примере тут только наша локальная нода. При использовании OpenSnitch в качестве централизованного сервера, тут будут отображаться подконтрольные узлы (про это будет отдельная заметка).
Если “провалиться внутрь” выбранного узла с помощью двойного клика, мы увидим подробности его сетевой активности:
Вкладка “Правила”
Самый важный раздел. Тут указаны все правила фильтрации трафика OpenSnitch:
Что тут можно делать:
- создавать новые правила редактировать существующие;
- гибко настраивать параметры о которых я говорил выше;
- выполнять поиск/фильтрацию правил по приложениям, портам, узлам и пользователям, когда правил много;
При двойном клике по выбранному правилу, мы попадем в раздел, где показана сетевая активность, связанная с ним. Тут же при нажатии кнопки редактирования (в верхнем углу слева) можно изменить условия его работы:
Вкладка “Хосты”
На этой вкладке показан список доменных имен, с которыми система устанавливала соединения, а также количество таких соединений:
При двойном клике по хосту, можно посмотреть, какие программы с ним взаимодействовали:
Вкладка “Приложения”
Тут указан список всех программ/утилит, которые выходили в сеть и количество таких попыток.
При двойном клике по выбранной программе откроется таблица ее сетевой активности. А при нажатии кнопки обзора (иконка лупы) можно посмотреть детали процесса: открытые файлы, I/O статистику, используемые переменные среды и т.д.:
Вкладка “Адреса”
На этой вкладке ожидаемо показаны все IP адреса хостов, с которыми взаимодействовали ваши приложения:
Двойной клик адресу позволит посмотреть связанную с ним статистику:
Вкладка “Порты”
В этом разделе представлен список задействованных в системе сетевых портов и количество обращений к ним:
Аналогично вкладке “Адреса” по двойному клику мыши можно посмотреть подробности, связанные с приложениями, которые обращались на указанный порт:
Вкладка “Пользователи”
Ну а здесь указан список пользователей-владельцев процессов, которые активно используют сеть:
Аналогичным образом при дабл клике по пользователю можно увидеть связанные с ним процессы и их сетевую активность:
Настройки программы
Осталось рассмотреть раздел настроек OpenSnitch:
Тут можно изменить параметры работы программы:
- Режим работы: можно выключить интерактивный режим (уведомление пользователя при каждом новом соединении) и использовать автоматический (применение параметров по умолчанию);
- Параметры по умолчанию: можно определить тип запроса, действие и длительность правила;
- Логирование: настроить уровень детализации логов, указать файл лога (по умолчанию
/var/log/opensnitchd.log
); - Метод контроля: выбрать метод между
proc
,auditd
илиeBPF
(eBPF более эффективен и рекомендуем для современных систем); - База данных: настроить хранение событий в отдельном файле;
- и др.
Послесловие
Теперь в нашем арсенале +1 к паранойе комплексу защиты нашей системы🧑💻🛡️. Лично для меня OpenSnitch оказался очень удобным, гибким и эффективным способом отслеживать работу приложений, а также предотвращать нежелательную сетевую активность системы. Диву даешься, когда посмотришь на список процессов, пытающихся получить доступ в сеть😱.
Если данная заметка оказалась для вас полезной, то загляните в раздел Полезное ПО, возможно вас заинтересуют и другие мои материалы. Ну и конечно подписывайтесь на нашу телегу: @r4ven_me✈️ и чат там же: @r4ven_me_chat💬, чтобы не пропустить новые материалы на сайте.
Спасибо, что читаете! И берегите свою конфиденциальность🥷.