UbuntuでTorを使用してウェブサイトをホストする方法

Torネットワークは革命的なソフトウェアです。単一のプログラムで、匿名でWebを閲覧し、表示することが可能になりました。これにより、ウェブサイトを閲覧する際にプライバシーを保護したいユーザーにとって、Torは不可欠なツールとなります。また、Torを使用してローカルウェブサーバーをオンラインでホストすることも可能であり、自己を明らかにすることなく情報を公開したいプライバシー意識の高いユーザーにとって非常に便利です。
注意: 進む前に、まずTorとオニオンルーティングが何であるかを理解してください。
目次
- なぜTor経由でウェブサイトをホストするのか?
- 要件
- NginxとTorのインストール
- ファイアウォールの設定
- ウェブサイト用のTorサービスの作成
- Nginxを使用したシンプルなウェブサイトの作成
- Tor経由でウェブサイトにアクセスする
- よくある質問
なぜTor経由でウェブサイトをホストするのか?
Tor経由でホストする最大の利点の1つは、その接続がTorブラウザと同様の中間ノードを通過することです。あなたのウェブサイトを訪れる訪問者は、どこからホストされているのかを知ることができません。

それに加えて、Tor専用のウェブサイトを機能させるためにポートを転送する必要もありません。これにより、非常に制限されたネットワークでもホスティングが簡単でアクセスしやすくなります。たとえば、キャリアグレードNATネットワーク下のマシンでも、Torを介して直接ウェブサイトを公開できます。
要件
NginxとTorの両方をインストールする前に、次のリソースが準備されていることを確認する必要があります。
- Torの受信および送信リクエストを制限しないインターネット接続。これにより、Torネットワークを介してウェブサイトを放送できます。
- ホストするウェブサイトを処理できるマシン。ほとんどの場合、4GBのRAMを持つデュアルコアデスクトップで基本的なウェブサイトには十分です。
- Torの設定にはシステムファイルにアクセスする必要があるため、ホスティングマシンへのルートアクセス。
以下の画像は、Ubuntu 22.04 LTSマシンでNginx Tor専用ウェブサイトをホストする方法を示しています。

NginxとTorのインストール
ターミナルを開きます。次のコマンドを入力してNginxとTorをインストールします。
sudo apt install nginx tor wget
ファイアウォールの設定
両方のパッケージをシステムにインストールしたら、次のコマンドをターミナルに入力して、Torネットワークからの受信接続のみを受け入れるようにファイアウォールを設定してサーバーを保護できます。
sudo iptables -I INPUT -m state --state NEW -p tcp --dport80-j ACCEPT
sudo iptables -I INPUT -m state --state NEW -p tcp --dport443-j ACCEPT
sudo iptables -I INPUT -m state --state NEW -p tcp --dport9050-j ACCEPT
最初の2つのコマンドは、システム内のHTTPおよびHTTPSポートを開き、最後のコマンドはTorネットワークのためにSOCKSポートを明示的に開きます。このアプローチにより、Torはマシンに向かうトラフィックを適切にリダイレクトできるようになります。
ウェブサイト用のTorサービスの作成
次に、ウェブサーバーのための隠しサービスエントリを作成する必要があります。これは、Torネットワークで放送することを可能にするサービス固有の設定です。
まず、ルートアカウントに切り替えます。次のコマンドを実行して行います。
sudo-i
ルート内に入ったら、”/etc/tor/torrc”ファイルを編集して隠しサービスを作成します。私の場合、このファイルをGNU Nanoで開いています。
nano/etc/tor/torrc
Ctrl + Wを押して”location-hidden services”セクションを見つけ、”location-hidden”と入力します。

自分のTor隠しサービスを作成する方法を示すいくつかの例が表示されますが、ほとんどの場合、2つのオプションだけを設定する必要があります: HiddenServiceDirとHiddenServicePort。
HiddenServiceDirオプションは、Torが隠しサービスの設定ファイルを保存する場所を指示します。HiddenServicePortオプションは、Torが隠しサービスへのリクエストをどのようにリダイレクトするかを指示します。
次のコード行は、ウェブサーバーのための新しい隠しサービスを作成します。
HiddenServiceDir /var/lib/tor/nginx-tor-service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 443 127.0.0.1:443
次のコマンドを実行してTorデーモンを再読み込みし、新しい設定を適用します。
systemctl enable tor
systemctl restart torヒント: VPN接続でTorを使用する方法を学びましょう。
Nginxを使用したシンプルなウェブサイトの作成
Tor隠しサービスが稼働している状態になったら、ウェブサーバーの設定を開始します。touchコマンドを使用して新しい設定ファイルを作成します。
sudotouch/etc/nginx/sites-available/nginx-tor-service
新しいNginx設定ファイルを基本的なウェブサーバーとして編集します。たとえば、次のコードブロックはポート80でシンプルなウェブサーバーを展開します。
server{
listen 80 default_server;
listen[::]:80 default_server;
root /var/www/html;
server_name 4tth4kzmipldb5elklravakdwlnte3ck6m5ahl73nfbe6ni67zmyvxyd.onion;
location / {
try_files$uri$uri/ =404;
}
}- 2つの
listen変数は、このサーバー設定がリッスンすべきポートとホストを設定します。この場合、NginxはIPv4およびIPv6の両方でポート80をリッスンします。 root変数は、Nginxがウェブサーバー上のファイルを探す場所を設定します。server_name変数には、サーバーのドメイン名が含まれています。sudo less /var/lib/tor/nginx-tor-service/hostnameを実行して見つけます。location変数には、Nginxがウェブサイトのルート内のファイルをどのように処理するかに関する機能が含まれています。この例では、欠落しているファイルに対して404エラーを設定するだけです。

新しい設定ファイルのシンボリックリンクを”/etc/nginx/sites-enabled”に作成します。
sudoln-s/etc/nginx/sites-available/nginx-tor-service /etc/nginx/sites-enabled/最後に、Nginxを再起動して新しいウェブサイトを有効にします。
sudo systemctl enable nginx
sudo systemctl restart nginx
Tor経由でウェブサイトにアクセスする
TorとNginxの両方が稼働している状態で、Torネットワークからウェブサイトにアクセスできるかどうかを確認します。(ダークウェブで他のウェブサイトを見つける必要がありますか?これらの検索エンジンをチェックしてください。)まず、最新のTorブラウザバイナリをダウンロードします。
wget https://www.torproject.org/dist/torbrowser/11.5.7/tor-browser-linux64-11.5.7_en-US.tar.xz
次のコマンドを実行して、現在のディレクトリにブラウザのファイルを抽出します。
tar xvf ./tor-browser-linux64-11.5.7_en-US.tar.xz
cd ./tor-browser_en-US
また、Torブラウザバイナリに正しい実行ビットが設定されていることを確認してください。
sudochmod +x ./start-tor-browser.desktop次のコマンドを実行して、マシンにTorブラウザを実行およびインストールします。
./start-tor-browser.desktop --register-app
最後に、アドレスバーにドメイン名を入力して新しいTorウェブサイトをブラウズします。

よくある質問
ゲームサーバーをTorを使用してホストすることは可能ですか?
はい、可能ですが、Torゲームサーバーを運営すると非常に悪いゲーム体験になります。たとえば、Tor経由でMinetestサーバーを運営すると、レイテンシが1000ミリ秒から5000ミリ秒になります。
Tor接続を高速化する方法はいくつかありますが、Torの開発者はネットワークを低レイテンシアプリケーションで機能するように設計していません。そのため、Torは主に低レイテンシに依存しないウェブページやアプリケーションを公開するのに役立ちます。
FTPウェブサイトをホストしようとしていますが、Torを介してアクセスできません。
この問題は、”/etc/tor/torrc”ファイルの設定が不足していることが最も考えられます。Tor経由で新しいサービスを適切にホストするには、ファイアウォールとtorrcの両方で適切なポートが開いていることを確認してください。
たとえば、HiddenServicePort 21 127.0.0.1:21およびHiddenServicePort 22 127.0.0.1:22を追加して、マシンにオープンFTPおよびSFTPポートを作成します。
TorでSSLを介してウェブサイトをホストすることは可能ですか?
Torウェブサイトを保護する際にSSLは必須ではないことに注意することが重要です。デフォルトで、TorはTorブラウザを読み込むとすぐに接続を暗号化するため、Torで訪れるウェブサイトはエンドツーエンドで暗号化されています。
希望する場合は、TorウェブサイトのSSL証明書を取得できますが、.onionドメインに対してTLSを積極的に発行する証明書機関は限られているため、プロセスは難しい場合があります。
画像クレジット: Unsplash。すべての変更とスクリーンショットはRamces Redによるものです。