Wir haben eine weitere Lösung als Firejail-Unterstützung implementiert. Um Firejail innerhalb eines Netzwerk-Namensraums zu binden, der nur über tor zum Internet gelangen kann, sind die folgenden Schritte erforderlich:
# configure tor with this configuration AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 10.0.0.1 DNSPort 5354 DNSListenAddress 10.0.0.1 SOCKSPort 0
dann..
# create a new network namespace named torjail ip netns add torjail # create two virtual ethernet interface ip link add out-torjail type veth peer name in-torjail # bind one interface to torjail network namespace ip link set in-torjail netns torjail # set interfaces ip and default routing ip addr add 10.0.0.1/24 dev out-torjail ip link set out-torjail up ip netns exec torjail ip addr add 10.0.0.2/24 dev in-torjail ip netns exec torjail ip link set in-torjail up ip netns exec torjail ip route add default via 10.0.0.1 # forward all dns traffic to tor DNSPort iptables -t nat -A PREROUTING -i out-torjail -p udp -d 10.0.0.1 --dport 53 -j DNAT --to-destination 10.0.0.1:5354 # forward all traffic to tor TransPort iptables -t nat -A PREROUTING -i out-torjail -p tcp --syn -j DNAT --to-destination 10.0.0.1:9040 # accept established connection iptables -A OUTPUT -m state -o out-torjail --state ESTABLISHED,RELATED -j ACCEPT # accept only forwarded traffic iptables -A INPUT -i out-torjail -p udp --destination 10.0.0.1 --dport 5354 -j ACCEPT iptables -A INPUT -i out-torjail -p tcp --destination 10.0.0.1 --dport 9040 -j ACCEPT iptables -A INPUT -i out-torjail -p udp --destination 10.0.0.1 --dport 9040 -j ACCEPT iptables -A INPUT -i out-torjail -j DROP # finally run firejail within torjail namespace firejail --dns=10.0.0.1 --netns=torjail $YOUR_ANONYMOUS_COMMAND_HERE
Wir haben diese Methode torjail
für eine einfache Verwendung implementiert.
https://torjail.github.io
https://github.com/torjail/torjail