1

TL:DR : I am building a network tap with a raspberry-pi that must remains stealth. I have a bridge (br0) between the switch interface (eth0) and the workstation (eth1).

Here is how i am building it (open to any suggestion):

# Create a bridge with the name br0
ip link add "$BRIDGE_INT" type bridge 
# Add the eth0 interface to the bridge
ip link set "$WORKSTATION_INT" master "$BRIDGE_INT" 
# Add the eth1 interface to the bridge
ip link set "$SWITCH_INT" master "$BRIDGE_INT" 

After this process is done, I am plugging the network cables and I can see that my eth0 is leaking its M.A.C on multiple protocols.

What I've tested :

nft add table inet filter
nft add chain inet filter output { type filter hook output priority 0 \; }
nft add rule inet filter output ether saddr "$SWITCH_MAC" drop

Which still leaks on eth0 DHCP -> ARP -> MDNS.

I've then decided to put a DHCP static address. After multiple tries I've found the right configuration for that (Open to any suggestion):

/etc/network/interfaces
auto eth0
    iface eth0 inet manual
    address 192.168.0.10
    netmask 255.255.255.0
    gateway 192.168.0.254

/etc/dhcpcd.conf
interface eth0
    static ip_address=192.168.0.10/24
    static routers=192.168.0.1
    static domain_name_servers=192.168.0.1 8.8.8.8

This configuration won't query the network for dhcp. But ARP -> MDNS are still leaking.

As this project is aimed to be adaptable, I think the best solution is to drop everything having the SWITCH_MAC. But this doesn't stop traffic from flowing out.

What I've noticed is that my rule is correctly dropping packets with SWITCH_MAC that I send on purpose but doesn't drop what's emitted by the OS.

CONCLUSION The OS is leaking unwanted traffic even though the test traffic is being dropped. I suspect my issue is similar to this one : Filtering traffic by MAC address with nftables Which is very well explained, but no solution has been found yet.

m4ki3lf0
  • 41
  • 3

0 Answers0