OSS

【ダークウェブ構築】EC2のUbuntuでtor Hidden Service (.onion) サイトを構築する

ダークウェブとして使われる Tor (The onion routing) ですが、一般庶民でもサイトの作成ができます。

今回は AWS EC2 の無料枠で構築してみました。

これは勉強のために実施しています。当たり前のことですが、違法なことはしないで下さい。

なお、ダークウェブ (.onionサイト) の仕組みについては以下をご参照下さい。

【図解】ダークウェブとTor (Onionドメイン)の仕組み,シーケンス~Entry guard/Middle/ExitとBridge~
Tor とは プライバシーを守るための、匿名性の高いネットワークのことです。 例...

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 に関する定期的に発生する通信です。

以上です。

nesukeの推薦図書

NHK番組「クローズアップ現代」で仮想通貨の不正流出ルートを追跡したホワイトハッカーCheena氏のデビュー作。
【想定する読者層】・セキュリティの初学者・ハッカーにあこがれている人・CTFに興味がある人、または参加している人・WindowsとLinuxの混在環境を構築したい人・コンピュータ愛好家・Linux初心者
Windows(ウィンドウズ)、Linux(リナックス)に始まり、現在主流となっているCloud(クラウド)、Phishing(フィッシング)、そして禁断となっている(マルウェア)に至るまで、具体的な最新情報をそれぞれ選りすぐり解説しています。

コメント

  1. のりゆき より:

    # apt install tor deb.torproject.org-keyring
    を実行しますと、
    Unable to correct problems, you have held broken packages.
    (問題を修正できません。破損したパッケージを保持しています。)
    のようにエラーがでます。
    解決方法をご教授頂けますでしょうか?

    • nesuke より:

      のりゆきさん、コメントありがとうございます。
      確認してみたところ、最新の tor バージョンだと依存関係の解決に失敗してしまうようです。
      apt install tor=0.4.6.10-1
      apt install deb.torproject.org-keyring
      で試してみたところうまくいきましたので当面はこちらを利用してみてください。

  2. のりゆき より:

    先ほどご質問させて頂いたのりゆきです。
    問題は解決致しましたので回答は不要です。

    サイト内容を色々と参考にさせて頂いております。
    今後とも有益な情報の配信を期待しております。

    • nesuke より:

      コードネームを指定していたことをすっかり失念しておりました。。
      今後コードネームが変わっても対応できるように修正しました。
      ご指摘、およびエラー解消のご報告いただきありがとうございました。

      今後とも本サイトを宜しくお願い致します。

タイトルとURLをコピーしました