Wiresharkを一般ユーザで実行(ラズパイ編)


1. 一般ユーザでパケットキャプチャしたい!

ラズパイで、Wiresharkをrootで実行すると、パケットキャプチャ実行やキャプチャファイルの移動&共有できない...
そこで今回は、ラズパイでWiresharkの権限変更をしました。
(RaspberryPi 3B, Raspbian Strech使用)

2. 初期状態

一般ユーザでwiresharkをターミナル実行すると、無線LANなどInterfaceが表示されませんでした。

3.解決方法

3.1 dumpcapのケーパビリティの設定

terminal
pi@raspberrypi:~ $ sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap

<<コマンドの意味>>
(1)setcap
「set file capabilities」の略で、ファイル機能の設定ができるコマンド

setcap [-q] -v filename [ ... capabilitiesN fileN ]
引用元 : die.net「setcap(8) - Linux man page」

(2)CAP_NET_RAW

RAWソケットとPACKETソケットの使用を許可する
引用元:atmarkIT 第3回 権限を最小化するLinuxカーネルケーパビリティ

(3)CAP_NET_ADMIN

さまざまなネットワークに関係する操作(ルーティングテーブルの変更など)を許可する
引用元:atmarkIT 第3回 権限を最小化するLinuxカーネルケーパビリティ

3.2 setcapで設定したケーパビリティを確認

terminal
pi@raspberrypi:~ $ sudo getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

3.3 一般ユーザをWireshark実行グループに追加

私の場合は、ラズパイにwiresharkをインストールした時点で、
「wireshark」というWiresharkの実行権限を持つグループがあったので、
新規でグループは作りませんでした。

terminal
pi@raspberrypi:~ $ sudo adduser pi wireshark

3.4 ラズパイ再起動

terminal
pi@raspberrypi:~ $ reboot

3.5 wireshark起動

terminal
pi@raspberrypi:~ $ wireshark

4.実行結果

Interfaceが表示・認識されるようになりました!