Pages

Saturday, 13 May 2017

搭建利用obfs4混淆的Tor bridge的过程

Tor的目的在其匿名性,众所周知,如果我们想连接到Tor网络可能需要一个网桥,一般的网桥还不行,因为会被检测到Tor流量,ip直接被ban掉,当我还知之甚少的时候,一个VPS的ip就被某知名防火墙封禁了3天,当然恢复后,这个ip也不好再用了。

Tor的节点分为三种

1.作为出口节点,Exit Nodes。出口节点实际上是暴露于互联网的,相当于最后真正去访问站点的那个人。
2.在Tor directory中列出的中继节点,叫Tor Relay。IP很可能被检测到,很可能被屏蔽。
3.在Tor directory中不列出的中继节点,叫Bridges Relay(又叫tor bridges),也就是我们这篇文章重点介绍的节点。它可以帮助你绕过网络运营商对于Tor的封锁

混淆插件

在过去的几年中,审查者开始可以屏蔽即使使用了Bridges的Tor clients。故,在严格审查的环境下,我们应该使用混淆插件进行规避,比如meek,比如obfs4,在这里,将着重介绍如何使用obfs4。

VPS对于Tor的支持

并非所有VPS商都允许使用Tor,所以应该事先了解政策支持情况,下面表格列出了常用的VPS支持情况:
VPS Bridges Relay Exit
DigitalOcean YES YES NO
Vultr YES YES NO
Linode YES YES Ambiguous
获取更多信息,可以参考支持/禁封列表
本文以Ubuntu Xenial和 Centos 7 为例.
(建议按此文https://briteming.blogspot.com/2017/05/obfs4tor.html 来进行操作)

Ubuntu Xenial 

1.下载并安装Tor

sources.list中添加源:
deb http://deb.torproject.org/torproject.org xenial main
deb-src http://deb.torproject.org/torproject.org xenial main
添加gpg key:
gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
安装tor:
apt-get update
apt-get install tor

2.下载并安装obfs4

sources.list添加源:
deb http://deb.torproject.org/torproject.org obfs4proxy main
安装
apt-get update && apt-get install obfs4proxy

3.配置Tor Bridges

首先,确认服务器上的时钟日期是正确的。
然后编辑/etc/tor/torrc,定义一个ORPort,不作为出口节点,设置成Bridge:
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 444 
Exitpolicy reject *:*  
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
PublishServerDescriptor 0
 
重启Tor服务:
service tor restart

4.使用网桥

查看日志文件tail -F /var/log/tor/notices.log,当看到有类似的输出,证明很成功:
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100%: Done
[notice] Now checking whether ORPort the-vps-ip:444 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent.
记住obfs4监听的地址。并且还能找到你的server identity fingerprintt,也复制下来
/var/lib/tor/pt_state/obfs4_bridgeline.txt文件中可以看到类似如下的内容:
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0
把Bridge去了,ip换了,端口写对了,fingerprint粘贴了,之后,把这行复制即可,这个,就是你的网桥了。愉快使用吧。

Centos 7

1.下载并安装Tor

安装tor:
yum install tor -y

2.编译安装obfs4

安装所需软件:
yum install git mercurial golang -y
开始安装obfs4proxy:
export GOPATH=`mktemp -d`
go get git.torproject.org/pluggable-transports/obfs4.git/obfs4proxy
cp $GOPATH/bin/obfs4proxy /usr/local/bin/

3.配置Tor Bridges

首先,确认服务器上的时钟日期是正确的。
然后编辑/etc/tor/torrc,定义一个ORPort,不作为出口节点,设置成Bridge:
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 444  
Exitpolicy reject *:*  
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/local/bin/obfs4proxy
PublishServerDescriptor 0
 
重启Tor服务:
service tor restart

4.使用网桥

查看日志文件tail -F /var/log/tor/notices.log,当看到有类似的输出,证明很成功:
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100%: Done
[notice] Now checking whether ORPort the-vps-ip:444 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent.
记住obfs4监听的地址。并且还能找到你的server identity fingerprint,也复制下来
/var/lib/tor/pt_state/obfs4_bridgeline.txt文件中可以看到类似如下的内容:
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0
把Bridge去了,ip换了,端口写对了,fingerprint粘贴了,之后,把这行复制即可,这个就是你的网桥了。
另外还需要注意对防火墙的配置:
vi /etc/firewalld/zones/public.xml
添加如下行:
<port protocol="tcp" port="ORPort端口"/>
<port protocol="udp" port="ORPort端口"/>
<port protocol="tcp" port="obfs4端口"/>
<port protocol="udp" port="obfs4端口"/>
使新规则生效:
firewall-cmd --complete-reload
至此,网桥可以使用了。
---------------------------------------------------------------------

如何优雅地用Tor(上篇)


今天,讲讲Windows和Linux上怎么流畅地用Tor,并摆脱臃肿的自带浏览器?Linux下怎么编译Tor和obfs4proxy?另外Tor广播的Bridge时常处于不可用状态,那么怎么在自己的VPS上搭建Tor的Bridge来自用?废话不多讲,开搞。

服务端搭建Tor Bridge

这一步是非必须的,你也可以自己找网桥使用,当然自己搭建的速度可能更好,具体怎么寻找和使用网桥请看'下篇'。
vps上安装tor和obfs4proxy
apt install tor
apt install obfs4proxy
tor和obfs4都安装成功了,那么编辑tor的配置文件torrc:
vi /etc/tor/torrc
填入下面内容:
1
2
3
4
5
6
7
8
9
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort auto
Exitpolicy reject *:*
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy #这个是obfs4路径
ServerTransportListenAddr obfs4 [::]:41563 #这个是自定义obfs4端口
ExtORPort auto
PublishServerDescriptor 0 #如果想分享你的obfs4网桥给其它人用,请删除这一行或者把0改成bridge,你的中继将发布到网桥授权机构
保存,然后重启tor:
systemctl restart tor
执行无错后查看tor的日志文件
cat /var/log/tor/notices.log
会出现下图这样的输入.
记下图片上部的server's identity key
server's identity key 8975AAF1A5317E04600F30AD3ED43083820FF516
然后找到obfs4网桥的cert
cat /var/lib/tor/pt_state/obfs4_bridgeline.txt
会看到下面内容:
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0
把上面IP ADDRESS换成自己的IP,PORT换成自定义的obfs4端口,FINGERPRINT换成你上面记下的key,就是一个完整的obfs4网桥了。下面是一个完整的网桥例子:
Bridge obfs4 66.42.73.78:41563 8975AAF1A5317E04600F30AD3ED43083820FF516 cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0
接下来就可以使用自己的网桥进行连接了。当然你也可以从官方获取网桥进行桥接,下面是免费获取网桥页面:
下面,讲讲在Windows和Linux客户端下怎么用?

Windows上Tor的使用

由于对Windows不是很熟悉,也就没有专门去编译tor和obfs4的exe单文件,直接去官方选择Windows下载:
下载解压后,把tor里面的文件按照下面的文件格式组装一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+---Data
| geoip
| geoip6
|
+---PluggableTransports
| obfs4proxy.exe
|
| libcrypto-1_1.dll
| libevent-2-1-6.dll
| libevent_core-2-1-6.dll
| libevent_extra-2-1-6.dll
| libgcc_s_sjlj-1.dll
| libssp-0.dll
| libssl-1_1.dll
| libwinpthread-1.dll
| tor.exe
| torrc
| zlib1.dll
\ tor_start.bat
Windows下的obfs4proxy.exe文件比较麻烦,单文件没找到,直接去tor浏览器Tor Browser\Browser\TorBrowser\Tor\PluggableTransports文件夹提取一下。
然后用文本编辑器或记事本新建一个名为torrc文件,不需要后缀,填入下面内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#下面是跨机共享代理,去掉前面#号即可开启
#SocksPort 0.0.0.0:9050
#下面是前置代理,去掉前面#号即可开启
#HTTPSProxy 127.0.0.1:8787
#Socks5Proxy 127.0.0.1:1080
#下面数字改为0,关闭自带网桥连接,开启前置代理
UseBridges 1
DataDirectory ./Data
GeoIPFile ./Data/geoip
GeoIPv6File ./Data/geoip6
#下面日志路径,打开后终端不会显示连接日志
#Log notice file ./Data/tor.log
#StrictNodes 1
AvoidDiskWrites 1
#下面是排除邪恶国家节点,去掉前面#号即可开启
#ExcludeExitNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu}
#ExcludeNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu}

ClientTransportPlugin obfs4 exec ./PluggableTransports/obfs4proxy managed
#普通网桥格式
Bridge 66.42.73.78:40367 8975AAF1A5317E04600F30AD3ED43083820FF516
#obfs4网桥按下面这样填写,注意:自己网桥请严格按下面格式填写,否则会报错!
Bridge obfs4 66.42.73.78:41563 8975AAF1A5317E04600F30AD3ED43083820FF516 cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0
#tor默认的重建链路的时间是30s,可以适当延长时间保证速度
NewCircuitPeriod 900
默认是使用网桥连接,如果你没有搭建网桥或者获取的网桥连接不上,你也可以开启前置代理使用。
开启前置代理方法:去掉 Socks5Proxy 127.0.0.1:1080 前面的#号,当然也可以改为你前置客户端使用的其它端口,tor支持socks5和https前置。然后把 UseBridges 1 改为 0 就可以使用前置了。
torrc文件放在上面主目录,参照上面文件结构。完成后,还需要新建一个bat启动脚本,记事本或编辑器新建tor_start.bat文件,填入下面内容即可:
1
2
tor -f torrc
cmd/k
本来只需要tor -f torrc就可以了,如果闪退,就添加下面cmd/ktor_start.bat文件放入主目录,参照上面文件结构。
完成后,点击tor_start.bat启动就好了。Tor的端口 Socks5 127.0.0.1:9050 可以配合浏览器插件SwitchyOmega,或者其它方式使用。

Linux下编译使用Tor

其实Tor和obfs4proxy安装很简单,因为软件库里都有,直接下面两条命令即可安装完成,但碰上俺这种有洁癖的,就是喜欢自己编译。

apt安装

apt install tor
apt install obfs4proxy
经推友提醒,这里讲下apt安装后的运行路径
apt安装后tor和obfs4proxy二进制文件分别在/usr/bin/里面,这里需要修改一下torrc文件,一起启动obfs4proxy.
vi /etc/tor/torrc
添加ClientTransportPlugin路径为
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed
当然,网桥和前置什么的都可以在这里面设置。
保存后就可以直接tor运行了。

编译Tor

由于系统不一,编译时缺什么依赖的话,自己按错误提示添加。
1
2
3
4
5
git clone https://github.com/torproject/tor.git

cd tor

sh autogen.sh && ./configure --disable-asciidoc && make && make install
Tor二进制文件在/src/app/里面。

编译obfs4

go的版本号必须是1.11.0或更高版本,go get需要挂代理。
1
2
3
4
5
6
7
git clone https://github.com/Yawning/obfs4.git

cd obfs4

go get -d ...

go build -o obfs4proxy/obfs4proxy ./obfs4proxy
obf4proxy二进制文件在/obfs4/obfs4proxy/里面。
上面apt安装和手工编译二选一,然后,就是编写torrc文件了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#SocksPort 0.0.0.0:9050

#HTTPSProxy 127.0.0.1:8787
#Socks5Proxy 127.0.0.1:1080

UseBridges 1
#Log notice file ./tor.log
AvoidDiskWrites 1

#StrictNodes 1
#ExcludeExitNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu}
#ExcludeNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu}

ClientTransportPlugin obfs4 exec ./obfs4proxy managed
#下面是apt安装路径
#ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed

Bridge 66.42.73.78:40367 8975AAF1A5317E04600F30AD3ED43083820FF516

Bridge obfs4 66.42.73.78:41563 8975AAF1A5317E04600F30AD3ED43083820FF516 cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0

NewCircuitPeriod 900
Linux下把编译好的tor obfs4proxy 和 torrc 放在同一个文件夹下,给文件夹755权限,cd到文件夹,运行下面命令即可:
./tor -f torrc
到此,教程也就写的差不多了。最后Tor的端口 Socks5 127.0.0.1:9050 可以配合浏览器插件SwitchyOmega,或者其它方式使用。
下面页面有俺用最新源码编译的Linux_amd64,Tor和obfs4proxy,当然Windows版本也有,里面内置几十个可用网桥,当然你也可以开启前置使用。

其它

下面就聊聊关于安全的问题,本教程不为安全负责,只是写出一种轻量便携的方法,其后的浏览器加固,可以看'下篇'。
关于匿名并不是你想象的这么简单,技术方面讲,无非就是前置,网桥,虚拟机,浏览器加固等等,这其中有几项争议比较大:
1:到底是用前置更安全还是使用网桥安全?
2:邪恶国家节点需不需要排除?
3:Tor流量特征是不是很明显?在现有的用户基数下这些特征够不够得上威胁?
以上问题,有些人会说,这些问题太简单了。呵呵,你认为俺会提简单问题?大家可以Google多看看,算是增长一些匿名知识。有些问题的答案并非你想象的那样子,俺这里就不给出答案了,需要你自己去探索。
然后说的是,技术以外的部分,匿名时的环境隔离和互动频率,这其实是很重要的部分,是不是彻底与内网隔离?包括身份,付款方式,行为特征,互动规律等等,这一部分建议大家看看编程随想的博客,他讲的比较详细,俺也就是献献丑。
参考:

下篇

这一篇主要讲tor网桥直连,怎么寻找普通网桥和obfs4网桥?怎么灵活配置torrc文件?以及怎么设置浏览器插件和安全加固?

获取tor网桥

tor网桥洋文叫“Tor Bridge”,用于桥接洋葱网络,而俺们要找的网桥是入口节点,用于直接连接tor,下面讲讲怎么找这个入口节点并测试节点可用性以及速度快慢。

1:首先可以去官方页面获取,此页面点击上面“直接给我网桥”获取的是普通网桥,点击下面“获取网桥”获取的是obfs4网桥,也就是你每次可以获取6个网桥,如果是用tor连接此页面的话,因为tor的IP总是在变的,于是你隔过几分钟就可以再次获取一次,这样的话,你可以短时间内获取大量网桥。下面是获取页面:

https://bridges.torproject.org/options

2:然后是邮件获取,gmail发送邮件至bridges@torproject.org,稍后就会收到torproject给你发来的网桥,如果没收到,那肯定是在垃圾邮件内。

邮件主题: get bridges

邮件内容: get transport obfs4

3:最后是Telegram订阅,订阅地址:

https://t.me/tor_bridges

上面各种渠道获取后,相信你已找到大量的网桥了。当然,这些网桥在天朝不是个个都能用的,下面就来测试节点的可用性。

测试入口节点可用性

Bridge obfs4 212.83.188.151:9822 0F2A94473B79300F9AF0D52C756F64B9D93D5C7B cert=U09xY9yyqQbtHBiW7fTJgnty7L3s9S5GztGJcMTciVYQK0cRiPUYdaIbEfpZUptbYx2CeQ iat-mode=0

上面是一个完整的obfs4网桥地址,Windows打开CMD窗口,ping一下前面的数字IP

ping 212.83.188.151

留下能ping通的,建议延时500ms以内,丢包不超过25%,不通的直接就可以扔掉了。ping通的网桥,俺们可以到下面页面测试一下速率。

https://metrics.torproject.org/rs.html

输入IP后面的40位ID进行测试,以上面网桥例,也就是:

0F2A94473B79300F9AF0D52C756F64B9D93D5C7B

建议留下带宽512 KiB/s及以上的网桥,当然带宽是越大越好,取决于你手上有多少网桥了。好了,下面讲讲这些网桥怎么用。

torrc文件详解

torrc文件也就是tor的配置文件,上面找好的网桥,添加到torrc里就可以使用了。下面详细讲讲torrc怎么配置,当然具体用法你得结合’上篇‘使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#下面是跨机共享代理,去掉前面#号即可开启
#SocksPort 0.0.0.0:9050
#下面是前置代理,去掉前面#号即可开启
#HTTPSProxy 127.0.0.1:8787
#Socks5Proxy 127.0.0.1:1080
#下面数字改为0,关闭自带网桥连接,开启前置代理
UseBridges 1

DataDirectory ./Data
#下面是geoip文件路径,geoip的作用也就是判定节点地理位置,配合节点排除或指定节点国家使用,另外作用是显示洋葱浏览器上的国旗、地区。
GeoIPFile ./Data/geoip
GeoIPv6File ./Data/geoip6
#下面日志路径,打开后终端不会显示连接日志
#Log notice file ./Data/tor.log

#较少对硬盘的读写
AvoidDiskWrites 1

#下面是排除邪恶国家节点,去掉前面#号即可开启
#ExcludeExitNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu}
#ExcludeNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu}
#下面是强制排除邪恶国家节点,即使Tor找不到可用的线路,也不会去尝试这些国家的节点,去掉前面#号开启
#StrictNodes 1

#下面是指定国家出口节点,比如德国,法国,荷兰
ExitNodes {de},{fr},{nl}
#下面是指定出口IP,和上面指定出口国家不可同时开启,二选一
#ExitNodes 185.248.160.65,54.37.16.241,46.182.106.190
#StrictExitNodes的意思是需要按照ExitNodes指定节点作为出口
StrictExitNodes 1

#这个是obfs4proxy的路径
ClientTransportPlugin obfs4 exec ./PluggableTransports/obfs4proxy managed

#下面是普通网桥写法:
Bridge 66.42.73.78:40367 8975AAF1A5317E04600F30AD3ED43083820FF516
#下面是obfs4网桥,可以多填,一行一个,按下面格式填写:
Bridge obfs4 66.42.73.78:41563 8975AAF1A5317E04600F30AD3ED43083820FF516 cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0

#tor默认的重建链路的时间是30s,可以适当延长时间保证速度
NewCircuitPeriod 900

torrc配置文件尽量简洁,可用网桥不要填太多,建议10个左右,太多的话不利于排错,而且会拖慢整体速度。

指定出口节点

上面影响tor速度的是入口节点,也就是俺们找的网桥,另一个是出口节点,中间节点不可控所以不做考虑。简单点讲也就是控制好入口和出口的带宽,也就相应能提升速度。

入口刚才已经讲过了,那么讲讲出口节点,出口节点可以在YouTube上观察各个地区的速率,然后根据快慢设置出口国家,俺这边测试欧洲国家节点比较友好。具体设置出口国家方法看上面torrc文件注释。附上:国家地区代码

另外还有一种方法,会影响tor的匿名性,可相应稳定tor的速度。就是指定出口IP,怎么指定出口IP呢?下面给出方法:

首先,打开Tor官方所有实时出口节点列表:

https://check.torproject.org/exit-addresses

然后,复制出口IP的40位identity key到测速页面测试,选择带宽大于20MiB/s并且支持80和443端口的节点。

最后,在torrc文件里配置如下,即可指定出口节点。注:这样配置虽然能稳定tor的速度,但会影响tor的匿名性,本人是不建议采用的,大家酌情配置!

1
2
3
#建议填35个大带宽、支持80443端口的IP,然后IP不要填错了,填写测速页面Exit Addresses下面的IP
StrictExitNodes 1
ExitNodes 185.248.160.65,54.37.16.241,46.182.106.190

另,本人建议:注重安全的用户尽量不要折腾出口节点,包括指定出口国家,保持默认就好。因为更改节点会导致指纹增加,详情见下文。

浏览器加固

首先是打上Privacy Badger和HTTPS Everywhere插件,来自大名鼎鼎的 EFF 也就是电子前哨基金会。

1:Privacy Badger中文名隐私獾,主要是限制各类商业trackers,此插件还能关闭WebRTC,插件安装后,点击设置标志然后勾选“阻止 WebRTC 泄露本地 IP 地址”即可。插件下载页面:

https://privacybadger.org/

2:使用HTTPS Everywhere插件强制https连接,tor上可以防止蜜罐窥探到访问内容:

https://www.eff.org/https-everywhere

3:Neat URL此插件能清除URL内的parameters,防止类似Google Analytics的分析流量,项目地址:

https://github.com/Smile4ever/Neat-URL

4:还有一个很野蛮的加固浏览器方法,此方法会严重影响浏览器易用性,严重警告,大家酌情添加,下面是项目地址:

https://github.com/pyllyukko/user.js

简单点讲就是下载user.js文件放入火狐 [firefox directory]\Data\profile\ 文件夹里,重启即可。

浏览器加固就先讲这么多,其它还有阻止部分Javascript APIs生成指纹乃至直接禁用JS脚本,删除不安全的根证书,启用DNS Over HTTPS等老生常谈的话题就不展开了。

5:最后,推荐一下SwitchyOmega插件,tor的端口是:Socks5 127.0.0.1:9050 下面是SwitchyOmega插件用法:

https://yuan.ga/switchyomega-tutorial/

回答几个问题

1:到底是用前置更安全还是使用网桥安全?

回答这个问题之前,先普及一个安全概念:“使用服务越多,中间环节越长,越会增大攻击面。”前置也不例外,比如前置VPS商,如果是TLS前置的话,那中间环节就更多了比如域名商,DNS解析商等等。一次意外的拖库将导致你的整个互联网身份全部暴露。洋文比较好的可以看看下面这篇文章的详细论述:

https://matt.traudt.xyz/p/mRikAa4h.html

所以对于前置,大家也不要过度解读,以为前置会比裸tor安全,别忘了tor还有个obfs4proxy混淆,这个下一个问题会详细解答。

2:Tor流量特征是不是很明显?

既然讲到流量特征,那么就得先讲讲tor内置的obfs4proxy,下面是obfs4网桥工作路径:

1
tor client ----> obfs4proxy client ----> censor ----> obfs4proxy server ----> tor bridge

可以看到,tor客户端发送数据到obfs4proxy,obfs4proxy会对数据包进行拆分或填充模糊其网络指纹,再转发给tor网桥。obfs4proxy主要进行以下工作:

1:obfs4通过填充数据(包括在握手数据包中添加填充数据)来加密tor流量并混淆数据包大小特征。

2:通过IAT模式拆分较大的obfs4数据包,以模糊其网络指纹。

以上,可以知道obfs4proxy就是用来模糊tor的流量特征的。再加上tor的用户基数是不小的,即使有特征,在现有用户基数下也够不上威胁。下面是全球Tor用户使用人数的统计:

https://metrics.torproject.org/userstats-bridge-country.html

3:邪恶国家节点需不需要排除?

关于tor节点排除和出口更改,官方是明确不建议这么做的:

https://2019.www.torproject.org/docs/faq#ChooseEntryExit

更改节点会导致指纹增加:

https://2019.www.torproject.org/docs/faq#ChoosePathCountries

网桥这一块并不能成为tor安全环境的重点环节,因现在的网站基本都是SSL加密,网桥是无日志的,即使是蜜罐也不能拿你怎么办;靠蜜罐抓人相当于守株待兔,收益与成本明显不成正比;再说,人家设置蜜罐节点干嘛不去自由国家,就非得傻愣愣地在你们知道的几个专制国家设置蜜罐?

最后,下面页面有俺用最新源码编译的Linux_amd64,Tor和obfs4proxy,当然Windows版本也有,内置几十个可用网桥。运行后,浏览器设置端口 Socks5 127.0.0.1:9050 即可翻墙。

----------------------------------------------------------------------------

相关帖子:
http://briteming.blogspot.com/2015/07/obfs4.html
http://briteming.blogspot.com/2015/08/obfs4proxy-shadowsocks.html

No comments:

Post a Comment