Torを除くすべてのトラフィックをブロックするにはどうすればよいですか?


26

Linuxシステムでは、Torネットワークを通過しない限り、すべての送受信トラフィックをブロックする方法があります。これには、TCP接続だけでなく、あらゆる形式のIP通信が含まれます。たとえば、UDPはTorを通過できないため、完全にブロックされます。このシステムでのインターネットの使用は完全に匿名であり、アプリケーションのリークは望ましくありません。

Tor自体が何らかの形でリレーノードと通信する必要があるため、これは複雑かもしれません。


私はちょうど同様の質問をしようとしていた:)
amyassin

5
近い票を投じている皆さんのために、Torには有効なビジネスユースケースがあることを思い出したいと思います。
マイケルハンプトン

回答:


26

iptablesで十分簡単。特定のユーザーに一致するルールを含めることがtorできます。独自のユーザーIDで実行するように既にセットアップされている必要があります。主要なLinuxディストリビューションおよびTorプロジェクトによって提供されるdebおよびrpmパッケージは、Torのユーザーを既にセットアップしています。

完全なサンプル、使用可能なiptablesおよびTor構成が続きます。このファイアウォールは、iptables-restoreコマンドでロードできます。この構成の最終結果は、プロキシを構成する必要なく、ホストから発信される、またはホストを経由して転送されるすべてのトラフィックを透過的にTorにルーティングます。この構成には、漏れがないようにする必要があります。もちろん、徹底的にテストする必要があります。

torユーザーのuid(ここでは998)は、iptablesによって数値形式で保存されることに注意してください。ここに表示される各場所でtorユーザーの正しいuidに置き換えます。

また、ホストに直接アドレス指定される着信clearnetおよびLANトラフィックをサポートするために、ホストのIPアドレスを最初のルールで指定する必要があることに注意してください(ここでは198.51.100.212)。複数のIPアドレスがある場合は、アドレスごとにルールを繰り返します。

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 198.51.100.212/32 -j RETURN
-A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 49151
-A OUTPUT -o lo -j RETURN
-A OUTPUT -m owner --uid-owner 998 -j RETURN
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 49151
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -d 127.0.0.1 --dport 22 -j ACCEPT
-A INPUT -j LOG --log-prefix "IPv4 REJECT INPUT: "
-A FORWARD -j LOG --log-prefix "IPv4 REJECT FORWARD: "
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 49151 -j ACCEPT
-A OUTPUT -m owner --uid-owner 998 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -j LOG --log-prefix "IPv4 REJECT OUTPUT: "
COMMIT

ssh INPUTルールは、ローカルホスト、つまりTorの非表示サービスを介して接続する場合のみ接続を許可します。また、clearnet経由の着信ssh接続を許可する場合は、削除し-d 127.0.0.1ます。

対応するtorrcファイルは次のとおりです。

User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1

この構成では、ホストに静的IPアドレスが必要です。予想される使用例では、静的IPアドレスを使用することを既に計画している可能性があります。

そして最後に、出力!

[root@unknown ~]# curl ifconfig.me
31.31.73.71
[root@unknown ~]# host 31.31.73.71
71.73.31.31.in-addr.arpa domain name pointer cronix.sk.
[root@unknown ~]# curl ifconfig.me
178.20.55.16
[root@unknown ~]# host 178.20.55.16
16.55.20.178.in-addr.arpa domain name pointer marcuse-1.nos-oignons.net.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.