problem z uprawnieniami tcpdump

13

Mam problem z uruchomieniem programu tcpdump. Muszę uruchomić tcpdump z użytkownikiem innym niż root. Przeszukałem mój problem w sieci i pomyślałem, że powinienem:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

To pozwoliło mi uruchomić tcpdump z moim użytkownikiem, ale potem otrzymałem:

you don't have permission to capture on that device

na dowolnym urządzeniu próbowałem przechwycić.

Przeszedł też trochę brutalnej siły i zrobił:

sudo chmod +s /usr/sbin/tcpdump

To też nie zrobiło tego.

Sivan Sigal
źródło
Tcpdump wymaga uprawnień roota, musisz ustawić określone możliwości Linuksa na plik binarny: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder
Zrobiłem to też, ale wciąż otrzymuję:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal
Jest to również problematyczne, ponieważ nie chcę zmieniać kodu źródłowego, który uruchamiam ... Ponadto, sugerowane przez DreamCoder powinno działać, ale dziwnie, że nie. Czy ktoś ma inną ofertę?
Sivan Sigal

Odpowiedzi:

28

Jest trochę późno, ale właśnie miałem ten sam problem. Musisz udzielić tcpdumpzezwolenia i możliwości, aby umożliwić przechwytywanie pakietów raw i manipulowanie interfejsem sieciowym .

Dodaj grupę przechwytywania i dodaj się do niej:

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

Następnie zmień grupę tcpdumpi ustaw uprawnienia:

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

Na koniec użyj, setcapaby podać tcpdumpniezbędne uprawnienia:

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

Uważaj, aby to pozwoliło wszystkim użytkownikom pcap na manipulowanie interfejsami sieciowymi i czytanie nieprzetworzonych pakietów!

Znaleziono to tutaj: Skonfiguruj tcpdump, aby działał jako użytkownik inny niż root

Horst
źródło
Byłem w stanie trochę to ograniczyć i po prostu użyć cap_net_raw,cap_setpcap=ep. Usunięcie ibyło spowodowane tym, że mój program nie musiał rozwidlać. To jest dla niestandardowego pliku binarnego, więc ymmv.
Dan
iftop
Działa
0

Być może to może zadziałać. Podobne do tego, co już zostało opublikowane. Nie został przetestowany na Ubuntu.

(użyj grupy, której członkiem jest użytkownik) chgrp wireshark / usr / sbin / tcpdump

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

używając getcap / usr / sbin / tcpdump powinieneś zobaczyć / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Serjan
źródło