Web開発
ダークウェブでのセルフホスティング
Self-Hosting on the Dark Web (david.alvarezrosa.com)
要約
この記事では、Torネットワーク上でウェブサイトを隠しサービスとしてセルフホスティングする方法を解説しています。これにより、IPアドレスやDNS、証明書なしで、エンドツーエンドで暗号化された接続が可能になります。Torプロジェクトの活動への支援も推奨されています。
全文翻訳
このサイトは現在、Torネットワーク内でのみ解決する.onionアドレスを持つ隠しサービスとしてTor経由でアクセス可能です。証明書認証局、DNS、公開IPアドレスは不要で、アドレスは公開鍵から直接導き出され、Tor自体によってエンドツーエンドで接続が暗号化されます。Torリレーは、数千ものボランティアが運営するサーバーを通過する際にトラフィックをリレーおよび暗号化するため、誰が何をしているかを単一の当事者が関連付けることはできません。隠しサービスは、その匿名性をサーバー自体にまで拡張します。
これは、人権と自由をフリーソフトウェアとオープンネットワークを通じて推進する非営利団体であるTor Projectによって構築されており、誰もが追跡、監視、検閲なしでインターネットを自由に利用できるようにしています。ネットワークは人々がそれを利用することによってのみ機能するため、彼らを支援するか、リレーを実行することを検討してください。あなたの貢献は、毎日何百万人もの人々がオンラインで安全かつプライベートに過ごすのに役立ちます。
隠しサービス
Torをインストールし、隠しサービスをローカルポートに向けます。
/etc/tor/torrcを編集します
HiddenServiceDir /var/lib/tor/blog/
HiddenServicePort 80 127.0.0.1:8080
このディレクトリは、Torが所有する専用のパスである必要があります。Webルートではありません。Torはサービスの秘密鍵とホスト名ファイルをここに保存し、それを所有することを要求します(chmod 700、ユーザー debian-tor)。サイトファイルに向けますが、Torは起動を拒否します。Torを再起動し、生成されたアドレスを読み取ります。
$ sudo systemctl restart tor@default
$ sudo cat /var/lib/tor/blog/hostname
dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion
サイトの提供
Torはオニオンのポート80を127.0.0.1:8080に転送するため、Webサーバーはそこでリッスンするだけで済みます。それ用のnginxサーバーブロックを追加します。TLS、HTTP/2、QUICは不要です。TorはプレーンTCPを話し、独自の暗号化を提供します。
server {
listen 127.0.0.1:8080;
server_name dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion;
root /srv/tor.david.alvarezrosa.com;
index index.html;
error_page 404 /404/index.html;
location / {
try_files $uri $uri/ =404;
}
}
nginxをリロードすると、サイトはTor上でライブになります。
オニオン向けビルド
静的サイトは、ベースURLを絶対リンクに焼き込むため、Tor経由で提供されている場合でも、クリアネットのビルドは訪問者をクリアネットドメインに誘導します。修正方法は、オニオンをベースURLとして2番目のコピーをビルドすることです。
hugo --minify --baseURL="http://dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion/"
デプロイパイプラインはこれを自動的に行います。プッシュごとに、サイトはターゲットごとに1回(クリアネットとTor)ビルドされ、それぞれが独自のWebルートにrsyncされるため、2つは手動作業なしで同期を保ちます。最初のサーバーでの最初のステップを参照してください。完全な設定は私のホームラボリポジトリにあり、サイト自体のリポジトリにはビルドとデプロイを行うGitHub Actionsワークフローが含まれています。それだけです。このサイトをTorで dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion でお読みください。