我们的目标是:用树莓派实现-硬件Tor,通电自动连接Tor节点,所有流量全部强制通过Tor节点引出,到达目标地址。断线无限重连。不管是手机,还是平板,还是PC,只要连接到树莓派之后,全部实现全程Tor节点流量,实现科学上网。
0×01:前期准备
1.1:准备硬件:
1.2:安装系统
下载kali-2.1.2-rpi.img,并且使用win32diskimager写入SD卡。
将电源+电源线+树莓派B板+无线网卡+SD卡接好,通电,连接到家庭路由器上,此处为常用的姿势,不可能插错的,所以就不上图了。树莓派上四个灯都点亮了之后,进入家庭路由器网关,找到树莓派的IP地址,用Putty软件SSH连到树莓派上,kali的SSHD是默认开启的,账号是root,密码是toor。连接时会弹出是否接受SSH秘钥,选择“是”接受。连接成功的正确姿势是这样的:
1.3:添加源&更新
如果不更新,后面很多软件会无法进行自动化安装。Vi打开/etc/apt/sources.list,在源里添加以下内容,然后进行更新,apt-get update && apt-get upgrade。根据网速可能需要若干小时,因为要连欧洲服务器,所以速度很龟毛。完成后手动reboot重启。
deb http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb http://mirrors.ustc.edu.cn/kali-security kali/updates main contrib non-free
deb http://mirrors.aliyun.com/kali kali main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali main non-free contrib
deb http://mirrors.aliyun.com/kali-security kali/updates main contrib non-free
1.4:可选项
恢复只有官方Wheezy镜像才自带的raspi-config功能:安装过原版系统的都知道,原版功能确实很便利。(下方文件可能有更新,可根据需求安装最新版)
wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20150131-1_all.deb
wget http://http.us.debian.org/debian/pool/main/t/triggerhappy/triggerhappy_0.3.4-2_armel.deb
wget http://http.us.debian.org/debian/pool/main/l/lua5.1/lua5.1_5.1.5-7.1_armel.deb #以上为下载主安装包和依赖包
dpkg -i triggerhappy_0.3.4-2_armel.deb
dpkg -i lua5.1_5.1.5-7.1_armel.deb
dpkg -i raspi-config_20150131-1_all.deb
以上是安装依赖包和主包 注意要严格按照安装顺序
raspi-config的配置过程省略,网上遍地都是,以上准备工作结束。
0×02:配置网络
2.1:简介
这里采用的是无线网卡(wlan0)连接家庭无线网关上网,有线网口(eth0)作为hdcpd服务器连接AP分发IP地址作为网关收集client信息。这样做有几个优点:
1.wlan0可以后期变更为市面上有售的无线网卡,作为网络出口,或者可以连接手机热点,手机作为出口,达到移动网关的目的。这些均可以充电宝供电。
2,eth0连接AP,可以扩大信号范围,增强收集强度,在树莓派上设置wireshark拦截所有请求,达到中间人的目的,或者安装XAMPP自建钓鱼网站,骗取用户账户和密码。
3,任何终端均可自行连接到AP上,自动获得IP地址,对树莓派进行配置,比较方便。可以是电脑,平板,或者手机,在公共场合操作非常方便,不必一直扛着电脑。(改掉树莓派上的SSH的默认密码,否则任何人都可以连上你的树莓派。)
4,如果全部要求可移动,那可以增加一个wlan1作为dhcpd服务器分发IP,这样的缺点是信号比较弱。
现在开始搭建:
2.2:
无线网卡设置DHCP模式,连接上无线网:修改/etc/network/interfaces,添加:
allow-hotplug wlan0 #这是网卡wlan0
iface wlan0 inet dhcp #把wlan0设置成dhcp模式,以自动获取ip地址
wpa-ssid ChinaNGB-WF #这是你的ssid
wpa-psk my123456 #这是ssid的wifi密码
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #把这一行注释掉
iface default inet dhcp #默认dhcp模式
然后reboot,然后无线网卡上小灯开始闪呀闪,就知道已经开始工作了。然后再去路由器上找到e8开头的MAC地址(EPUB网卡),SSH连上去。
输入ifconfig命令:会出现已经获取到的ip地址等等,说明已经成功连上无线。这时候你可以把有线断掉了,把eth0口腾空出来。
(PS:在户外的时候,没有家庭网络,但是我们有手机,可以共享无线热点出来,我们可以共享无线热点,同时连接上树莓派进行设置和监视,同时进行“工作”。此时要把wlan设置连上我们手机分享出的热点。)
2.3
把腾出来的eth0设置成静态地址:修改/etc/network/interfaces:
2.4:安装和配置
安装DHCP服务器为接进热点的设备分配IP:
apt-get install isc-dhcp-server
修改/etc/dhcp/dhcpd.conf:将里面所有的内容都#掉,末尾加上:
ddns-update-style none;default-lease-time 600;
max-lease-time 7200;authoritative;log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.2 192.168.10.254;
option domain-name-servers 8.8.8.8;
option domain-name "raspberry";
option routers 192.168.10.1; option broadcast-address 192.168.10.255;
}→→→→→修改/etc/default/isc-dhcp-server:同理将所有内容#掉,末尾加上:
DHCPD_CONF="/etc/dhcp/dhcpd.conf"INTERFACES="eth0"
→→→→→isc-dhcp-server这个软件有一点小缺陷,需要自建一个leases文件:
touch /var/lib/dhcp/dhcp.leases
→→→→→启动isc-dhcp-server:
service isc-dhcp-server start
将isc-dhcp-server加入开机自启:
update-rc.d isc-dhcp-server enable0x02.4:
添加iptables引导流量走向:打开流量转发:A.修改/etc/sysctl.conf:net.ipv4.ip_forward=1 B.修改/proc/sys/net/ipv4/ip_forward为1:
修改proc下的文件有点特殊 不可用vi,而是用echo命令的方式#echo 1 > /proc/sys/net/ipv4/ip_forward 添加转发规则:然后用iptables -t nat -S和iptables -S检查是否添加成功开NAT:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE wlan的全部进eth,全接受sudo iptables -A FORWARD -i wlan0 -o eth0 -m state –state RELATED,ESTABLISHED -j ACCEPTeth的全部进wlan,全接受# sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT规则开机自添加# sh -c “iptables-save > /etc/iptables.ipv4.nat”#reboot此时已经可以连接eth0实现上网。打开水星的AP,设置SSID为i-Shanghai,密码为空,设置过程略。eth0连接到AP的lan口,启动AP,任何客户端连接到AP即自动连接到eth0口。
0×03
安装监视软件,监测树莓派实时动态→netdata ,如果需要年月周汇总动态,可以选择Monitorix(已亲测,可以安装。)。参考文档:https://github.com/firehol/netdata/wiki/Installation
3.1:安装netdata:安装所有的依赖包配置环境#apt-get install zlib1g-dev gcc make git autoconf autogen automake pkg-config
3.2:第一行从GitHub下载编译文件,然后cd到文件夹,然后运行编译:
git clone https://github.com/firehol/netdata.git --depth=1
cd netdata#./netdata-installer.sh
3.3:加入开机启动,在rc.local下加入/usr/sbin/netdata,然后reboot重启。
3.4:然后在任意浏览器打开 树莓派IP地址:19999,别忘了端口号,默认是19999,然后正确的姿势如下:
正确配置和连接好后的拓补如下:
0×04
好了,以上均为foreplay,前戏,现在进入正题。我们的目标是:(没有蛀牙!)用树莓派实现《硬件Tor》,通电自动连接Tor节点,所有流量全部强制通过Tor节点引出,到达目标地址。断线无限重连。不管是手机,还是平板,还是PC,只要连接到i-Shaghai之后,全部实现全程Tor节点流量,实现科学上网。
4.1:Tor是什么:Tor是加密互联网路由器,可以将你的流量加密后在Tor节点上至少进行三层跳板,跳板不定期随机耦合,到达目的网址,混淆你的IP地址,由于其加密传输,可以躲过·政·府·的关键词过滤探针,在国外广泛被应用于暗网入口。有了这款《硬件Tor》之后,可以随时随地进入暗网。本文不介绍如何进入暗网。
4.2:网桥是什么:以上这么多福利满满,在本国被禁掉也是理所当然的事情。所以在国内,第一步是连接上Tor节点之前,需要搭一座桥,以连接上节点服务器。这座桥就叫做网桥。第一代网桥只是简简单单的IP地址,现在的第三代抗干扰混淆网桥(obfsproxy)大概的姿势是这样的:可以突破封锁,直达国外。(以下网桥时效性不保证)
obfs3 37.187.65.72:35304 E47EC8C02C116B77D04738FA2E7B427F241A0164
obfs3 194.132.209.8:57356 B43A8BDE049073CA7AA7D3D46A7F97A93042DF35
obfs3 23.252.105.31:3443 CDAE9FD7710761D1914182F62B1B47F2FBF1FDE1
4.3:网桥这么宝贵,如何获取网桥,本文推荐的方式是去官网直接索取网桥。地址(需要科学上网才可以登录)是:https://bridges.torproject.org/bridges?transport=obfs3
4.4:接下来就是重头戏安装和配置Tor了:(以下需要在VPN环境下进行,无线网卡需要连接到VPN内部)在更新源里/etc/apt/sources.list添加以下两项:deb http://deb.torproject.org/torproject.org wheezy maindeb-src http://deb.torproject.org/torproject.org wheezy main更新和导出前面包和秘钥:#gpg –keyserver keys.gnupg.net –recv 886DDD89#gpg –export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -然后:更新源和安装最新版的Tor:apt-get updateapt-get install tor deb.torproject.org-keyring此时最新版的Tor就安装好了,截止发稿,版本为:0.2.7.6-1
4.5:安装obfsproxy:
#apt-get install obfsproxy 完成后最新版如下图:
4.6:接下来就是对Tor进行配置(离成功越来越近了,欣喜!):修改/etc/tor/torrc:
SocksPort 9050
SocksListenAddress 192.168.10.1:9050 # 树莓派IP
ClientOnly 1
VirtualAddrNetwork 10.192.0.0/10
DNSPort 53
DNSListenAddress 192.168.10.1
AutomapHostsOnResolve 1
AutomapHostsSuffixes .onion,.exit
TransPort 9040
TransListenAddress 192.168.10.1
Log notice file /var/log/tor/notices.log # log日志路径
RunAsDaemon 1
ClientTransportPlugin obfs3 exec /usr/local/bin/obfsproxy managed # obfsproxy路径
UseBridges 1
Bridge obfs3 37.187.65.72:35304 E47EC8C02C116B77D04738FA2E7B427F241A0164 #刚刚获取的网桥
Bridge obfs3 194.132.209.8:57356 B43A8BDE049073CA7AA7D3D46A7F97A93042DF35
Bridge obfs3 23.252.105.31:3443 CDAE9FD7710761D1914182F62B1B47F2FBF1FDE1
4.7:添加iptables规则
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j REDIRECT --to-ports 22
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 19999 -j REDIRECT --to-ports 19999
sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --syn -j REDIRECT --to-ports 9040
为了让上面的规则在开始时自动添加,执行:
# sh -c “iptables-save > /etc/iptables.ipv4.nat”
第一条命令为22端口开一个特例,这样SSH才能连上树莓派。
第二条命令为19999端口开一个特例,这样netdata才能连上树莓派。
第三条命令将所有DNS(端口号53)请求转发到配置文件torrc中的DNSPort中
第四条命令将所有TCP流量转发到配置文件torrc中的TransPort中
4.8:启动tor客户端进程:
# service tor start
在/var/log/tor/notices.log中查看tor启动情况,正常的是:Apr 13 13:32:46.000 [notice] Bootstrapped 5%: Connecting to directory server
Apr 13 13:32:46.000 [warn] We were supposed to connect to bridge ’162.217.177.95:18869′ using pluggable transport ‘obfs4′, but we can’t find a pluggable transport proxy supporting ‘obfs4′. This can happen if you haven’t provided a ClientTransportPlugin line, or if your pluggable transport proxy stopped running.
Apr 13 13:32:47.000 [notice] Bootstrapped 10%: Finishing handshake with directory server
Apr 13 13:32:57.000 [notice] Bootstrapped 15%: Establishing an encrypted directory connection
Apr 13 13:32:58.000 [notice] Bootstrapped 20%: Asking for networkstatus consensus
Apr 13 13:32:58.000 [notice] Bootstrapped 25%: Loading networkstatus consensus
Apr 13 13:33:22.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Apr 13 13:33:23.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Apr 13 13:33:28.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Apr 13 13:33:28.000 [notice] Bootstrapped 100%: Done
然后任何时候reboot,树莓派会自动启动,开始连接加密节点,同时eth0口等待你的终端进行连接,我们的目的已经实现。网络出口会自动间隔几分钟就会跳动一次,表现为出口IP会不断变化,隐藏你的真实身份。这时候,你可以畅享目前为止军方都无法破解的加密服务了。
* 作者:Roy_Chen,本文属FreeBuf原创奖励计划文章,未经许可禁止转载