ダークウェブとして使われる Tor (The onion routing) ですが、一般庶民でもサイトの作成ができます。
今回は AWS EC2 の無料枠で構築してみました。
これは勉強のために実施しています。当たり前のことですが、違法なことはしないで下さい。
なお、ダークウェブ (.onionサイト) の仕組みについては以下をご参照下さい。

AWS EC2 環境
- AMI : Ubuntu Server 18.04 LTS (HVM), SSD Volume Type - 64 bit x86
- インスタンスタイプ : t2.micro
設定手順
https://2019.www.torproject.org/docs/debian.html.en の通りに実施
tor のインストール
$ sudo su - # echo 'deb https://deb.torproject.org/torproject.org bionic main' > /etc/apt/sources.list.d/tor.list # echo 'deb-src https://deb.torproject.org/torproject.org bionic main' >> /etc/apt/sources.list.d/tor.list # curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --import # gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add - # apt update # apt install tor deb.torproject.org-keyring Do you want to continue? [Y/n] Y
バージョンを確認
# tor --version Tor version 0.4.2.5.
torrc (tor 設定ファイル) の設定
# cp -p /etc/tor/torrc /etc/tor/torrc.org # vi /etc/tor/torrc
以下の箇所のコメントアウトを外す
#HiddenServiceDir /var/lib/tor/hidden_service/ #HiddenServicePort 80 127.0.0.1:80
↓↓↓↓↓↓↓
HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 127.0.0.1:80
Tor を再起動
# systemctl restart tor
Tor で利用できるホスト名を確認
# cat /var/lib/tor/hidden_service/hostname wookvynsh3slps3jl3opvkaluem7q2ilab6apc4fnryme7lyeptbpqyd.onion
Nginx をインストール
# apt install nginx Do you want to continue? [Y/n] Y
テスト用のコンテンツを作成
# mkdir /var/www/onion/ # echo "onion test!" > /var/www/onion/index.html # chown -R www-data:www-data /var/www/onion/
server_name の設定追加
server_name については先ほど確認した tor のホスト名に書き換えて下さい。
# vi /etc/nginx/conf.d/onion.conf server { server_name wookvynsh3slps3jl3opvkaluem7q2ilab6apc4fnryme7lyeptbpqyd.onion; root /var/www/onion/; }
Nginx を再起動
# systemctl restart nginx
サイト名が長すぎると以下のエラーが出ます。
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. root@ip-172-31-94-34:~# journalctl -xe Jan 10 05:07:27 ip-172-31-94-34 nginx[3209]: nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 64 Jan 10 05:07:27 ip-172-31-94-34 nginx[3209]: nginx: configuration file /etc/nginx/nginx.conf test failed Jan 10 05:07:27 ip-172-31-94-34 systemd[1]: nginx.service: Control process exited, code=exited status=1 Jan 10 05:07:27 ip-172-31-94-34 systemd[1]: nginx.service: Failed with result 'exit-code'. Jan 10 05:07:27 ip-172-31-94-34 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
server_names_hash_bucket_size を 64 から増やせ、と言われています。なので、nginx.conf を開き、
# vi /etc/nginx/nginx.conf
以下の箇所を修正(コメントインと数値変更)
# server_names_hash_bucket_size 64;
↓↓↓↓↓↓↓
server_names_hash_bucket_size 128;
それからもう一度再起動コマンドを実行
# systemctl restart nginx
これで完成です。
アクセスしてみる
Windows10 に Tor Browser をインストールし、Browser から .onion のドメインへアクセスすると、、、
無事表示されました!
ちなみに、直接 IP でアクセスを試みてもアクセスできません。これは AWS のセキュリティグループでインバウンドが許可されていないためです。
セキュリティグループで tcp: 80 を開放し、一般のブラウザから直 IP でアクセスすると、(tor のテストページではなく) nginx のデフォルトページが表示されます。
このことから、tor では Hidden_Service から Tor ノードへアクセスしていることが分かります。
EC2 上でパケットキャプチャを取得して見てみると、この Hidden_Service (172.31.92.182) から Tor ノードの 1 IP (46.20.35.116) のみへ https アクセスが発生しています。
torproject.org の公式ドキュメントでは Hidden_Service は常時 IP (Introduction Point) という Tor ノードと接続し、Tor Browser からのアクセス時は RP (Rendezvous Point) という Tor ノード経由になるとの記載がありましたが、もしかしたら実装では IP=RP になっているのかもしれません。
アクセス中の前後 1 分で観測しても、1 時間ほど連続して定常時を観測しても、1 つの Tor ノードにしか繋ぎに行っていませんでした。
※169.254.169.254 は AWS の IAM に関する定期的に発生する通信です。
以上です。
nesukeの推薦図書
IT/インフラエンジニアの地位とスキル向上のために


コメント