環境
前回の記事で構築したWhonix Gatewayを使う。
- Whonix Version: 17.0.4.5
- Apache: 2.4.57
Apacheをインストール
公式サイトにはApache
とNginx
の解説があるので今回はApache
を使用する。
sudo apt install apache2
Webページの準備
ブラウザで表示するコンテンツを作成する。
sudo vi /var/www/html/index.html
コンテンツが準備できたらApacheの動作確認をする。
Torrcの設定
torrc
ファイルに必要な設定を追加する。
Whonixの場合、torrc
ファイルはシンボリックリンクになっており、リンク先は/etc/tor/torrc.anondist
ファイルになっている。
/etc/tor/torrc.anondist
ファイルの中身を確認すると、このファイルを編集せず、代わりに /usr/local/etc/torrc.d/50_user.conf を編集して
と書かれているので/usr/local/etc/torrc.d/50_user.conf
ファイルを編集する。
sudo vi /usr/local/etc/torrc.d/50_user.conf
HiddenServiceDir /var/lib/tor/hidden_service/
とHiddenServicePort 80 127.0.0.1:80
の2項目を追加
# Tor user specific configuration file
#
# Add user modifications below this line:
############################################
ExcludeNodes {jp},{us},{gb},{ca},{au},{nz},{dk},{fr},{nl},{no},{cn},{ru},{de},{be},{it},{es},{il},{sg},{kr},{se},127.0.0.1,{??}
ExcludeExitNodes {jp},{us},{gb},{ca},{au},{nz},{dk},{fr},{nl},{no},{de},{be},{it},{es},{il},{sg},{kr},{se},{bg},{cz},{fi},{hu},{ie},{lv},{??}},{cn},{ru}
NumEntryGuards 5
StrictNodes 1
HiddenServiceDir /var/lib/tor/hidden_service
HiddenServicePort 80 127.0.0.1:80
ExcludeNodes
やExcludeExitNodes
項目は前回の記事で使用した項目なので無くてもOK。
HiddenServiceDir
はOnion サービスの情報と暗号キーを含むディレクトリを指定します。Torを実行するユーザーが読み取り/書き込み可能なディレクトリを指定します。
HiddenServicePort
はリダイレクトするポートとアドレスの設定を記述する。今回の例では80番ポート
にアクセスしたトラフィックは127.0.0.1:80
にリダイレクトされる。
設定が完了したら、反映させるためにtorサービスを再起動する。
sudo systemctl restart tor
Onionサービスの動作確認
設定が正常にできていれば、HiddenServiceDir
で指定したディレクトリ配下に必要なファイルが生成されている。
% sudo ls -l /var/lib/tor/hidden_service
total 16
drwx--S--- 2 debian-tor debian-tor 4096 Nov 25 08:11 authorized_clients
-rw------- 1 debian-tor debian-tor 63 Nov 25 08:11 hostname
-rw------- 1 debian-tor debian-tor 64 Nov 25 08:11 hs_ed25519_public_key
-rw------- 1 debian-tor debian-tor 96 Nov 25 08:11 hs_ed25519_secret_key
hostname
ファイルにonionドメインのアドレスが記載されているので確認する。
% sudo cat /var/lib/tor/hidden_service/hostname
ypb7sakgr6sxmtiaj6537evb255k6jaccf6mufuewl6k2ppmmgswg7ad.onion
キーファイルは外部に漏らさないように気を付けよう。
他のファイルは Onion サービス キーであるため、これらを秘密にしておくことが不可欠です。 キーが漏洩すると、他の人が Onion サービスになりすまし、そのサービスが侵害され、役に立たず、アクセスするのは危険であるとみなしてしまう可能性があります。
最後に、hostname
に記載されているアドレスにtorブラウザからアクセスする。
おまけ
複数サイトを構築する場合
複数サイトを構築する時や、転送するポートを追加する場合は、HiddenServiceDir
とHiddenServicePort
の項目を追加する。
HiddenServiceDir /var/lib/tor/onion_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServiceDir /var/lib/tor/other_onion_service/
HiddenServicePort 6667 127.0.0.1:6667
HiddenServicePort 22 127.0.0.1:22
Apacheの設定
Apache
のVirtualHost
を使用する場合は、下記のように記述する。
<VirtualHost *:80>
ServerName <your-onion-address.onion>
DocumentRoot /path/to/htdocs
ErrorLog ${APACHE_LOG_DIR}/my-website.log
</VirtualHost>
Nginxの設定
Nginx
を使用する場合は、下記のように記述する。
server {
listen unix:/var/run/tor-my-website.sock;
server_name <your-onion-address>.onion;
access_log /var/log/nginx/my-website.log;
index index.html;
root /path/to/htdocs;
}
セキュリティに関する設定
クライアント認証の利用が可能。
オニオンサービス運用のベストプラクティスについてはこちらを確認してください。
サーバー IP アドレスなどの匿名性を損なう可能性のある情報がオニオンサイトから漏洩していないかどうかを確認するツールもあります。
参考サイト