Tor上にウェブサイトを公開する方法

Takuya Kobayashi⛰
2024.06.03

Tor上にウェブサイトを公開する方法を解説します。

環境:Ubuntu 22.04

torのインストールと設定

torをインストールします。

$ sudo apt install tor

torrcファイルを編集して設定します。

$ sudo vi /etc/tor/torrc

次の部分のコメントアウトを外して任意のHiddenServiceDirとHiddenServicePortを指定します。

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

HiddenServiceDirのディレクトリを作ります。
/var/lib/tor以下の権限はdebian-torなのでrootになります。

$ sudo su
# mkdir /var/lib/tor/homepage
# chown debian-tor:debian-tor /var/lib/tor/hidden_service

torを再起動すると「/var/lib/tor/hidden_service/」にonionアドレスが書かれた「hostname」というファイルが生成されます。その他に、公開鍵と秘密鍵も生成されます。

# systemctl restart tor
# cat /var/lib/tor/homepage/hostname
bonxp6hdoeryujxypcr3pmwm7gdu2pg6oeqluuui4szxpi3lkg2qq7yd.onion

「bonxp6hdoeryujxypcr3pmwm7gdu2pg6oeqluuui4szxpi3lkg2qq7yd.onion」がonionアドレスです。

これでtorの設定は完了です。

apache2のインストールと設定

次にWebサーバーであるapache2のインストールと設定をします。

# apt install apache2
# vi /etc/apache2/site-enabled/000-default.conf
<VirtualHost *:80>
        ServerName bonxp6hdoeryujxypcr3pmwm7gdu2pg6oeqluuui4szxpi3lkg2qq7yd.onion
        DocumentRoot /var/www/
        ErrorLog /dev/null #ログを廃棄
        CustomLog /dev/null #ログを廃棄
</VirtualHost>

80以外のポートを使いたい場合はこちらでLISTENを追加する必要があります。

# vi /etc/apache2/ports.conf
Listen 80

apache2を再起動

# systemctl restart apache2

これで設定完了です。
あとは、/var/www/に公開したいコンテンツを配置すればonionアドレスで閲覧することができます。

蛇足:もっと秘匿化したいのならHiddenServiceDirとDocumentRootをLUKSなどの暗号化ドライブに設定する。

Torブラウザで確認

Torブラウザで自分のonionアドレスにアクセスしてみます。

バッチリ表示されました。

通常、ウェブサイトを公開するにはドメインを取ってサーバーを借りてとか、自宅サーバーでやるにしてもポート開放とか面倒な設定があります。それらに比べると、Tor上にウェブサイトを公開する作業は非常にかんたんです。機器の設定は不要だし、サーバーレンタルのコストもかかりません。

バニティアドレスで任意の文字列を設定する

onionアドレスの頭の数文字は任意の文字を指定することができます。
やり方は単純で、とにかく計算しまくって任意の文字列が出るまでガチャをします。

バニティアドレス作成のためのツールは色々ありますが、こちらを参考に「mkp224o」を使ってみました。

mkp224oはCPUで計算しますが「Scallion」というGPUで計算するツールもあります。Scallionの使い方はこちらのサイトで詳しく紹介されています。

必要なものをインストール、ダウンロード・コンパイル:

$ sudo apt install libsodium-dev autoconf git
$ git clone https://github.com/cathugger/mkp224o
$ cd mkp224o
$ ./autogen.sh
$ ./configure && make

以下のコマンドで実行:

$ mkdir onion
$ ./mkp224o -d onion/ -S 60 takuya

文字列「takuya」を含むアドレスが見つかり次第、onion/に鍵が保存されます。
「-S 60」は60秒に一度ステータスを表示するオプション。
当然ですが、桁数が増えるほど途方もない時間がかかります。

60秒で2つアドレスがヒット

onion/takuya*/には次の3つのファイルが作成されます。

  • hostname
  • hs_ed25519_public_key
  • hs_ed25519_secret_key

/var/lib/tor/hidden_service/に前のファイルがある場合はバックアップなり削除なりして、今回生成されたhs_ed25519_secret_keyだけをコピーします。

コピーした鍵の所有者をdebian-tor:debian-torにします。これをやらないとtorを再起動しても無視されて別のonionアドレスになってしまいます。

$ sudo chown debian-tor:debian-tor /var/lib/tor/hidden_service/hs_ed25519_secret_key
$ sudo chmod 400 /var/lib/tor/hidden_service/hs_ed25519_secret_key

torを再起動:

$ sudo service tor restart

秘密鍵をもとにhostnameとhs_ed25519_public_keyが自動で生成されます。

Torブラウザでアクセスして表示されたら成功です。