以普通用戶權限運行tshark

 wireshark的命令行版本tshark是一個很好用的工具,對抓取的數據包有很強的解釋分析能力,還有基於協議、時間和會話的統計功能。

tshark抓取數據包需要root權限,但分析保存的數據包則沒有必要。更好的解決方法是使用dumpcap(也可以用tcpdump)將要分析的數據包dump出來,使tshark能以普通用戶權限載入這些數據包。這樣在抓取和分析數據包時,只有dumpcap(或tcpdump)這個程序需要root權限,相對要安全一些。

在linux kernel 2.6.24及以後的版本中,file POSIX capabilities功能已經完全可用,讓進程執行中的權限得到更有效的管理,其目標是使進程只擁有能正確執行的必要權限。下面我們會用到這一功能。

如果使用sudo執行tshark,會出現以下提示:

  1. test@localhost:~/test$ sudo tshark -i eth0 
  2. [sudo] password for test:  
  3. Running as user "root" and group "root". This could be dangerous. 
  4. Capturing on eth0 

解決辦法如下

1. 確認內核版本和參數支持file POSIX capabilities功能

  1. test@localhost:~/test$ uname -r 
  2. 2.6.32-30-generic 
  3.  
  4. test@localhost:~/test$ grep FILE_CAPA /boot/config-2.6.32-30-generic  
  5. CONFIG_SECURITY_FILE_CAPABILITIES=y 

2. 安裝dumpcap軟件

  1. test@localhost:~/test$ sudo apt-get install pcaputils 

3. 創建wireshark用戶

  1. test@localhost:~/test$ sudo useradd -s /usr/sbin/nologin wireshark 
  2.  
  3. test@localhost:~/test$ grep wireshark /etc/passwd 
  4. wireshark:x:1002:1002::/home/wireshark:/usr/sbin/nologin 

4. 更改dumpcap的用戶組

  1. test@localhost:~/test$ which dumpcap 
  2. /usr/bin/dumpcap 
  3.  
  4. test@localhost:~/test$ sudo chgrp wireshark /usr/bin/dumpcap 

5. 更改dumpcap的權限

  1. test@localhost:~/test$ sudo chmod 754 /usr/bin/dumpcap 

6. 設置POSIX capabilities

  1. test@localhost:~/test$ sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap 

7. 嘗試以普通用戶權限運行tshark

  1. test@localhost:~/test$ tshark -i eth0 
  2. Capturing on eth0 

wireshark設置的文章來源

 http://wiki.wireshark.org/CaptureSetup/CapturePrivileges

file POSIX capabilities的參考資料

http://www.friedhoff.org/posixfilecaps.html

http://www.sevagas.com/?POSIX-file-capabilities-the-dark

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章