Follow Brian Li (@DecryptoBL) on Twitter.
Follow Brian Li (@bwhli) on Instagram.

SubstratumNode v0.4.1をブロックする方法

2019年1月5日

この記事は、SubstratumNode v0.4.1からのトラフィックを簡単にブロックする方法の概要です。 このバージョンのSubstratumNodeはまだ技術的にはベータ版ですので、各ステップの再現方法については詳しく説明しません。 ただし、Unixのコマンドライン、VPSの起動、およびファイアウォールについての基本的な知識がある場合は、SubstratumNodeのIPアドレスも識別、記録、およびブロックできます。

ここに指示があります。

  1. ノードの分散ネットワークを設定します。
  2. IPロギングをサポートする送信先サーバーを設定します。
  3. cURLを使用して、SubstratumNodeから宛先サーバーにpingを送信します。
  4. 移行先サーバーの前にWAFを設定します。 Cloudflareはうまく機能します。
  5. ログに記録されたSubstratumNodeをWARでブロックします。

SubstratumNodeの設定

ノードの分散ネットワークをセットアップするために、シンガポール、ロンドン、トロント、およびニューヨークに4つのDigitalOceanサーバーを作成しました。

次に、4つすべてのネットワークサーバーで次の手順を実行しました。

  1. adduser subを実行して新しいユーザーを作成します。
  2. usermod -aG sudo subを実行して、subにroot権限を付与します。
  3. SubstratumNodeバイナリのダウンロード wget https://s3.us-east-2.amazonaws.com/substratum-website-downloads/v0.4.1/SubstratumNode-v0.4.1-Linux64-binary.zip
  4. でバイナリパッケージを解凍します。 unzip SubstratumNode-v0.4.1-Linux64-binary.zip

次に、各サーバーのDNSをlocalhostに変更しました。 sudo ./dns_utility subvert. 私はシンガポールのサーバーを私のブートストラップノードとして使い、他の3つのサーバーは標準のSubstratumノードとして機能することにしました。 これを行うために、私は以下のコマンドを使いました。--bootstrap_from シンガポールのブートストラップノードの一意の識別子で、実行後に取得されます。 SubstratumNode.

シンガポール – 128.199.75.62

sudo ./SubstratumNode --dns_servers 1.1.1.1 --ip 128.199.75.62 --node_type bootstrap --port_count 6 --log_level debug

ロンドン – 46.101.13.17

sudo ./SubstratumNode --dns_servers 1.1.1.1 --ip 46.101.13.17 --port_count 6 --bootstrap_from xXF/eofURHfbxSPO6hj1UIMjkHsjb4+T28ytlJt4eZY:128.199.75.62:41154,40624,44932,45945,47272,50194 --log_level debug

トロント – 178.128.224.230

sudo ./SubstratumNode --dns_servers 1.1.1.1 --ip 178.128.224.230 --port_count 6 --bootstrap_from xXF/eofURHfbxSPO6hj1UIMjkHsjb4+T28ytlJt4eZY:128.199.75.62:41154,40624,44932,45945,47272,50194 --log_level debug

ニューヨーク – 142.93.3.202

sudo ./SubstratumNode  _servers 1.1.1.1 --ip 142.93.3.202 --port_count 6 --bootstrap_from xXF/eofURHfbxSPO6hj1UIMjkHsjb4+T28ytlJt4eZY:128.199.75.62:41154,40624,44932,45945,47272,50194 --log_level debug

これが、4つのノードすべてが実行されているときの様子です。 NYCノードのターミナルウィンドウには追加のタブがあります。これは送信先サーバーにリクエストを送信するために使用されます。

IPロギングを使用して宛先サーバを設定する

この実験では、Decrypto.netをホストするために使用しているサーバーにIPロギングがあります。 もう1つの選択肢は、LAMPまたはLEMPスタックを使用して別のDigitalOceanサーバーを起動することです。ApacheとNGINXの両方にサーバーログがあります。

cURLを使用して宛先サーバーをpingする

次に、NYC(142.93.3.202)サーバーで次のコマンドを実行しました。

curl -I https://decrypto.net

SubstratumNodeはそれからノードのネットワークを通してこのリクエストをルーティングし、そして私はNYCサーバー上で次のHTTP / 1.1 200レスポンスを受け取りました。

これが、送信先サーバーログの要求がどのようになったかです。

ご覧のとおり、宛先サーバーはロンドンサーバーのIPアドレスである46.101.13.17からの要求を確認しました。 これは私たちに二つのことを伝えます。

  1. SubstratumNodeは実際にはノードを介してデータを経路指定します。
  2. 元のノードのIPアドレスは保護されています。

WAFを使用してSubstratumNodeトラフィックをブロックする

次に、ロンドンサーバーをブロックするために、Decrypto.netのリバースプロキシ、キャッシングレイヤ、およびWebアプリケーションファイアウォール(WAF)として機能するCloudflareを使用しました(46.101.13.17)。 もう一度NYCサーバーを使用しましたが、今回は次のコマンドを実行して自分のWebサイトにfaviconをダウンロードしました。

wget https://decrypto.net/favicon.ico

ご覧のとおり、CloudflareでIPをブロックした後、リクエストは失敗しました(403)。

Cloudflareレポートは、favicon.icoへのリクエストがブロックされたことを示しています。

これはネットワークの検閲に使用できますか?

この実験は何を示していますか?

  1. SubstratumNodeは、ノードを介してトラフィックをルーティングすることができます。
  2. 起点ノードをセットアップして宛先サーバーを制御する場合は、Substratumネットワークを介してcURL要求を送信するだけで、出口ノードのIPを簡単に記録できます。

その結果は何ですか?

  1. サブストレートの自己修復は、1つがブロックされた場合に、宛先サーバーへの代替ルートを見つけることができると期待されています。 自分が管理している送信先サーバーに定期的にpingを実行するようにcronジョブを設定することで、自己修復機能を利用してネットワーク上のすべてのノードIPをログに記録することができます。
  2. 検閲を使用する政府は、これらのIPをブロックしたり、検閲を回避するためにノードを実行している市民を識別するためにそれらを使用することができます。 動的IPアドレスを発行しているISPは、特に問題ではありません。 ユーザーがSubstratumNodeを使用できないようにすることに関心を持つ当事者は、IPログにタイムスタンプを付け、それらを電気通信の顧客への動的なIP割り当てに相互参照するだけでは不十分です。.
  3. 中国では、市民がVPNサービスの実行で逮捕されています。 SubstratumNodeのトラフィック処理モードは、サービスとしてのVPN転送トラフィックと本質的に同じです。

もう一度、上記の実験をSubstratumNode v0.4.1を用いて行った。 SubstratumNodeの製品版は、収益化、自己修復、暗号化などの機能をもたらすと期待されています。 だまされてはいけませんが、チームが話した暗号化はノード間の実際のデータ転送に関係しているだけで、「IPアドレスを暗号化する」ということではありません。 最後に、このIP識別方法はSubstratumNodeの唯一の潜在的な欠陥ではありません。 他にも、CLIのデバッグモードを介してネクストホップノードのIPアドレスを取得し、ノードIPのマスターリストを保持するサーバーのIPアドレスをブロックする可能性があることが議論されています(そのようなサーバーが存在する場合)。


質問は?

ツイッターまたはメールで問い合わせ。