4

Общеизвестным, но небезопасным методом является использование torify . Это небезопасно, потому что мы просим приложение использовать Tor, а не форсировать его. Если приложение плохо себя ведет или эксплуатируется из-за ошибки, оно все равно позволит устанавливать соединения не-Tor с внешним миром.

Firejail, с другой стороны, представляет собой инструмент безопасности, который позволяет выполнять изолированную программную среду приложений, предоставляя им изолированное пространство имен ядра, фильтры seccomp и, что важно, собственный сетевой стек.

Итак, как мне создать сетевой интерфейс Tor только для передачи в Firejail? Согласно документации Firejail, он принимает любой сетевой интерфейс моста:

Firejail может подключить новый стек TCP/IP к песочнице. Новый стек поставляется с собственной таблицей маршрутизации, брандмауэром и набором интерфейсов. Он полностью независим от сетевого стека хоста.

  • Создание новых интерфейсов - устройства ядра Macvlan и моста Linux создаются и автоматически перемещаются в песочницу.
  • Переместить существующие интерфейсы - существующие интерфейсы можно перемещать внутри песочницы. Конфигурация интерфейса сохраняется.

2 ответа2

4

Firejail с Tor HOWTO https://www.void.gr/kargig/blog/2016/12/12/firejail-with-tor-howto/

Я не могу убедиться, что tor будет работать так, как описано в приведенной выше статье, однако пересылка ssh с использованием того же подхода (т. Е. Порта socks5) работает нормально.

3

мы внедрили другое решение в качестве поддержки firejail --netns flag. чтобы связать firejail с пространством имен сети, которое может подключаться к Интернету только через tor, необходимо выполнить следующие шаги:

# configure tor with this configuration
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 10.0.0.1
DNSPort 5354
DNSListenAddress 10.0.0.1
SOCKSPort 0

затем..

# 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

мы реализовали этот метод в torjail для простого использования, взгляните:

https://torjail.github.io
https://github.com/torjail/torjail

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .