Ausführen von Wireshark in einem CentOS-Docker-Container

Ausführen von Wireshark in einem CentOS-Docker-Container

Ich habe Wireshark mit yum( RUN yum install -y wireshark wireshark-qt) installiert – und kann es nicht ausführen, wenn ich mich per SSH mit dem Container befasse.

# tshark
tshark: Couldn't run /usr/sbin/dumpcap in child process: Operation not permitted
Are you a member of the 'wireshark' group? Try running
'usermod -a -G wireshark _your_username_' as root.

Ich habe versucht, es auszuführen usermod -a -G wireshark root(wenn ich mich per SSH mit dem Rechner in Verbindung setze, mache ich das als Root). Das hilft nicht.

Auch erfolglos versucht su -c '/usr/sbin/tshark'.

Was soll ich machen?

Antwort1

dumpcaperfordert NET_RAW(RAW- und PACKET-Sockets verwenden) NET_ADMIN(netzwerkbezogene Operationen ausführen) Fähigkeiten

$ getcap $(which dumpcap)
/usr/sbin/dumpcap = cap_net_admin,cap_net_raw+ep

Sie werden nicht standardmäßig an unprivilegierte Container vergeben und müssen explizit beim --cap-add=NET_RAW --cap-add=NET_ADMINStarten des Containers hinzugefügt werden.

$ docker build -t tshark - <<EOF 
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y tshark && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["tshark"]
EOF

$ docker run --rm -it \
    --net=[container:<name|id> | host] \
    --cap-add=NET_RAW --cap-add=NET_ADMIN tshark


Antwort2

Ich habe diesen Befehl verwendet und er führte aus:

usermod -a -G wireshark _your_username_  

newgrp wireshark

sudo chgrp wireshark /usr/sbin/dumpcap

tshark -i eth0 -w outfile

Bitte versuche.

verwandte Informationen