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.