NginxとLuaを使用したカスタムtor2webサービス

Tor



インターネットから隠されたTorサイトへのゲートウェイを作成する方法について説明しましょう。



Torネットワークは、匿名ネットワーク接続を確立できるプロキシシステムです。 Torを使用すると、通常のサーバーに匿名で接続し、Torネットワーク自体で前代未聞のサーバーをホストできます。 後者の場合、隠しサーバーがタマネギゾーンに作成されます。 サーバー名には、16個の文字と数字(指紋)が含まれます。



タマネギのFacebookミラー



非表示のサーバーに移動するにはどうすればよいですか:



  1. Torをインストールし、それを介してブラウザのトラフィックを誘導します。 Torブラウザーは、必要なものすべてを含むポータブルアプリケーションです。
  2. ただし、すべての人がTorブラウザをインストールするわけではないため、通常のネットワークユーザーに隠しサーバーのコンテンツを表示する方法が必要です。 Tor2webサービスは、隠されたサイトへの直接アクセスを提供する救助に来ます。


非表示のWiki Webサイト( kpvzxxbbraaigawj.onion )は、通常のブラウザー( kpvzxxbbraaigawj.tor2web.fi )で開くことができます。 ユーザーがtor2web経由でサイトに接続すると、Torをインストールせずに隠しサイトへのアクセスと引き換えに匿名性を失います。 同様のサービスのリストを提供しますが、その一部は閉鎖されています。





tor2webサービスを実行する既存の方法を検討してください。その後、独自の方法を共有します。



プロジェクトTor2web-3.0?





tor2web-3.0



Tor2web-3.0GlobaLeaksプロジェクトの重要な部分であり、ネットワークユーザーの非表示サーバーへのアクセスを容易にします。



サンプルサイト: kpvzxxbbraaigawj.tor2web.org



Tor2web-3.0プロジェクトには3台のサーバーが接続されています。 サーバーにTor2webをインストールして、ネットワークに参加できます。 無効になった.luサーバーと.toサーバーは同じ人に属します。



Tor2web-3.0は、スタンドアロンサービスとしてインストールされます。 コードはPythonで書かれています。 Tor2web-3.0に関する苦情はほとんどありませんが、追加の参加者(ユーザー-Nginx-Tor2web-3.0 - Tor-ターゲットサイト)を避けたいと思いました。 また、私はPythonで書かれたネットワークソフトウェアが好きではありません。



ポリポ?



ポリポ



Polipoは、SOCK5サーバーに接続をリダイレクトできるHTTPサーバーです。 以前、PolipoはTorブラウザの一部としてこの目的で使用されていました。



チェーンを構築できます:Nginx- Polipo -Tor。 Tor2web-3.0の場合のように、NginxはSOCK5サーバーを介してトラフィックをプロキシできないため、余分な参加者が発生します。 さらに、サイトの通常の表示では、サーバーの応答のオニオンリンクをゲートウェイへのリンクに置き換えたいと思います:s / .onion / .onion.xx /



Nginxパッチ?



SOCK5サーバーを介してトラフィックをプロキシする機能を追加するNginxのパッチがあります。 実際、 SOCKS5プロトコルは非常にシンプルであるため、まだ公式モジュールがないのは奇妙です。 このソリューションは魅力的に見えますが、思い浮かばれていません。更新ごとにNginxにパッチを適用する必要があります。 Debian Wheezyボックスの通常のNginxで動作するソリューションが欲しいです。 また、サーバー応答のリンクを置き換える方法はありません。



LuaでのNginxのモジュールの作成





オープンレスト



Nginxは長い間、Luaにスクリプト埋め込む機能をサポートしてきました。 Luaコードは、直接アクセスソケットの操作を含む幅広いオプションを提供します。 残念ながら、SOCKS5サーバーに接続するためのモジュールが見つからなかったため、独自のを作成しました 。 各リクエストに対して、ポート9050を介してTorプログラムとの接続が確立され、SOCKS5ハンドシェイクが通過し、ターゲットサイトのアドレスが送信されます。 その後、ソケットはターゲットサイトへの直接ソケットであるかのように使用されます。 ユーザーのリクエストはメモリに読み込まれ、編集されてサーバーに送信されます。 サーバーの応答が読み取られ、編集され(リンクを置き換え)、ユーザーに送信されます。 すべての操作は非ブロッキングです。 この部分は、別個のonion2webモジュールとして設計しました。



サイトに初めて接続するとき、ユーザーには、サイトに入るための確認フォームが記載されたスタブが表示されます。 これは、通常のサイトのページに隠されたサービスの写真を含めることができないようにするために必要です。



socks5モジュールには、ソケットがSOCK5サーバーを介して転送される機能が含まれています。 機能はモジュールページで説明されています 。 onion2webモジュールには、tor2webゲートウェイに対応する1つのhandle_onion2web関数が含まれています。 使用例を以下に示します。 トーラスのアドレスとポートを設定し、サイトへのアクセスの確認フォームを無効にすることができます。



欠陥:





このオプションでは、停止してtor2webゲートウェイに使用しました。 サイト自体の欠点には、SSLの欠如が含まれます。 他にも欠点があると思います。 一般的に、決定はむしろ松葉杖です。



tor2webゲートウェイを上げる方法



このドメインには、ドメイン、サーバー、およびワイルドカードSSL証明書が必要です。



ドメインでは、すべてのサブドメインをサーバーのIPアドレスで登録する必要があります。

すばらしいサービスpdd.yandex.ruのDNSエディター



サーバーは、NginxからSOCKS5サーバーに接続するために、新鮮なngx_luaを備えたTor、Nginx、および私のonion2webモジュールを必要とします。 Debian Wheezyには、古すぎるngx_luaを含むnginx-extrasパッケージがあります。 (この古いngx_luaは、使用されているメソッドの一部、たとえばngx.req.raw_headerをサポートしていません。)wheezy-backportsのnginx-extrasのバージョンには、かなり新しいngx_luaが含まれています。 onion2webモジュールはluarocks経由でインストールできます(これにより、socks5モジュールが依存関係として自動的にインストールされます)。



Debian Wheezyのインストール:



# echo deb http://ftp.us.debian.org/debian/ wheezy-backports main > /etc/apt/sources.list.d/wheezy-backports.list # apt-get update # apt-get install tor luarocks nginx-extras/wheezy-backports # luarocks install onion2web
      
      





Nginxでは、次のサイトを作成します。



 server { listen 80; server_name *.onion.gq; location / { default_type text/html; content_by_lua ' require("onion2web").handle_onion2web(".onion.gq"); '; } }
      
      





ドメインは、server_nameとLuaコード内の2つの場所の構成に表示されます。



ウェブサイト準備完了: kpvzxxbbraaigawj.onion.gq



Socks5モジュールのソース: github.com/starius/lua-resty-socks5

onion2webモジュールのソース: github.com/starius/onion2web



All Articles