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 ソケットを使用することで、オニオンサービスに対して本機のネットワークを漏らすことを避け、より良いセキュリティを得ることができます。以下のように設定します。

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

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

次に、Tor ブラウザを使用してあなたのオニオンサイトにアクセスできます。上記の 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 ブラウザで新しい美しい .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 で記事の手順に関する問題を交流できます。

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