phoenix-powertorで複数のサーバーを経由し、ホストの特定を困難にする方法を紹介します

通常、ネットワークに接続すると、こちらのグローバルIPアドレスが管理者に伝わります。

これは、Webサイトのブラウジングでも同じで、サイトにアクセスすると、サイト管理者にはこちらのグローバルIPが伝わります。

このIPアドレスからは、使用しているネットワークサービス(whoisなど)から、住んでいる地域の情報(geoipなど)などを引き出すことが可能です。

これらの情報は、企業の情報収集活動から広告の内容、更には、サイバー攻撃に利用されることも少なくありません。

したがって、ネットワークに接続する際は、直接ではなく、Tor経由に接続するなどして、自衛する必要性が高まってきているように感じます。

そんなこともあり、自分の場合、許可を得て、VPN Server経由で接続していたのですが、Tor経由のほうが若干遅くなるけど、様々な端末をTor経由で使ってみました。

心なしか、TwitterやAmazonの広告などが個人的なブラウジング内容とはあまり関係のないものになったような気がしますね。

(最近、Twitterの広告が酷すぎて、早くTwitterに変わるサービス見つけたい…)

Tor for Android

Google PlayからOrbotをインストールします。そして、透過プロキシを有効にします。

しかし、アプリごとに個別にProxy設定がなされている事が多いため、そのままでは、接続不能になるアプリが多いです。今回は、Firefox for Androidの設定方法を紹介しますが、個別に設定していくと、透過プロキシを自動化していても接続可能になります。

よくわからない方は、匿名性が犠牲(一部のアプリのみで有効)になるものの、透過プロキシは自動化しないほうが良いかもしれません。

Firefox:Proxy Mobileのインストール方法

今回、この方法は採用しません。

  • Guardian Projectをダウンロード後、.xpi.zipに変更して、解凍

  • install.rdfを編集して、<em:maxVersion>20.*</em:maxVersion>にする

  • すべてのファイルをzipで圧縮し、.zip.xpiにリネーム

  • ファイルをWebサーバーにアップロードし、http://xxx.xxx.xxx.xxx/proxymob.xpiにアクセスし、インストール

Installing Extensions can be hosted on websites and installed using installTrigger. Make sure the webserver is serving the extension XPI with the right MIME type (application/x-xpinstall). The add-on installation UI should appear after clicking the link. Fennec supports a basic Add-on Manager user interface, which allows a user to manage extensions. Using this interface, a user can also find and install extensions from AMO (addons.mozila.org). Extensions can be removed using the same dialog.

https://www.rootlinks.net/2013/03/13/install-the-proxy-mobile-to-firefox-for-andoridmobile-add-ons/

Firefox:about:config for Orbot

今回は、プロキシの設定を手動で行います。

まず、Firefox for Androidでabout:configにアクセスして、proxyで検索して、設定を変更します。

1
2
3
4
5
6
7
8
network.proxy.socks = 127.0.0.1
network.proxy.socks_port = 9050
network.proxy.socks_remote_dns = true
network.proxy.type = 1
#network.proxy.http = 127.0.0.1
#network.proxy.http_port = 8118
#network.proxy.ssl = 127.0.0.1
#network.proxy.ssl_port = 8118

https://www.flamingspork.com/blog/2012/06/28/tor-firefox-twitter-not-rooted-android-awesome/

Orbotを有効にし、透過プロキシが設定されていることを確認して、Firefoxを再起動して自身のグローバルIPアドレスを確認します。

確認くん : http://www.ugtop.com/spill.shtml

Torでアクセスすると、世界中のTorサーバーを経由させるためにページの読み込みが遅くなりますが、グローバルIPアドレスからの追跡は困難になります。

あと、パスワード入力はブラウザ側からは丸見えなので、入力しないようにしてください。これは、Orwebを使った時も同じです。

Tor for Arch Linux

これは、Arch Wiki - Torを見てもよくわからないと思いますので、解説します。torの設定は、/etc/tor/torrcで設定するのですが、デフォルトの設定ファイルでは動作しませんので、空の設定ファイルを置くか、コメントアウトします。

ここでは、/etc/tor/torrc-distの設定ファイル(コメントアウト)を上書きします。また、GUIメニュー等があったほうが分かりやすいですし、vidaliaをインストールしておきます。

手順としては以下の様な感じになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ gpg --recv-keys 0x63FEE659

$ yaourt -S vidalia

$ vidalia
C-c

# vidaliaで設定した設定ファイルは ~/.vidalia/torrc に置かれますので、設定後にこれを /etc/tor/torrc にコピーしてもよいです
$ sudo cp /etc/tor/torrc-dist /etc/tor/torrc

$ tor &
------------------------
$ chromium --proxy-server="socks://localhost:9050"

# これについては後述します
$ sudo systemctl enable tor

ちなみに、Torを使う際は、検索エンジンやその他においてGoogleが関係しているものは使わないようにしたほうが良いです。セキュリティ警告が出ます。なので、基本的には、Chromiumもおすすめしません。

検索するにしても、Google検索エンジンを使っているstartpage.comを使ったほうが良いと思います。

startpage.com : startpage.com/do/search?q=%s

また、FirefoxでTor経由するには、SocksにProxyを設定する必要があります。つまり、以下の様な設定を行うわけですね。network.proxy.httpなどはデフォルトで。これは、Firefox for Androidでも確認しましたが、念のため。

1
2
3
4
network.proxy.socks = 127.0.0.1
network.proxy.socks_port = 9050
network.proxy.type = 1
network.proxy.socks_remote_dns = true

In Preferences > Advanced > Network tab > Settings manually set Firefox to use the SOCKS proxy localhost with port 9050. Then you must type about:config into the address bar and void your warranty. Change network.proxy.socks_remote_dns to true and restart the browser. This channels all DNS requests through TOR’s socks proxy.

Tor can be used with an HTTP proxy like Polipo or Privoxy, however the Tor dev team recommends using the SOCKS5 library since browsers directly support it. The FoxyProxy add-on allows you to specify multiple proxies for different URLs or for all your browsing. After restarting Firefox manually set Firefox to port 8118 on localhost, which is where Polipo or Privoxy are running. These settings can be access under Add > Standard proxy type. Select a proxy label (e.g Tor) and enter the port and host into the HTTP Proxy and SSL Proxy fields. To check if Tor is functioning properly visit the Tor Check website and toggle Tor.

https://wiki.archlinux.org/index.php/Tor

Tor for Mac

MacでTorを常用するのは非常に面倒くさいです。それは主に設定の自由度のせいだと思うけど、Linuxの場合は、割りと簡単な気がします。ちなみに、Macの場合は、たとえば、ChromeでTor経由でブラウジングするには、以下の手順になります。

1
2
3
4
$ brew install tor torsocks
$ tor &
---------------------
$ open -a Google\ Chrome --args --proxy-server=="socks5://localhost:9050" --host-resolver-rules="MAP * 0.0.0.0, EXCLUDE localhost"

スタート時に有効にするには、面倒だけどスクリプトエディタopen -a Script\ EditorでAppleScriptをアプリケーション形式で保存し、それをログイン項目に登録する必要が出てきます。

1
2
3
4
tell application "Terminal"
  activate
  do script "tor &" in window 1
end tell

追記です。以下のコマンドでもログイン時にスクリプトを実行することが出来ました。

1
2
3
4
5
# ログイン項目に登録
$ sudo defaults read com.apple.loginwindow LoginHook /path/to/script.sh

# 解除
$ sudo defaults delete com.apple.loginwindow LoginHook

torsocksはShellにTorを通すツールのことです。Shell上で実行されるコマンドがTor経由になります。

1
$ torsocks ssh username@some.ssh.com

ただし、Firewallの設定に注意してください。

Tor for CLI

基本的にShell経由のコマンドは、Proxyに特定の環境変数を使用することが多いです。これらを/etc/profile.d/proxy.shなどにおいて設定するのもいいですし、Daemon化、Systemd化、~/.bashrcなどのLocal上で設定するのも良いです。ただし、ローカルで設定する場合は、rootでは有効にならないので、注意が必要です。

~/.zshrc
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
if ps -ax | grep -w tor | grep -v grep > /dev/null 2>&1;then
  case $OSTYPE in
    darwin*)
      alias chrome='open -a Google\ Chrome --args --proxy-server=="socks5://localhost:9050" --host-resolver-rules="MAP * 0.0.0.0, EXCLUDE localhost"'
   ;;
   linux*)
    alias chrome='chromium --proxy-server="socks://localhost:9050"'
    ;;
  esac
   #alias curl="curl --socks5 localhost:9050"
   export http_proxy=socks5://127.0.0.1:9050
   export https_proxy=$http_proxy
   export ftp_proxy=$http_proxy
   export rsync_proxy=$http_proxy
   export HTTP_PROXY=$http_proxy
   export HTTPS_PROXY=$http_proxy
   export FTP_PROXY=$http_proxy
   export RSYNC_PROXY=$http_proxy
   #export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
else
   unset http_proxy
   unset https_proxy
   unset ftp_proxy
   unset rsync_proxy
   unset no_proxy
   unset HTTP_PROXY
   unset HTTPS_PROXY
   unset FTP_PROXY
   unset RSYNC_PROXY
   unset NO_PROXY
fi

たとえば、上記の環境編集をLocal Shellに設定した場合の確認方法は以下のようになります。

1
2
3
4
5
6
7
$ curl ipinfo.io
    74.125.224.212 #本当のGlobal IP Address

$ source ~/.zshrc

$ curl ipinfo.io
    96.44.189.100 #Tor Serverを経由したGlobal IP Address
root上でも環境変数が有効に動作しているのか確認する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ su

$ curl ipinfo.io
    96.44.189.100 #Tor経由が有効

$ unset http_proxy

$ curl ipinfo.io
    74.125.224.212 #Tor経由していない

$ export http_proxy=socks5://127.0.0.1:9050

$ curl ipinfo.io
    96.44.189.100 #Tor経由が有効