problema de permissões do tcpdump

13

Estou tendo problemas para executar o tcpdump. Eu devo executar o tcpdump com usuário não root. Pesquisei na web o meu problema e descobri que eu deveria:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Isso me permitiu executar o tcpdump com meu usuário, mas então obtive:

you don't have permission to capture on that device

em qualquer dispositivo que tentei capturar.

Também foi um pouco de força bruta e fez:

sudo chmod +s /usr/sbin/tcpdump

Isso também não aconteceu.

Sivan Sigal
fonte
Tcpdump exige privilégios de root, você terá a capacidade de conjunto específico do Linux para o binário: $ sudo setcap CAP_NET_RAW, CAP_NET_ADMIN = EIP / usr / sbin / tcpdump
DreamCoder
Fiz isso também, mas eu continuo recebendo:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal 1/14
Veja aqui. askubuntu.com/questions/39281/…
g_p 01/10/14
Isso também é problemático porque não deseja alterar o código-fonte que estou executando ... Além disso, o que o DreamCoder sugeriu deve funcionar, mas estranhamente não. Alguém tem outra oferta?
Sivan Sigal

Respostas:

28

É um pouco tarde, mas eu apenas tive o mesmo problema. Você precisa dar tcpdumppermissão e capacidade para permitir capturas de pacotes brutos e manipulação da interface de rede .

Adicione um grupo de capturas e adicione-se a ele:

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

Em seguida, altere o grupo tcpdumpe defina as permissões:

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

Por fim, use setcappara dar tcpdumpas permissões necessárias:

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

Tenha cuidado, pois isso permitirá que todos do grupo pcap manipulem interfaces de rede e leiam pacotes brutos!

Encontre aqui: Configure o tcpdump para funcionar como não raiz

Horst
fonte
Consegui limitar um pouco isso e usar cap_net_raw,cap_setpcap=ep. A remoção do arquivo ifoi porque meu programa não precisava ser bifurcado. Isso é para um binário personalizado, então ymmv.
Dan
Isso também trabalhou para iftopum programa que a utilização da rede shows de IP nome / endereço DNS
HeatfanJohn
0

Talvez isso possa funcionar. Semelhante ao que já foi publicado. Não foi testado no ubuntu.

(use um grupo do qual seu usuário seja membro) chgrp wireshark / usr / sbin / tcpdump

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

usando getcap / usr / sbin / tcpdump, você deverá ver / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Serjan
fonte