Python
shell
Tor
onion
ubuntu16.04

onionドメインのサーバを建ててみた

はじめに

ダークウェブについて調査することになったのですが,まずはTorサービスやオニオンルーティングについての理解を深めようということで,取り敢えずonionドメインのWebサーバを実際に建ててみました。
今回は検証用ということで,Webサーバ本体は python http server を利用します。

環境

OS
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
Python
Python 3.6.5
/home/USERNAME/.pyenv/shims/python

Torのインストール

基本的にはTor公式の導入手引き(Ubuntu)通りですが,自分用メモ的にも必要なコマンドと注意点だけ抜き出します。

1.リポジトリにtorprojectを追加

/etc/apt/sources.list
deb https://deb.torproject.org/torproject.org xenial main
deb-src https://deb.torproject.org/torproject.org xenial main

2.gpg key による署名

$ gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
$ apt update

3.torインストール

$ apt install tor

Torの設定

こちらも基本的にはTor公式の設定手引き通りです。

1.hidden service のディレクトリパスと使用ポートの設定
- /etc/tor/torrc の72,73行目のコメントアウトを外します。
- ここで指定するディレクトリは任意です。(ただし指定するディレクトリのパーミッションは$sudo chmod 700 XXX/とすること)
- ここで使用するポート(今回は適当に8080)を任意に割り当てられます。

/etc/tor/torrc
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080

2.torをインストール時にdebian-torというユーザが新規に追加されていますが,探しても初期パスワードが見当たらなかったので,adduserで tor 用の新しいユーザ(hoge)を作成し,フォルダの所有者とグループをいじります。

$ adduser hoge
$ sudo chown -R hoge:hoge /etc/tor/
$ sudo chown -R hoge:hoge /var/lib/tor/

3.先程作成したユーザ(hoge)に切り替えてtorを起動します。

$ tor
$ cat /var/lib/tor/hidden_service/hostname
XXXXXXXXXXX.onion

上手く行っていれば/var/lib/tor/hidden_service/hostname内にハッシュによってランダムに生成されたonionドメインが表示されます。

PythonによるWebサーバの立ち上げ

検証用の簡単なWebページをPythonのhttpserverで立ち上げます。
(PythonによるWebサーバについて詳しく知りたい方はこちらを参照。)
1. 他者に公開しても良いディレクトリに移動します。
2. 移動先のパーミッションを$sudo chmod 700 ./等,適宜設定します。
3. 8080番ポートで python http server を立ち上げます。

$ python -m http.server 8080

Webサーバが起動したら,先程生成したonionドメインにTorBrowser等でアクセスしてみて下さい。ページ表示されれば成功です。
(軽く検証した感じだと,今回のように特に設定をいじっていないデフォルト状態ではTorBrowserでのみ閲覧可能で,Torプロキシを挿した他の通信は拒否されるぽい(?)です。)

最後に

今回はQiitaへの初投稿ということで,取り敢えず直近でやってみた内容をまとめてみることにしました。
ダークウェブ上でのWebサイト公開というのは思ったよりもずっとお手軽に出来てしまうものなのですね。
debian-torユーザ周りを自己流で適当に解決してしまっているので,セキュリティ的に大丈夫なのかが少々心配です。もし何かアドバイス等在りましたら,ごりごりツッコンでいただけると幸いです。

参考

Configuring Onion Services for Tor
Tor on Ubuntu or Debian
Tor hidden services for beginners on MacOSX
ダークウェブにハニーポット
Tor Hidden Service でウェブサイトを公開してみる
pythonでwebサーバを立ち上げる