ダークウェブとして使われる Tor (The onion routing) ですが、一般庶民でもサイトの作成ができます。
今回は AWS EC2 の無料枠で構築してみました。
これは勉強のために実施しています。当たり前のことですが、違法なことはしないで下さい。
なお、ダークウェブ (.onionサイト) の仕組みについては以下をご参照下さい。
AWS EC2 環境
- AMI : Ubuntu Server 22.04 LTS (HVM), SSD Volume Type , x86-64
- インスタンスタイプ : t2.micro
設定手順
https://2019.www.torproject.org/docs/debian.html.en の通りに実施
tor のインストール
$ sudo -s # echo "deb https://deb.torproject.org/torproject.org `lsb_release -c | cut -f2` main" > /etc/apt/sources.list.d/tor.list # echo "deb-src https://deb.torproject.org/torproject.org `lsb_release -c | cut -f2` 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 -y tor deb.torproject.org-keyring
バージョンを確認
# tor --version
Tor version 0.4.7.10.
Tor is running on Linux with Libevent 2.1.12-stable, OpenSSL 3.0.2, Zlib 1.2.11, Liblzma 5.2.5, Libzstd 1.4.8 and Glibc 2.35 as libc.
Tor compiled with GCC version 11.2.0
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
Nginx をインストール
# apt install -y 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 の設定追加
Tor で利用できるホスト名を確認
# cat /var/lib/tor/hidden_service/hostname
wookvynsh3slps3jl3opvkaluem7q2ilab6apc4fnryme7lyeptbpqyd.onion
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 に関する定期的に発生する通信です。
以上です。
コメント
# apt install tor deb.torproject.org-keyring
を実行しますと、
Unable to correct problems, you have held broken packages.
(問題を修正できません。破損したパッケージを保持しています。)
のようにエラーがでます。
解決方法をご教授頂けますでしょうか?
のりゆきさん、コメントありがとうございます。
確認してみたところ、最新の tor バージョンだと依存関係の解決に失敗してしまうようです。
apt install tor=0.4.6.10-1
apt install deb.torproject.org-keyring
で試してみたところうまくいきましたので当面はこちらを利用してみてください。
ご回答ありがとうございます!
/etc/apt/sources.listに追加した、
deb https://deb.torproject.org/torproject.org bionic main
deb-src https://deb.torproject.org/torproject.org bionic main
のbionicをバージョンに合わせた「focal」にしたらエラー解消しました。
ダークウェブ関連の情報配信を期待しております!!
先ほどご質問させて頂いたのりゆきです。
問題は解決致しましたので回答は不要です。
サイト内容を色々と参考にさせて頂いております。
今後とも有益な情報の配信を期待しております。
コードネームを指定していたことをすっかり失念しておりました。。
今後コードネームが変わっても対応できるように修正しました。
ご指摘、およびエラー解消のご報告いただきありがとうございました。
今後とも本サイトを宜しくお願い致します。