AhFei

AhFei

简洁的写作需要勇气

深夜……搭建 オニオンサイト

.onion は Tor ブラウザ専用のドメイン名のサフィックスです。このドメイン名を使用することで、Tor ブラウザ上であなたの洋葱サイトにアクセスでき、実質的には tor がローカルの Web リスニングポートをリバースプロキシしています。

対応システム:Debian 系のディストリビューション、Ubuntu や Armbian を含む。他のディストリビューションも手順に従ってコマンドを少し変更すれば一般的に可能です。

所要時間の見込み:25 分

私は何か間違えたかもしれませんので、もし何か間違っていたら教えてください!


image

.onion の登録は、ドメイン管理機関やドメイン登録業者から購入する必要はなく、計算によって生成されるだけで、単なるランダムな文字列です。現在使用されている v3 ドメイン名は、56 の小文字のアルファベットまたは 2 から 7 の間の数字で構成されています。指定の文字列を得るには、大量の計算を試みる必要があります。例えば、Facebook の非常に美しい .onion v2 ドメイン – facebookcorewwwi.onion を暴力的に解読するには、暗号学的な評価では 1.5GHz のプロセッサで 260 万年かかるとされています。

AhFei は 5950X の単一スレッド VDS 上で、連続 43 時間計算して vfly2com*.onion の規則に合致する最初のドメイン名を算出しました。具体的な方法は以下に記載されています。

洋葱サイトの本来の目的は、サーバーの匿名性を保持すること、つまりソースサーバーの情報(例えば IP)を漏らさないことです。この特徴は、陰暗な真実を暴露する正義の味方を保護するために使用されることもありますが、同時に陰暗な本性を隠すためにも利用される可能性があります。


ひっそりと村に入り、銃を撃たないでください

深夜は非常に雰囲気があります。

もしサーバーの匿名性をできるだけ保持したい場合、以下の注意事項があります:

  • このサーバー上で他のサービスを実行しないでください。
  • このサーバー上で Tor リレーを実行しないでください。Tor リレーの IP は公開されています。
  • VPS プロバイダーにあなたの身元情報を提供しないでください。できるだけ暗号通貨で支払ってください。
  • サーバー上で新規インストールを行い、VPS プロバイダーからのサービスを一切残さないでください。
  • Web ソフトウェアが安全でバックドアがないことを確認し、強力なパスワードを使用してください。コードをレビューし、ソフトウェアが外部サービスからリソースを取得しないようにしてください。
  • 洋葱サイトがエラーメッセージや身元情報を漏らさないことを確認してください。
  • VPS のセキュリティ更新を適時行ってください。

公式のセキュリティアドバイス:


洋葱サイトを構築するプロセスは非常に簡単です:tor をインストールし、Web ソフトウェアを実行し、tor を設定してそれを Web ソフトウェアのリバースプロキシにします。

公式チュートリアル: Tor Project | Set up Your Onion Service

Tor のインストール#

公式チュートリアル: Tor Project | How to install Tor

注意: root でコマンドを実行してください

apt update && apt upgrade && apt install apt-transport-https

現在、公式のリポジトリは amd64arm64、および i386 の 3 つのアーキテクチャのサーバーのみをサポートしています。dpkg --print-architecture を実行して確認できます。

新しいファイルを /etc/apt/sources.list.d/ に作成し、ファイル名は tor.list とします。

cd /etc/apt/sources.list.d/ && vim tor.list

以下の内容を追加します:

<DISTRIBUTION> をシステムのディストリビューション名に置き換えます。現在のシステムのディストリビューションを確認するには、lsb_release -c または cat /etc/debian_version を実行します。

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main

例えば、Debian 11 の場合、そのコードネームは bullseye なので、以下のように記入します。

deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main

実験版を試したい場合は、tor-experimental-<DISTRIBUTION> の形式を使用するか、nightly builds tor-nightly-main-<DISTRIBUTION> を使用します。

以下のコマンドを実行して gpg キーを追加します。これはパッケージの署名に使用されます。

wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

tor と tor debian keyring(役割:署名キーを最新の状態に保つため)をインストールします:

apt update && apt install tor deb.torproject.org-keyring

Web サーバーを実行する#

Nginx、Apache、または他の任意のものを使用できます。ここでは python3 を使用して簡単なデモを行います:

mkdir ~/tor_service && cd ~/tor_service && \
echo '<html><body>Vfly2.com!</body></html>' > index.html

Web サーバーを実行します。

python3 -m http.server --bind 127.0.0.1 8080

curl を使用して正常に実行されているか確認できます。

curl 127.0.0.1:8080

systemd を使用して /root/tor_service ディレクトリで永続的に実行します。

設定ファイルを追加します。

sudo vim /etc/systemd/system/tor_service.service

変更は不要ですので、コピーしてください。

[Unit]
Description=Python HTTP Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/root/tor_service
ExecStart=/usr/bin/python3 -m http.server --bind 127.0.0.1 8080

[Install]
WantedBy=multi-user.target

再読み込みします。

sudo systemctl daemon-reload

自動起動を設定し、即座に実行します。

sudo systemctl enable --now tor_service

読者の便宜のために 👇

sudo systemctl status tor_service
sudo systemctl stop tor_service
sudo systemctl start tor_service

Tor Onion Service の設定#

Tor の設定ファイル名は torrc で、システムによってその位置が異なる場合があります。見つけて編集します。

whereis tor
# tor: /usr/bin/tor /usr/sbin/tor /etc/tor /usr/share/tor /usr/share/man/man1/tor.1.gz
cd /etc/tor && vim torrc

以下の 2 行を追加します(まずカスタマイズしてください)。

 HiddenServiceDir /var/lib/tor/my_website/
 HiddenServicePort 80 127.0.0.1:80
  • HiddenServiceDir 。オンデマンドサービスの情報と暗号鍵を保存するディレクトリを指定します。このディレクトリは Tor が実行された後に自動的に作成されます。
  • HiddenServicePort 。2 つのポートを指定します。前者の 80 は Tor ネットワーク内のサイトのポートで、後者の 80 はサーバー上のサイトがリスニングしているポートです。Tor は Tor ネットワーク内の 80 ポートで受け取った情報をサーバーの 80 ポートに転送します。実際に実行している Web サーバーに応じて後者のポートを変更します。

例えば、次のようにします。

 HiddenServiceDir /var/lib/tor/hidden_service/
 HiddenServicePort 80 127.0.0.1:8080

保存して終了します。


Unix ソケットを使用することで、TCP ソケットではなく、洋葱サービスに本機のネットワークを漏らさず、より良いセキュリティを得ることができます。以下のようにします。

HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 unix:/var/run/tor-my-website.sock

ただし、これは補足であり、一般のユーザーは考慮する必要はありません。

Tor を再起動し、動作しているか確認します。#

sudo systemctl restart tor

正常に再起動できた場合、設定ファイルにエラーはありません。一般的にこれで完了です。

失敗した場合は、ログを確認して原因を探ります。

journalctl -f -e -u tor@default

あなたの洋葱サイトにアクセスする#

HiddenServiceDir ディレクトリに移動し、hostname という名前のファイルを見つけます。そこにはあなたの onion v3 アドレスが含まれています。

cat /var/lib/tor/hidden_service/hostname
# 目に見えるのは一連のランダムな文字列で、もう一つは AhFei が暴力的に計算したものです。
# bq7yvamkogvqidw6qgeyzo4bnqvxd6ed246evk3rfu6xplzdkwak2aid.onion
# vfly2com5ogzrtpfpnsdfqwt6p2eclebjuxi24ps2jeujnikuypvfeqd.onion

他のファイルは Onion Service keys です。これらのファイルの秘密性を保証することは重要かつ緊急であり、必ず重視してください。もし keys が漏洩した場合、他の人があなたの Onion Service を偽装することができます。

次に、Tor Browser を使用してあなたの洋葱サイトにアクセスできます。上記の onion v3 アドレスを使用してアクセスします: http://vfly2com5ogzrtpfpnsdfqwt6p2eclebjuxi24ps2jeujnikuypvfeqd.onion/

ただし、この設定の下では、誰でもサイトにアクセスでき、サイトの内容を直接見ることができます。認証を追加したい場合は、認証を持つ人だけがサービスに接続できるようにする方法を見てください:Tor Project | Client Authorization 。これがネットワークで最も秘密の場所です。(メールや WeChat も同様です)

暴力計算による Onion V3 ドメイン名の取得#

.onion のドメイン名生成は、秘密鍵 >(rsa)> 公開鍵 >(sha1)> ハッシュ値 >(base32 エンコード)> 最終的な .onion になります。

CPU 計算を使用するツール:Releases · cathugger/mkp224o (github.com)

前提条件

sudo apt install gcc libc6-dev libsodium-dev make autoconf

暴力計算ツールのコンパイル#

プロジェクトをダウンロードします。

git clone https://github.com/cathugger/mkp224o.git

プロジェクトディレクトリに移動します。

cd mkp224o

設定スクリプトを生成します(git clone した場合はないので、リリースの圧縮パッケージにはあります)。

./autogen.sh

Makefile を生成します。

./configure   # デフォルトで最大の互換性を保証します。
# ./configure --enable-amd64-51-30k   # 適切なパラメータを追加することで最適化できます。

ビルドを開始します。

make

ビルドが完了すると、ディレクトリ内にコンパイルされた mkp224o が表示されます。

後のパラメータ --enable-amd64-51-30k を設定スクリプトに渡すことで、キー生成速度を向上させることができます。異なる CPU には異なるパラメータが最適化されており、./configure --help を実行してすべての利用可能なオプションを確認できます。具体的な説明は、 https://github.com/cathugger/mkp224o/blob/master/OPTIMISATION.txt を参照してください。

--enable-amd64-51-30k は amd64-51-30k SUPERCOP ed25519 実装を有効にします。この実装は AMD64 アーキテクチャを使用し、特定の最適化手法を採用しており、性能要求が低い環境に適しています。--enable-amd64-64-24k は amd64-64-24k SUPERCOP ed25519 実装を有効にし、異なる最適化戦略を採用しており、性能要求が高い環境に適しています。

mkp224o の使用#

計算を開始します。

./mkp224o -d vkeys vfly2com
  • vkeys はキーを保存するディレクトリです。
  • vfly2com は生成されるアドレスで、vfly2com で始まる必要があります。具体的なルールはプロジェクトのホームページを参照してください。

tmux または screen を使用して mkp224o を実行すると、接続が切れても続行できます。VPS で長時間実行しないでください、100% 使用します。

tor に生成したキーを使用させるには?#

キーのフォルダ(技術的には hs_ed25519_secret_key のみが必要です)をどこかにコピーします。

sudo cp -r vfly2com...onion /var/lib/tor/vfly2_service
# 前述のように、私たちのキーのフォルダは /var/lib/tor/hidden_service/ ですので、ここを選択します。

所有権と権限を調整します。

sudo chown -R debian-tor: /var/lib/tor/vfly2_service
sudo chmod -R 700 /var/lib/tor/vfly2_service

次に、torrc を編集してキーのフォルダを新しいものに変更します:

sudo vim /etc/tor/torrc
 HiddenServiceDir /var/lib/tor/vfly2_service
 HiddenServicePort 80 127.0.0.1:8080

再読み込み後、tor はそれを拾うはずです。

sudo systemctl reload tor
sudo systemctl status tor

この時点で Tor Browser で新しい美しい .onion アドレスにアクセスしてみてください!


原文リンク: https://blog.vfly2.com/2023/10/building-an-onion-website/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 承飞之咎 (blog.vfly2.com)

保持更新 ٩(・̤̀ᵕ・̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @[email protected] 接收新文章的推送,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。