如何在 opensuse 上仅启用 tor 连接并监控流量?

如何在 opensuse 上仅启用 tor 连接并监控流量?

是否有任何程序或方法可以在 openSUSE 上仅启用安全的 tor 连接,如果我不小心打开了我的普通浏览器,它就不会连接。

另外,有没有一个程序可以让我实时监控我的网络流量,以便验证它是否正常工作。比如哪个程序连接到哪个 IP,以及它是否根本没有使用互联网。提前致谢。

我尝试使用内置的 YAST-Firewall,但发现它不太有用。

答案1

是的,你可以,但你不会喜欢它。Tor 的速度非常慢,即使只是浏览现代网页,速度也非常慢,对于其他任何事情来说更是如此。例如,它的高延迟和丢失数据包的倾向使其不适合实时双向通信。更糟糕的是,Tor 已被证明并不像我们所有人希望的那样安全——特别是如果你用它来规避政府监控。

话虽如此,Tor 的 Wiki 有一个指南可以帮助您启用透明代理(请参阅原文这里):

  1. 使用超级用户权限打开您的 Tor 配置文件(/etc/tor/torrc在 OpenSUSE 中)以添加以下行:

    VirtualAddrNetworkIPv4 10.192.0.0/10
    AutomapHostsOnResolve 1
    TransPort 9040
    DNSPort 53
    
  2. 为了通过 Tor 重定向 DNS 请求,请/etc/resolv.conf以超级用户权限打开文件,并用以下一行替换其中的内容:

    nameserver 127.0.0.1
    
  3. 编写一个iptables脚本,防止发往本地网络的数据包被重定向到 Tor。在下面的示例中,192.168.0.0/24192.168.1.0/24是本地网络:

    #!/bin/sh
    
    ### set variables
    #destinations you don't want routed through Tor
    _non_tor="192.168.1.0/24 192.168.0.0/24"
    
    #the UID that Tor runs as (varies from system to system)
    _tor_uid="109"
    
    #Tor's TransPort
    _trans_port="9040"
    
    ### flush iptables
    iptables -F
    iptables -t nat -F
    
    ### set iptables *nat
    iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
    iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 53
    
    #allow clearnet access for hosts in $_non_tor
    for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do
      iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
    done
    
    #redirect all other output to Tor's TransPort
    iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port
    
    ### set iptables *filter
    iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    #allow clearnet access for hosts in $_non_tor
    for _clearnet in $_non_tor 127.0.0.0/8; do
      iptables -A OUTPUT -d $_clearnet -j ACCEPT
    done
    
    #allow only Tor output
    iptables -A OUTPUT -m owner --uid-owner $_tor_uid -j ACCEPT
    iptables -A OUTPUT -j REJECT
    

您基本上已经完成了。您可能需要根据您的具体需求进行一些调整。例如,如果您设置了其他 NAT 转发规则,您可能需要iptables -F删除iptables -t nat -F

答案2

这可以使用 iptables 和用户模块来实现。

由于 tor 守护进程通常以用户“tor”的身份运行,我们可以利用 iptables 模块所有者根据用户 uid 过滤出站流量。

在这个例子中,我们将丢弃所有不是由运行 tor 守护进程的用户发起的流量。

首先,让我们假设您从一个空的防火墙策略开始。您希望这个策略有一个默认策略来丢弃所有流量。

iptables -P INPUT drop
iptables -P OUTPUT drop
iptables -P FORWARD drop

现在,您想要接受与已建立连接相关的入站流量。请注意,您只能根据用户名对传出流量进行过滤。您无法控制从互联网发送的数据包。

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

允许环回接口上的流量。这将允许您连接到在端口 9050 上运行的 tor socks 守护程序。

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

最后,您必须允许来自用户“tor”的流量。

iptables -A OUTPUT -o inet-iface -m owner --uid-owner tor-uid -j ACCEPT

将 inet-iface 和 tor-uid 替换为您连接到互联网的接口以及 tor 用户的 uid。

瞧,所有与 Tor 无关的流量现在都应该被阻止了。

相关内容