ubuntuusers.de

tcpdump

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels tcpdump.

Xeno Team-Icon

Ehemalige

Anmeldungsdatum:
6. April 2005

Beiträge: 2595

Wohnort: Schweiz

Lieber noisefloor

Ich muss Dir nach etwas Recherche Recht geben. Wenn ein Paket in keiner auch nur halbwegs "normalen" Installation fehlt, ist die vorliegende Form besser. Andere Formulierungen, die ich im Kopf hatte, bezogen sich auf Fälle, wo ein Paket in bestimmten Versionen von Ubuntu fehlt (mit Version kann ein bestimmtes *ubuntu oder ein bestimmtes Release gemeint sein). Das kommt hier aber offenbar nicht vor.

Deshalb sein lassen.

Nichts für ungut.

Lg X.

Hans9876543210

Anmeldungsdatum:
2. Januar 2011

Beiträge: 3741

Hallo,

linux_joy schrieb:

Dazu eine mögliche Alternative: In der Manpage (http://manpages.ubuntu.com/tcpdump) steht:

| -Z user
| --relinquish-privileges=user If tcpdump is running as root, after opening the capture device or input savefile, but before opening any savefiles for output, change the user ID to user and the group ID to the primary group of user.

This behavior can also be enabled by default at compile time.

Man könnte also das Sicherheitsrisiko dadurch senken ...

dazu mal eine Verständnisfrage: Das Mitschneiden von Traffic sollte aus meiner Sicht nicht Hinz und Kunz können dürfen, dass schließt die Bearbeitung von Captures mit ein. Bei Anwendung von -Z wird das Capture mit User-Rechten anstelle von root Rechten versehen. Klar kann man das dann nachher einfacherer auswerten, aber soll das wirklich jeder? In /usr oder /etc fummelt ja auch nicht jeder rum.

Den Nebenschauplatz Datenschutz lass ich mal außen vor ☺

linux_joy

Anmeldungsdatum:
6. Februar 2008

Beiträge: 803

Wohnort: Hannover

1.

Hans9876543210 schrieb:

Hallo,

linux_joy schrieb:

Dazu eine mögliche Alternative: In der Manpage (http://manpages.ubuntu.com/tcpdump) steht:

| -Z user
| --relinquish-privileges=user If tcpdump is running as root, after opening the capture device or input savefile, but before opening any savefiles for output, change the user ID to user and the group ID to the primary group of user.

This behavior can also be enabled by default at compile time.

Man könnte also das Sicherheitsrisiko dadurch senken ...

dazu mal eine Verständnisfrage: Das Mitschneiden von Traffic sollte aus meiner Sicht nicht Hinz und Kunz können dürfen, dass schließt die Bearbeitung von Captures mit ein. Bei Anwendung von -Z wird das Capture mit User-Rechten anstelle von root Rechten versehen. Klar kann man das dann nachher einfacherer auswerten, aber soll das wirklich jeder? In /usr oder /etc fummelt ja auch nicht jeder rum.

Den Nebenschauplatz Datenschutz lass ich mal außen vor ☺

Ein kleiner Hinweis meinerseits: Die "Anwendung von -Z" gelingt zunächst einmal ausschließlich mit Root-Rechten und NICHT mit User-Rechten. Daraus folgt logischerweise, dass hinter dem "-Z" möglichst ein dem Benutzer "root" genehmer eingeschränkter Benutzer stehen sollte. Und außerdem hat "root" ja immer noch den zusätzlichen Zugriff auf das Capture (neben dem ihm genehmen eingeschränkten Benutzer). Im Zweifelsfalle kann er doch das Capture gleich nach dessen Erstellung wieder mit Root-Rechten versehen!

2.

In Anlehnung an diesen Post im Wiki-Forum Netzwerk-Monitoring schlage ich hiermit vor, im Abschnitt Links genauso wie bei Wireshark einen Link auf Netzwerk-Monitoring zu setzen!

Hans9876543210

Anmeldungsdatum:
2. Januar 2011

Beiträge: 3741

linux_joy schrieb:

Und außerdem hat "root" ja immer noch den zusätzlichen Zugriff auf das Capture (neben dem ihm genehmen eingeschränkten Benutzer). Im Zweifelsfalle kann er doch das Capture gleich nach dessen Erstellung wieder mit Root-Rechten versehen!

Ist das wirklich so?

sudo tcpdump -Z $USER -K -p -w test
sudo tcpdump -K -p -w test2

ausgeführt. Anschließend:

ls -hal test*

ergibt:

-rw-r--r-- 1 ich ich 84K Dez 23 07:10 test
-rw-r--r-- 1 root root 1,4M Dez 23 07:11 test2

Lesen kann die Datei dann zwar root, aber an den Eigenschaften kann er nichts ändern. M.E. ist die Begründung, die du anführst, nicht logisch. Letztlich geht das imho darum, dass tcpdump halt mit superuser Rechten aufgerufen werden muss, um alles mitschneiden zu können. Die eigentliche Auswertung soll dann wiederum nur durch ausgewählte Benutzer möglich sein. Das geht dann auch ohne sudo:

tcpdump -ttttnnr test
tcpdump -ttttnnr test2

Ich sehe da ehrlich gesagt keinen Sicherheitsgewinn:

Man kann damit also das durch die Ausführung mit Root-Rechten [1] bzw. das gesetzte Setuid-Bit einhergehende Sicherheitsrisiko senken. 

Vorschlag:

[...] angegebenen Benutzers geändert. Den gerade angemeldeten [...]. Die Änderung der Zugriffsrechte unmittelbar beim Capture kann sinnvoll sein, wenn die Auswertung durch einen gesonderten Personenkreis durchgeführt wird.

linux_joy

Anmeldungsdatum:
6. Februar 2008

Beiträge: 803

Wohnort: Hannover

Hans9876543210 schrieb:

linux_joy schrieb:

Und außerdem hat "root" ja immer noch den zusätzlichen Zugriff auf das Capture (neben dem ihm genehmen eingeschränkten Benutzer). Im Zweifelsfalle kann er doch das Capture gleich nach dessen Erstellung wieder mit Root-Rechten versehen!

Ist das wirklich so?

sudo tcpdump -Z $USER -K -p -w test
sudo tcpdump -K -p -w test2

ausgeführt. Anschließend:

ls -hal test*

ergibt:

-rw-r--r-- 1 ich ich 84K Dez 23 07:10 test
-rw-r--r-- 1 root root 1,4M Dez 23 07:11 test2

Lesen kann die Datei dann zwar root, aber an den Eigenschaften kann er nichts ändern.

Bitte was? Mit chmod und chown kann er sehr wohl alles ändern!

M.E. ist die Begründung, die du anführst, nicht logisch. Letztlich geht das imho darum, dass tcpdump halt mit superuser Rechten aufgerufen werden muss, um alles mitschneiden zu können.

Richtig, außer es geht halt automatisch via Setuid-Bit. Aber auch dabei könnte man das Flag -Z setzen und ALLES würde mitgeschnitten werden!

Oder etwa nicht?

Die eigentliche Auswertung soll dann wiederum nur durch ausgewählte Benutzer möglich sein.

Wieso? Oder durch Root höchstselbst.

Das geht dann auch ohne sudo:

tcpdump -ttttnnr test
tcpdump -ttttnnr test2

Bei mir zeigt er dann an:

Command 'tcpdump' is available in '/usr/sbin/tcpdump'
The command could not be located because '/usr/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative priviledges associated with your user account.
tcpdump: command not found

Es kommt also darauf an, ob '/usr/sbin' in der Umgebungsvariable PATH ist oder nicht.

Ich sehe da ehrlich gesagt keinen Sicherheitsgewinn:

Man kann damit also das durch die Ausführung mit Root-Rechten [1] bzw. das gesetzte Setuid-Bit einhergehende Sicherheitsrisiko senken. 

Natürlich kann man das! Hast Du etwa nicht den in Sonderrechte enthaltenen Warn-Kasten gelesen:

Achtung!

Vor allem das "Set-UID-Recht" sollte nur mit äußerster Vorsicht angewandt werden!

Besonders gefährlich ist es, das SUID-Bit bei Dateien zu setzen, die Besitz von root sind, denn dann kann jeder diese mit Administrator-Rechten starten. Schwachstellen im jeweiligen Programm können dann dazu ausgenutzt werden, vollständigen Root-Zugriff auf das gesamte System zu bekommen. Nur bei wenigen Programmen, die darauf ausgelegt sind, ist dieses Bit gesetzt (z.B. sudo oder su).

Entsprechend und vor allem gilt das natürlich für die direkte Ausführung als Root bzw. sudo.

Durch das Setzen des Flags -Z passiert folgendes: "Nachdem die zu sniffende Netzwerkschnittstelle bzw. die mit dem -r Flag zu parsende Datei geöffnet worden ist, jedoch bevor irgendeine Ausgabe(datei) gestartet bzw. geöffnet worden ist, wird das Benutzerkonto (UID) von root auf den angegebenen Benutzer und die Gruppe (GID) von root auf die Hauptgruppe des angegebenen Benutzers geändert." Wobei soll da bitte schön denn KEIN Sicherheitsgewinn sein???

Vorschlag:

[...] angegebenen Benutzers geändert. Den gerade angemeldeten [...]. Die Änderung der Zugriffsrechte unmittelbar beim Capture kann sinnvoll sein, wenn die Auswertung durch einen gesonderten Personenkreis durchgeführt wird.

Ehrlich gesagt kann ich daraus nicht "schlau" werden!

Hans9876543210

Anmeldungsdatum:
2. Januar 2011

Beiträge: 3741

linux_joy schrieb:

Hans9876543210 schrieb:

linux_joy schrieb:

Und außerdem hat "root" ja immer noch den zusätzlichen Zugriff auf das Capture (neben dem ihm genehmen eingeschränkten Benutzer). Im Zweifelsfalle kann er doch das Capture gleich nach dessen Erstellung wieder mit Root-Rechten versehen!

Ist das wirklich so?

sudo tcpdump -Z $USER -K -p -w test
sudo tcpdump -K -p -w test2

ausgeführt. Anschließend:

ls -hal test*

ergibt:

-rw-r--r-- 1 ich ich 84K Dez 23 07:10 test
-rw-r--r-- 1 root root 1,4M Dez 23 07:11 test2

Lesen kann die Datei dann zwar root, aber an den Eigenschaften kann er nichts ändern.

Bitte was? Mit chmod und chown kann er sehr wohl alles ändern!

Ich schreibs noch mal klarer:

Und außerdem hat "root" ja immer noch den zusätzlichen Zugriff auf das Capture (neben dem ihm genehmen eingeschränkten Benutzer). Im Zweifelsfalle kann er (root) doch das Capture gleich nach dessen Erstellung wieder mit Root-Rechten versehen!

Das geht ja dann eben nicht mehr, da nur der Benutzer Rechte zum ändern hat.

"Nachdem die zu sniffende Netzwerkschnittstelle bzw. die mit dem -r Flag zu parsende Datei geöffnet worden ist, jedoch bevor irgendeine Ausgabe(datei) gestartet bzw. geöffnet worden ist, wird das Benutzerkonto (UID) von root auf den angegebenen Benutzer und die Gruppe (GID) von root auf die Hauptgruppe des angegebenen Benutzers geändert." Wobei soll da bitte schön denn KEIN Sicherheitsgewinn sein???

Ich hab's jetzt mal anders nachgestellt und kann dich jetzt verstehen, wenngleich die Erklärung aus meiner Sicht verwirrend ist.

1
2
3
sudo tcpdump -i eth0 port 21 -w te1
ps -ef | grep tcpdump
cat /proc/xxx/status

Letztlich werden 2 Prozesse - über den sudo Umweg - gestartet. Der sudo Prozess hat u.a. folgende Eigenschaften:

Uid:	0	0	0	0
Gid:	1000	1000	1000	1000

Der tcpdump Prozess hat u.a. folgende Eigenschaften:

Uid:	0	0	0	0
Gid:	0	0	0	0

Das gleiche mit -Z $USER:

1
2
3
sudo tcpdump -Z $USER -i eth0 port 21 -w te2
ps -ef | grep tcpdump
cat /proc/xxx/status

Der sudo Prozess hat u.a. folgende Eigenschaften:

Uid:	0	0	0	0
Gid:	1000	1000	1000	1000

Der tcpdump Prozess hat u.a. folgende Eigenschaften:

Uid:	1000	1000	1000	1000
Gid:	1000	1000	1000	1000

Daher wird tcpdump ohne root gestartet, wobei das Ausnutzungspotenzial aus meiner Sicht gering ist und das auch nur für den Weg über sudo geht. Bei:

sudo chmod u+s /usr/sbin/tcpdump
tcpdump -i eth0 port 21 -w te3
tcpdump -Z $USER -i eth0 port 21 -w te4

ist es völlig unerheblich, da bei beiden Fällen die gleiche uid und gid genutzt wird. Von daher passen die Aussagen:

Richtig, außer es geht halt automatisch via Setuid-Bit. Aber auch dabei könnte man das Flag -Z setzen und ALLES würde mitgeschnitten werden!

und

Man kann damit also das durch die Ausführung mit Root-Rechten [1] bzw. das gesetzte Setuid-Bit einhergehende Sicherheitsrisiko senken.

m.E. nicht.

linux_joy

Anmeldungsdatum:
6. Februar 2008

Beiträge: 803

Wohnort: Hannover

Gut: Wenn Du's besser weißt, dann ändere bitte selber den Artikel, und zwar nach Deinem Gutdünken!!!

Hans9876543210

Anmeldungsdatum:
2. Januar 2011

Beiträge: 3741

Ich dachte das ist eine Diskussion zum Artikel, schadet doch nichts, drüber zu reden, oder doch? 😕 Ich warte mal noch ein Feedback ab, dann kann man den Artikel immer noch mal anpassen.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Tipp: wenn generelle Fragen zur Nutzung von tcpdump und dessen Optionen sind am _aller_besten einen Thread im passenden Supportforum starten - da Lesen in der Regel mehr Wissende mit als hier im Wikiforum - und DANN das neue gewonnene Wissen in den Wikiartikel einfließen lassen.

Gruß, noisefloor

CHR

Avatar von CHR

Anmeldungsdatum:
20. Februar 2008

Beiträge: Zähle...

Wohnort: Aachen

In der Manpage von Ubuntu 17.10 steht für die Option -s ein Standard wert von 262144 hier ist dokumentiert 65535. Das müsste mal jemand Prüfen und ggf. korrigieren.

Antworten |