Wireshark non-root

Материал из ALT Linux Wiki

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