如何使用 iptables 限制对 Tor 中的 .onion 地址的访问?

如何使用 iptables 限制对 Tor 中的 .onion 地址的访问?

我想将传出网络访问(本地主机连接除外)限制为 Tor 上的 TCP 和 UDP,并阻止其他所有内容(Tor 应用程序和本地主机连接除外)。目标是限制用户localhost*.onion地址,Tor 会为其创建虚拟地址网络 10.192.0.0/10(使用VirtualAddrNetworktorrc 文件上的选项)。

以下是我当前的 iptables-save:

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -d 10.192.0.0/10 -p tcp -j REDIRECT --to-ports 9040
-A OUTPUT ! -o lo -p tcp -m tcp -m owner ! --uid-owner debian-tor -j REDIRECT --to-ports 9040
-A OUTPUT ! -o lo -p udp -m udp --dport 53 -m owner ! --uid-owner debian-tor -j REDIRECT --to-ports 53
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -m owner --uid-owner debian-tor -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 9040 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT ! -o lo -j DROP
-A OUTPUT -p icmp -j REJECT --reject-with icmp-port-unreachable
COMMIT

我尝试在 的开头*filter、其余规则之前添加这条规则,但所有连接都失败了:

-A OUTPUT -o lo -j ACCEPT
-A OUTPUT ! -d 10.192.0.0/10 -m owner ! --uid-owner debian-tor -j REJECT

为什么上述代码中的第二行会阻止所有流量?以下正确的规则是什么:

  • 允许所有传入
  • 允许所有传出到本地主机
  • 允许 debian-tor 用户发起的所有传出
  • 重定向所有传出的 UDP 53不是由 debian-tor 发起到 localhost 53
  • 重定向所有传出的 TCP 和 UDP不是由 debian-tor 发起到 localhost 9040
  • 阻止其他一切

相关内容