problema de permisos de tcpdump

13

Tengo problemas para ejecutar tcpdump. Debo ejecutar tcpdump con un usuario no root. Busqué mi problema en la web y descubrí que debería:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Eso me permitió ejecutar tcpdump con mi usuario pero luego obtuve:

you don't have permission to capture on that device

en cualquier dispositivo que intenté capturar.

También fue un poco de fuerza bruta e hizo:

sudo chmod +s /usr/sbin/tcpdump

Eso tampoco lo hizo.

Sivan Sigal
fuente
Tcpdump requiere privilegios de root, tendrás que configurar capacidades específicas de Linux para el binario: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder
Lo hice también, pero sigo recibiendo:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal
Esto también es problemático porque no quiero cambiar el código fuente que estoy ejecutando ... Además, lo que DreamCoder sugirió debería funcionar, pero extrañamente no lo hace. Alguien tiene otra oferta?
Sivan Sigal

Respuestas:

28

Es un poco tarde, pero tuve el mismo problema. Debe otorgar tcpdumpel permiso y la capacidad para permitir la captura de paquetes sin formato y la manipulación de la interfaz de red .

Agregue un grupo de captura y agréguese a él:

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

A continuación, cambie el grupo de tcpdumpy establezca permisos:

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

Finalmente, use setcappara otorgar tcpdumplos permisos necesarios:

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

¡Tenga cuidado, ya que esto permitirá que todos, desde el grupo pcap, manipulen las interfaces de red y lean los paquetes sin formato!

Lo encontré aquí: configure tcpdump para que funcione como no root

Horst
fuente
Pude limitar esto un poco y simplemente usarlo cap_net_raw,cap_setpcap=ep. La eliminación de la ifue porque mi programa no necesitaba bifurcarse. Esto es para un binario personalizado, así que ymmv.
Dan
Esto también funcionó para iftopun programa que muestra la utilización de la red por dirección IP / nombre DNS
HeatfanJohn
0

Quizás esto pueda funcionar. Similar a lo que ya se publicó. No ha sido probado en ubuntu.

(use un grupo del cual su usuario sea miembro) chgrp wireshark / usr / sbin / tcpdump

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

usando getcap / usr / sbin / tcpdump debería ver / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Serjan
fuente