Ok, j'ai résolu le mystère. Suivez-moi pour découvrir le TCPDump de Funtoo et le mystère du fichier pcap manquant .
J'ai utilisé strace pour voir ce qui se passe et les lignes pertinentes sont les suivantes:
chroot("/var/lib/tcpdump") = 0
chdir("/") = 0
--- SNIP ---
open("/tmp/lol.wat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory)
Donc...
lance ~ # ls /var/lib/tcpdump/
blah blah.cap irc.cap pyhole
Hé regarde! Tous les fichiers de casquettes que j'ai essayé de créer!
Après avoir regardé les drapeaux d'utilisation avec lesquels tcpdump est construit par défaut, je vois ceci:
lance ~ # grep tcpdump /usr/portage/profiles/use*desc
use.local.desc:net-analyzer/tcpdump:chroot - Enable chrooting when dropping privileges
Alors pourquoi faire comme ça? Ma théorie va quelque chose comme ceci:
- De nombreuses applications qui interagissent avec le trafic réseau brut doivent s'exécuter en tant que root.
- Le trafic réseau brut a une grande variété de valeurs valides et non valides dans la nature.
- De nombreux exploits existent pour ces applications. (Wireshark, Ethereal, tcpdump, et al)
- Par conséquent, tcpdump saisit l'accès à l'interface réseau pendant que root, s'enferme dans
/var/lib/tcpdump
, puis abandonne les privilèges root et commence la capture.
En conséquence, quand j'ai spécifié ./blah
ou blah
cela a bien fonctionné. Mais /tmp/blah
pas parce qu'il /var/lib/tcpdump/tmp
n'existe pas.
Une caractéristique latérale intéressante de tout cela est: lorsque vous utilisez le drapeau suid pour installer tcpdump SetUID, vous pouvez accorder aux utilisateurs l'accès au tcpdump
groupe sans leur donner un accès sudo ou root. Les utilisations possibles incluent une boîte de capture pour vos ingénieurs réseau ou vos chercheurs.
Je souhaite juste que Gentoo / Funtoo ait eu un message sur l'installation qui dit tout cela.
tl; dr: Gentoo / Funtoo mettez vos fichiers pcap dedans /var/lib/tcpdump
.