Torエグジットノードの作成方法
How to Create a Tor Exit Node (madpsy.uk)
要約
Torエグジットノードの作成方法に関する記事です。Torネットワークの仕組みと、エグジットノードを運用する上での技術的な側面や考慮事項について解説しています。
全文翻訳
Torエグジットノードの作成方法
これは、Torネットワークのエグジットノードを設定するための簡単なチュートリアルです。これを行うことには運用者にとっていくつかの固有のリスクが伴いますが、エグジットノードはTorと「クリアネット」をブリッジするために不可欠です。エグジットノードがなければ、ISPによるフィルタリングに苦しんでいる人や、インターネット活動の記録を残したくない人(BBCの記事)は、Torを使用してインターネットにアクセスすることができません。
[画像: tor-exit]
ブリッジとは異なり、エグジットノード(および通常のリレー)は公開されているデバイスであり、そのIPアドレスと設定は誰でも確認できます。これらは、発信元(匿名)クライアントに代わって、最終的に宛先に接続します。Torネットワークはエグジットノードが劇的に不足していますが、それには正当な理由があります。これらはチェーンの最後のホップであるため、Torユーザーが要求するウェブサイトやサービスへの数百ものアウトバウンド接続を行います。したがって、権力者にとって、実際にはノードが単にネットワークに参加しているだけであっても、エグジットノードの運用者を「悪いことをした」と非難することは容易です。とにかく、あなたが鋼鉄の度胸を持っており、エグジットノードを実行する意思があることを前提として、できるだけ手間をかけずに実行する方法を見ていきましょう。
始める前に、自宅からこれを実行することは、ISPや権力者からの嫌がらせの可能性があるため、危険である可能性があることを明確にしておきます。これによって法を犯しているわけではありませんが、Torトラフィックの出口点として機能しており、世界中の250万人のTorユーザーの誰かが何をするかについて、あなたは制御できません。もし嫌がらせを受けた場合は、冷静を保ち、何も間違ったことをしていないことを知ってください。必要であれば、助けとなる情報がたくさんあります。
もう一つ直面する可能性のある問題は、評判の問題です。一部のウェブサイトはエグジットノードをブロックしており、他のウェブサイトではCAPTCHAを必須としています(Cloudflare CDNやGoogleなど、大量のトラフィックを検出した場合)。
まず、動作するLinuxマシンがあると仮定します。ここではUbuntu 14.04(Trusty)を使用します。次に、標準的なルーターの後ろでNATされていると仮定します。
torとtor-armをインストールする必要があります。そのためにTorリポジトリを追加します。
echo 'deb http://deb.torproject.org/torproject.org trusty main' >> /etc/apt/sources.list
echo 'deb-src http://deb.torproject.org/torproject.org trusty main' >> /etc/apt/sources.list
次に、リポジトリのGPGキーをインストールします。
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
これで、tor、tor-arm、curl、vnstat、nginx、socatをインストールします。
apt-get update
apt-get install tor tor-arm vnstat vnstati nginx curl socat
これでTorがインストールされました。デフォルトではクライアントとして動作するため、エグジットノードにする必要があります。
/etc/tor/torrc の内容を基本的なリレー設定に置き換えます。
curl -o /etc/tor/torrc https://madpsy.uk/wp-content/uploads/2015/11/torrc.txt
サンプル設定は次のようになります。
ORPort 127.0.0.1:9001 NoAdvertise
ORPort 443 NoListen
DirPort 9030
Nickname TorExit
RelayBandwidthRate 100 KB
RelayBandwidthBurst 100 KB
ContactInfo [email protected]
DisableDebuggerAttachment 0
ExitPolicy accept *:20-23 # FTP, SSH, telnet
...
...
ExitPolicy reject *:*
/etc/tor/torrc を編集し、「ContactInfo」の横にメールアドレスを設定します。
インターネット接続速度に応じて、「RelayBandwidthRate」と「RelayBandwidthBurst」を別の値に設定することも検討してください。例の値は100 KB(キロバイト/秒)で、典型的なADSLブロードバンド接続には十分です。「DirPort」も設定されており、このノードをディレクトリサーバーとして有効にしています。これを望まない場合は、その行を削除してください。
次に、ポート443のトラフィックをローカルホストのポート9001にリダイレクトするためにsocatを実行する必要があります。これは、有用なエントリーガード(リレーはエグジットノードであるだけでなく、着信接続も受け入れます)が、すべてのTorユーザーが利用できる可能性が高いポートで実行される必要があるためです。ポート443はHTTPSなので、妥当な選択です。問題は、Torはrootで実行されず、ポート443へのバインドを試みるときに許可が拒否されることです。このため、ローカルで9001にバインドし、「socat」を使用してトラフィックをリダイレクトします。
socatを実行するには:
/usr/bin/socat TCP-LISTEN:443,fork,su=nobody TCP:127.0.0.1:9001 &
再起動時にこれが開始されるようにする必要があります。そのため、rootのcrontabに追加します。
echo '@reboot /usr/bin/socat TCP-LISTEN:443,fork,su=nobody TCP:127.0.0.1:9001 &' >> /var/spool/cron/crontabs/root
ほぼ完了です!最後に、HTTP経由で「このノードについて」のページを提供する必要があります。これにより、このノードが何であるかを問い合わせた人が見つけられるようになります。
注意:同様のことを「DirPortFrontPage」でも行うことができますが、追加コンテンツ(帯域幅グラフなど)を簡単に追加できるとは思えません。
デフォルトのnginxページを公式のTorエグジットノードページに置き換えます。
curl -o /usr/share/nginx/html/index.html https://madpsy.uk/wp-content/uploads/2015/11/tor-exit-node.txt
curl -o /usr/share/nginx/html/how_tor_works_thumb.png https://madpsy.uk/wp-content/uploads/2015/11/how_tor_works_thumb.png
/usr/share/nginx/html/index.html を編集し、「[email protected]」を見つけて実際のメールアドレスに置き換えます。
ページの最下部には、ノードの帯域幅グラフがあります。これを生成するために「vnstat」を使用します。eth0がインターネットインターフェイスであると仮定します。これに別のcronを追加する必要があります。
まず、一度手動で実行します。
/usr/bin/vnstati -i eth0 -vs -o /usr/share/nginx/html/vnstat.png
次に、毎時00分に実行されるようにcronを追加します。
echo '00 * * * * /usr/bin/vnstati -i eth0 -vs -o /usr/share/nginx/html/vnstat.png' >> /var/spool/cron/crontabs/root
これで、ノードのIPアドレスをブラウザで参照することで、この情報ページを表示できます(例:http://192.168.0.10)。情報ページと最下部のグラフが表示されるはずです。情報ページとグラフは、次のようなものになるはずです。
[画像: exit-node-info]
[画像: vnstat]
最終段階(約束します)は、ルーターで基本的なポートフォワーディングを実行して、HTTP、Torリレー、Torディレクトリがインターネットからアクセスできるようにすることです。これを実行しないと、Torエグジットノード/リレーは役に立ちません。
TCP/80、TCP/443、TCP/9030を新しいTorノードのIPアドレス(例:192.168.0.10)に転送する必要があります。
方法がわからない場合は、このサイトが非常に役立つようです:portforward.com
公開IPアドレスを参照して、以前と同じ情報ページが表示されることを確認することで、これが機能したかどうかをテストできます。もし疑問に思っていたなら、Torは動的IPアドレスを問題なく処理します。ホスト名やDNSなどについて何もする必要はありません。
これが最後のものだと約束しましたが、基本的にそうでした🙂
最後にもう一つ!新しい設定を反映するためにTorを再起動する必要があります。ポートフォワーディングの設定が終わるまで待ちました。Torが最初に行うことの一つは、ポートがインターネットから開いていることを確認することです。
Torを再起動するには、次を実行するだけです。
/etc/init.d/tor restart
「arm」でノードの活動を監視できます。次を実行するだけです。
sudo -u debian-tor arm
上部には「フィンガープリント」が表示されます。たとえば「GH35AJCVH421742CCJFPQIUCB1835947B4399」のようになります。
このフィンガープリントを使用して、「Atlas」でノードの詳細を検索できます。または、公開IPアドレスで検索することもできます。
ホスティング会社でVMまたは専用サーバーでエグジットノードを実行している場合(自宅で実行するよりもはるかに良いアイデアです)、ホスティングプロバイダーにIPアドレスの逆引きDNSレコードを依頼することも価値があります。ドメイン名を持っていると仮定します。xxx.xxx.xxxx.xxxがサーバーのIPアドレスの場合:
tor-exit1-readme.yourdomain.com A xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx.in-addr.arpa PTR tor-exit1-readme.yourdomain.com
これは、エグジットノードのIPアドレスを(ログなどから)検索する人が逆引きレコードに気づき、ブラウザで表示しようとした場合に、Torの情報ページが表示されるようにするためです。
これに加えて、ホスティングプロバイダーにサーバーが何をする予定なのかを知らせる価値があります。そうすれば、彼らが愚か者でなければ、苦情が来る可能性がある理由を理解してくれるでしょう。自宅のISPに知らせても意味がありません。彼らは無知であるか、利用規約に違反していると伝え、アカウントを解約する可能性が高いです!
必読: Torエグジットノードを安全に実行する方法の詳細については、この記事を参照してください。
リレーはエントリーガードにもなると述べました。ノードが完全に信頼されるガードになり、そのポテンシャルを最大限に発揮するには、通常70日以上かかります。エントリーガードの詳細については、この記事を参照してください。
[画像: lifecycle-blog]