Firejail com o HOWTO do Tor link
Não consigo verificar se o trabalho funcionará conforme descrito no artigo acima, no entanto, o encaminhamento ssh usando a mesma abordagem (isto é, uma porta socks5) funciona bem.
O método bem conhecido, mas inseguro , é usar torify
. Não é seguro porque pedimos a um aplicativo para usar o Tor e não forçá-lo. Se o aplicativo se comportar mal ou estiver sendo explorado por um bug,
ele ainda permitirá que conexões não-Tor sejam feitas para o mundo externo.
Firejail, por outro lado, é uma ferramenta de segurança que permite a você sandbox aplicativos, fornecendo-lhes um namespace de kernel isolado, filtros seccomp e, o que é importante, uma pilha de rede personalizada.
Então, como faço para criar uma interface de rede somente Tor que possa ser alimentada ao Firejail ? De acordo com a documentação do Firejail, ele aceita qualquer interface de rede de ponte:
Firejail can attach a new TCP/IP networking stack to the sandbox. The new stack comes with its own routing table, firewall and set of interfaces. It is totally independent of the host network stack.
- Create new interfaces – Linux kernel macvlan and bridge devices are created and moved automatically in the sandbox.
- Move existing interfaces – existing interfaces can be moved inside the sandbox. The interface configuration is preserved.
Firejail com o HOWTO do Tor link
Não consigo verificar se o trabalho funcionará conforme descrito no artigo acima, no entanto, o encaminhamento ssh usando a mesma abordagem (isto é, uma porta socks5) funciona bem.
implementamos outra solução como suporte a firejail - sinalizador netns. Para ligar o firejail dentro de um namespace de rede que pode acessar a internet somente via tor, os passos são:
# configure tor with this configuration
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 10.0.0.1
DNSPort 5354
DNSListenAddress 10.0.0.1
SOCKSPort 0
então ..
# 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
implementamos esse método em torjail
para um uso simples, dê uma olhada:
link
link