Como criar uma interface de rede somente Tor adequada para Firejail?

4

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.
    
por VasyaNovikov 22.04.2016 / 14:08

2 respostas

4

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.

    
por 28.01.2017 / 16:11
3

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

    
por 19.07.2017 / 12:28