Wireshark non-root
Wireshark - крайне распространённая программа для анализа сетевого трафика с открытым исходным кодом. Выпускается для ОС Linux, macOS и Windows. В ОС на базе Linux, по соображениям безопасности, нет возможности работать с сетевыми интерфейсами от имени обычного пользователя. Работа с сетевым трафиком возможна только от суперпользователя, что не всегда удобно. В этой статье разберём, как разрешить обычному пользователю анализ сетевых интерфейсов через Wireshark.
Установка
Есть два основных источника, из которых можно установить Wireshark - это репозитории ОС (в нашем случае - это Альт P10) и flatpak. Настройка доступа к сетевым интерфейсам для этих двух методов будет различаться. В данной статье ограничимся только первым вариантом. Для установки переходим в режим суперпользователя и устанавливаем программу:
$ su - # apt-get install wireshark
Настройка доступа к сетевым интерфейсам
Немного теории
Wireshark использует для перехвата сетевого трафика свою собственную утилиту dumpcap. Следовательно, для возможности перехвата трафика обычному пользователю, достаточно чтобы данная утилита и данный пользователь получили все необходимые права. Чтобы не создавать лишних рисков для безопасности, предлагается создать отдельную группу для пользователей, имеющих все необходимые права доступа к сетевым интерфейсам через dumpcap, и добавить туда нашего пользователя. При установке из репозиториев ОС данная утилита будет расположена в /usr/bin/dumpcap.
Настройка
Все нижеописанные действия выполняются от суперпользователя:
$ su -
Вначале, создадим ту самую группу для пользователей с правом доступа к сетевым интерфейсам через dumpcap, назовём её wireshark:
# groupadd wireshark
Затем, сделаем группу wireshark ответственной за dumpcap:
# chgrp wireshark /usr/bin/dumpcap
Настроим права доступа к dumpcap:
# chmod 754 /usr/bin/dumpcap
Для понимания, расшифруем 754: для владельца — чтение, запись и выполнение; для группы — чтение и выполнение; для всех остальных — только чтение.
Далее необходимо разрешить самой утилите dumpcap работать с raw-сокетами и управлять сетевыми настройками без root-доступа, посредством установки возможностей (capabilities):
# setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
Разберём данную команду: CAP_NET_RAW — работа с raw-сокетами (например, отправка ICMP-запросов); +eip — флаги; CAP_NET_ADMIN — выполнение административных сетевых операций (настройка интерфейсов, маршрутизация, firewall и т. д.). Добавим нашего пользователя в группу wireshark:
# usermod -aG wireshark user
Изменения вступят в силу после перезагрузки:
# reboot