problema di autorizzazioni tcpdump


13

Ho problemi con l'esecuzione di tcpdump. Devo eseguire tcpdump con un utente non root. Ho cercato sul web il mio problema e ho capito che avrei dovuto:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Ciò mi ha permesso di eseguire tcpdump con il mio utente ma poi ho ottenuto:

you don't have permission to capture on that device

su qualsiasi dispositivo che ho provato a catturare.

Inoltre è andato un po 'di forza bruta e ha fatto:

sudo chmod +s /usr/sbin/tcpdump

Neanche quello lo ha fatto.


Tcpdump richiede i privilegi di root, dovrai impostare specifiche capacità Linux sul binario: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder

Anche quello, ma continuo a ricevere:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal,


Questo è anche problematico perché non voglio cambiare il codice sorgente che sto eseguendo ... Inoltre, ciò che DreamCoder ha suggerito dovrebbe funzionare, ma stranamente non lo fa. Qualcuno ha un'altra offerta?
Sivan Sigal,

Risposte:


28

È un po 'tardi, ma ho avuto lo stesso problema. È necessario fornire tcpdumpl'autorizzazione e la capacità per consentire l'acquisizione di pacchetti grezzi e la manipolazione dell'interfaccia di rete .

Aggiungi un gruppo di acquisizione e aggiungiti ad esso:

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

Successivamente, modifica il gruppo di tcpdumpe imposta le autorizzazioni:

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

Infine, utilizza setcapper fornire tcpdumple autorizzazioni necessarie:

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

Fai attenzione, questo consentirà a tutti i membri del gruppo pcap di manipolare le interfacce di rete e leggere i pacchetti grezzi!

Trovato qui: configura tcpdump in modo che funzioni come non root


Sono stato in grado di limitare un po 'questo e solo usare cap_net_raw,cap_setpcap=ep. La rimozione di questo è istato perché il mio programma non ha avuto bisogno di fork. Questo è per un binario personalizzato, quindi ymmv.
Dan,

Questo ha funzionato anche per iftopun programma che mostra l'utilizzo della rete per indirizzo IP / nome DNS
HeatfanJohn

0

Forse questo potrebbe funzionare. Simile a ciò che è stato già pubblicato. Non è stato testato su Ubuntu.

(usa un gruppo di cui il tuo utente è membro) chgrp WireShark / Usr / sbin / tcpdump

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

usando getcap / usr / sbin / tcpdump dovresti vedere / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.