masalah izin tcpdump

13

Saya mengalami kesulitan menjalankan tcpdump. Saya harus menjalankan tcpdump dengan pengguna non-root. Mencari di web untuk masalah saya dan menemukan bahwa saya harus:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Itu memungkinkan saya untuk menjalankan tcpdump dengan pengguna saya, tetapi kemudian saya dapat:

you don't have permission to capture on that device

pada perangkat apa pun yang saya coba ambil.

Juga pergi sedikit kekuatan kasar dan melakukan:

sudo chmod +s /usr/sbin/tcpdump

Itu juga tidak berhasil.

Sivan Sigal
sumber
Tcpdump membutuhkan hak akses root, Anda harus mengatur kemampuan Linux spesifik ke biner: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder
Apakah itu juga tetapi saya terus mendapatkan:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal
Ini juga bermasalah karena tidak ingin mengubah kode sumber yang saya jalankan ... Juga, apa yang disarankan DreamCoder harus berfungsi tetapi anehnya tidak. Adakah yang punya penawaran lain?
Sivan Sigal

Jawaban:

28

Ini sedikit terlambat, tetapi saya hanya memiliki masalah yang sama. Anda perlu memberikan tcpdumpizin dan kemampuan untuk memungkinkan penangkapan paket mentah dan manipulasi antarmuka jaringan .

Tambahkan grup tangkap dan tambahkan diri Anda ke dalamnya:

sudo groupadd pcap
sudo usermod -a -G pcap $USER

Selanjutnya, ubah grup tcpdumpdan atur izin:

sudo chgrp pcap /usr/sbin/tcpdump
sudo chmod 750 /usr/sbin/tcpdump

Akhirnya, gunakan setcapuntuk memberikan tcpdumpizin yang diperlukan:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Hati-hati, ini akan memungkinkan semua orang dari pcap grup untuk memanipulasi antarmuka jaringan dan membaca paket mentah!

Ditemukan di sini: Konfigurasikan tcpdump agar berfungsi sebagai non-root

Horst
sumber
Saya bisa membatasi ini sedikit dan hanya menggunakan cap_net_raw,cap_setpcap=ep. Penghapusan iitu karena program saya tidak perlu melakukan fork. Ini untuk biner khusus, jadi ymmv.
Dan
Ini juga berfungsi untuk iftopprogram yang menunjukkan pemanfaatan jaringan berdasarkan alamat IP / nama DNS
HeatfanJohn
0

Mungkin ini bisa berhasil. Mirip dengan apa yang sudah diposting. Itu belum diuji di ubuntu.

(gunakan grup yang anggotanya adalah anggota Anda) chgrp wireshark / usr / sbin / tcpdump

setcap 'CAP_NET_RAW + eip CAP_NET_ADMIN + eip' / usr / sbin / tcpdump

menggunakan getcap / usr / sbin / tcpdump Anda akan melihat / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Serjan
sumber