web-dev-qa-db-ja.com

Firejailに適したTor専用ネットワークインターフェースを作成するにはどうすればよいですか?

よく知られているが安全でないメソッドはtorifyを使用することです。アプリケーションにTorを強制するのではなく、使用するようにaskするため、安全ではありません。アプリケーションが誤動作したり、バグによって説明されたりした場合でも、Tor以外の接続を外部に行うことができます。

一方、Firejailは、分離されたカーネル名前空間、seccompフィルター、および重要なことを提供することにより、アプリケーションをサンドボックスできるセキュリティツールです。カスタムネットワークスタック。

だからFirejailに供給することができるTorのみのネットワークインターフェースを作成するにはどうすればよいですか? Firejailのドキュメントによると、ブリッジネットワークインターフェイスを受け入れます。

Firejailは、新しいTCP/IPネットワークスタックをサンドボックスに接続できます。新しいスタックには、独自のルーティングテーブル、ファイアウォール、および一連のインターフェイスが付属しています。これは、ホストネットワークスタックから完全に独立しています。

  • 新しいインターフェイスの作成– Linuxカーネルのmacvlanおよびブリッジデバイスが作成され、サンドボックスに自動的に移動されます。
  • 既存のインターフェイスを移動する–既存のインターフェイスをサンドボックス内に移動できます。インターフェイス設定は保持されます。
4
VasyaNovikov

Tor HOWTOを使用したFirejail https://www.void.gr/kargig/blog/2016/12/12/firejail-with-tor-howto/

上記の記事で概説したようにtorが機能することを確認できませんが、同じアプローチ(つまり、socks5ポート)を使用したssh転送は正常に機能します。

4
user5321531

firejailサポート--netnsフラグとして別のソリューションを実装しました。 Torのみを介してインターネットに到達できるネットワーク名前空間内にfirejailをバインドするための手順は、次のとおりです。

# 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

3
les