SOCKSトンネルを使用してVPNなしでWebトラフィックを安全にルーティングする方法

前書き

場合によっては、ネットワークが安全でないか、ファイアウォールが厳しく制限されているため、ウェブサイトにアクセスする必要があります。 中央の誰もトラフィックを監視していないことを確認する必要があります。

1つのソリューションはhttps://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14-04[VPN]ですが、多くのVPNには特別なクライアントソフトウェアが必要ですマシンにインストールする権利がない可能性があります。

セキュリティで保護する必要があるのがWebブラウジングだけである場合、SOCKS 5プロキシトンネルという単純な代替手段があります。

SOCKSプロキシは基本的にSSHトンネルであり、特定のアプリケーションがトラフィックをトンネルに沿ってサーバーに転送し、サーバー側でプロキシがトラフィックを一般的なインターネットに転送します。 VPNとは異なり、SOCKSプロキシは、クライアントマシン上のアプリごとにアプリで構成する必要がありますが、特殊なクライアントエージェントなしでセットアップできます。

SSHアクセスを備えたDropletがあれば、SOCKSプロキシエンドポイントとして使用できます。 このチュートリアルでは、Ubuntu 14.04 Dropletをプロキシとして使用し、Firefox Webブラウザーをクライアントアプリケーションとして使用します。 このチュートリアルの終わりまでに、トンネルを介してWebサイトを安全に閲覧できるようになります。

前提条件

上記のように、最初に必要なのは、Ubuntu 14.04などのLinuxの任意のフレーバーを実行するサーバーで、https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with- ssh [SSHアクセス]。

  • サーバーを展開します(この例ではUbuntu 14.04を使用します)

独自のローカルマシンでもう少しセットアップが必要です。 そのためには、1つまたは2つのソフトウェアをダウンロードする必要があります。

  • Firefox Webブラウザ(全員)

  • PuTTY(Windowsユーザー)

Firefoxでは、システム全体のプロキシを設定する代わりに、Firefoxのみにプロキシを設定できます。

PuTTYは、Windowsユーザーのプロキシトンネルを設定するために使用されます。 Mac OS XまたはLinuxのユーザーには、トンネルを事前にセットアップするツールがあります。

ステップ1(Mac OS X / Linux)-トンネルのセットアップ

*ローカルコンピューター*で、https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys—​2 [SSHキー]を作成します。 すでにSSHキーを持っている場合は、そのキーを使用できます。

SSHキーにパスフレーズを指定することをお勧めしますが、このチュートリアルでは、問題を回避するために実際にパスフレーズを空白のままにします。

キーを設定するときに、サーバー上のsudoユーザー(この例では、* sammy *ユーザー)の承認済みキーに追加するようにしてください。

コンピューターでターミナルプログラムを開きます。 Mac OS Xでは、これはアプリケーション>ユーティリティのターミナルです。

次のコマンドでトンネルをセットアップします。

ssh -D  -f -C -q -N @

引数の説明

  • + -D +:指定されたポート番号でSOCKSトンネルが必要であることをSSHに伝えます(1025-65536の番号を選択できます)

  • + -f +:プロセスをバックグラウンドにフォークします

  • + -C +:データを送信する前に圧縮します

  • + -q +:クワイエットモードを使用します

  • + -N +:トンネルが立ち上がるとコマンドが送信されないことをSSHに伝えます

必ず `+ @ +`を自分のsudoユーザーとサーバーのIPアドレスまたはドメイン名に置き換えてください。

コマンドを入力すると、成功または失敗の兆候なしにすぐに再びコマンドプロンプトが表示されます。それは正常です。

次のコマンドを使用して、トンネルが稼働していることを確認します。

ps aux | grep ssh

出力に次のような行が表示されます。

出力

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

ターミナルアプリケーションを終了すると、トンネルはアップしたままになります。 これは、SSHセッションをバックグラウンドにする「+ -f +」引数を使用したためです。

*注:*トンネルを終了する場合は、 `+ ps `を介してPIDを取得し、 ` kill +`コマンドを使用する必要があります。これは後で行う方法を示します。

ステップ1(Windows)-トンネルのセットアップ

PuTTYを開きます。

まだインストールしていない場合は、PuTTYをダウンロードして好きな場所に保存します。 PuTTYのインストールには管理者権限は必要ありません。 `+ .exe +`をダウンロードして実行するだけです。

次の手順を実行して、トンネルをセットアップします。

  1. セッション*セクションから、サーバーの*ホスト名(またはIPアドレス)*とSSH *ポート(通常22)の画像を追加します:https://assets.digitalocean.com/articles/socks5/wXDz8J7。 png [Putty Sessions]

  2. 左側に移動します:接続> SSH>トンネル

  3. 1025-65536の任意の*送信元ポート*番号を入力します。 この例では、ポート画像を使用しました:https://assets.digitalocean.com/articles/socks5/ZLPgf4V.png [Putty Connection> SSH> Tunnel]

  4. *動的*ラジオボタンを選択します

  5. *追加*ボタンをクリックします

  6. 左側の*セッション*に戻ります

  7. * Saved Sessions の下に名前を追加し、 Save *ボタンをクリックします

  8. 次に、[開く]ボタンをクリックして接続します

  9. sudoユーザー名とサーバーパスワードを入力してログインします

PuTTYウィンドウを最小化できますが、閉じないでください。 SSH接続が開いている必要があります。

ヒント: https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-withを使用して、この同じセッションのsudoユーザー名(* sammy *)とSSHキーを保存できます。 -putty-on-digitalocean-droplets-windows-users [PuTTY SSH Keyの指示]。 これにより、接続を開くたびにユーザー名とパスワードを入力する必要がなくなります。

ステップ2-トンネルを使用するためのFirefoxの構成

SSHトンネルができたので、Firefoxがそのトンネルを使用するように設定します。 SOCKS 5トンネルが機能するには、トンネルを利用できるローカルアプリケーションを使用する必要があることに注意してください。 Firefoxはトリックを行います。

この手順は、Windows、Mac OS X、およびLinuxで同じです。

SSHコマンドまたはPuTTYでこの例で使用した*ポート番号*を使用していることを確認してください。 これまでOS X / Linuxの例でを使用し、Windowsの例でを使用しましたが、別のポートを使用している場合もあります。

(次の手順はFirefoxバージョン39で実行されましたが、オプションの場所は異なる場合がありますが、他のバージョンでも動作するはずです。)

  1. 右上隅のハンバーガーアイコンをクリックして、Firefoxのメニューにアクセスします:image:https://assets.digitalocean.com/articles/socks5/bjh8Dh1.png [Firefox Preferences]

  2. * Preferences または Options *アイコンをクリックします

  3. *詳細*セクションに移動します

  4. [ネットワーク]タブの画像をクリックします:https://assets.digitalocean.com/articles/socks5/k4DKcdA.png [Firefox Advanced Preferences]

  5. [接続]見出しの下にある[設定]ボタンをクリックします。 新しいウィンドウが開きます

  6. 手動プロキシ設定: image:https://assets.digitalocean.com/articles/socks5/70cwU1N.png [Firefox Proxy Settings]のラジオボタンを選択します

  7. * SOCKSホスト*に* localhost *を入力します

  8. SSH接続から同じ*ポート*番号を入力してください。画像では、Windowsの指示に一致するように**を入力したことがわかります。

  9. * OK *ボタンをクリックして、構成を保存して閉じます

次に、Firefoxで別のタブを開き、Webの閲覧を開始します! SSHトンネルを介した安全なブラウジングの準備がすべて整いました。

オプション:*プロキシを使用していることを確認するには、Firefoxの*ネットワーク*設定に戻ります。 別のポート番号を入力してください。 [OK]をクリックして設定を保存します。 これで、Webをブラウズしようとすると、エラーメッセージが表示されます*プロキシサーバーは接続を拒否しています。 これは、Firefoxがデフォルトの接続だけでなくプロキシを使用していることを証明しています。 正しいポート番号に戻すと、再度参照できるはずです。

  • Firefoxで通常の安全でないブラウジングに戻す:*

SSHトンネルのプライバシーが必要になったら、Firefoxの* Network プロキシ設定( Preferences> Advanced> Network> Settings *)に戻ります。

[システムプロキシ設定を使用する]のラジオボタンをクリックし、[OK]をクリックします。 Firefoxは通常の接続設定を参照しますが、これは安全ではない可能性があります。

トンネルの使用が終了したら、トンネルも終了する必要があります。これについては次のセクションで説明します。

トンネルを頻繁に使用する予定がある場合は、後で使用するためにトンネルを開いたままにすることができますが、アイドル状態が長すぎる場合、またはコンピューターがスリープ状態になった場合や電源が切れた場合、トンネルが自動的に終了する可能性があることに注意してください

ステップ3(Mac OS X / Linux)-トンネルを閉じる

トンネルを閉じると、Firefoxがプロキシを閲覧できなくなります。

ローカルマシンで以前に作成したトンネルはバックグラウンドに送信されるため、トンネルを開くために使用したターミナルウィンドウを閉じても終了しません。

トンネルを終了するには、 `+ ps `コマンドを使用してプロセスID(PID)を識別し、 ` kill +`コマンドを使用してそれを強制終了する必要があります。

マシン上のすべてのアクティブな「+ ssh +」プロセスを検索しましょう:

ps aux |grep ssh

前に入力したコマンドのように見える行を見つけて、トンネルを作成します。 出力例を次に示します。

出力

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

行の先頭から、最初の2列のいずれかに、3〜5桁の数字があります。 これはPIDです。 上記では、サンプルPIDが強調表示されています。

PIDがわかったので、 `+ kill +`コマンドを使用してトンネルを停止できます。 プロセスを強制終了するときに、独自のPIDを使用します。

sudo kill

接続プロセスを自動化する場合は、手順4に進みます。

ステップ3(Windows)-トンネルを閉じる

トンネルを閉じると、Firefoxがプロキシを閲覧できなくなります。

トンネルの作成に使用したPuTTYウィンドウを閉じます。 それでおしまい!

Windowsでは接続プロセスを自動化する簡単な方法はありませんが、PuTTYとFirefoxの両方で以前に入力した設定を保存できるため、接続を再度開いてトンネルを再度使用してください。

ステップ4(Mac OS X / Linux)-繰り返し使用するためのショートカットの作成

OS XまたはLinuxシステムの場合、エイリアスを作成するか、スクリプトを作成してトンネルをすばやく作成できます。 以下は、トンネルプロセスを自動化する2つの方法です。

注:これらのショートカットメソッドは両方とも、サーバーへのパスワードなし/パスフレーズなしのSSHキー認証を必要とします!

クリック可能なBASHスクリプト

アイコンをダブルクリックしてトンネルを開始したい場合は、簡単なBASHスクリプトを作成してジョブを実行できます。

トンネルを設定してFirefoxを起動するスクリプトを作成しますが、Firefoxで初めてプロキシ設定を手動で追加する必要があります。

  • OS X *では、コマンドラインから起動できるFirefoxバイナリは `+ Firefox.app `内にあります。 アプリがアプリケーションフォルダーにあると仮定すると、バイナリは ` / Applications / Firefox.app / Contents / MacOS / firefox +`にあります。

  • Linuxシステム*で、レポジトリ経由でFirefoxをインストールした場合、またはプレインストールされている場合、その場所は `+ / usr / bin / firefox `である必要があります。 いつでも ` which firefox +`コマンドを使用して、システム上のどこにあるかを確認できます。

以下のスクリプトで、Firefoxへのパスをシステムに適したものに置き換えます。

`+ nano +`のようなテキストエディタを使用して、新しいファイルを作成します。

nano ~/socks5.sh

次の行を追加します。

socks5.sh

#!/bin/bash
ssh -D  -f -C -q -N
&
  • `++`を目的のポート番号に置き換えます(Firefoxで設定したものと一致する必要があります)

  • `++`をSSHユーザーとホスト名またはIPに置き換えます

  • `++`をFirefoxのバイナリへのパスに置き換えます

スクリプトを保存します。 nanoの場合は、「+ CONTROL + o 」と入力し、終了するには「 CONTROL + x +」と入力します。

スクリプトを実行可能にして、ダブルクリックすると実行されるようにします。 コマンドラインから次のコマンドを入力して、独自のスクリプトパスを使用して実行権限を追加します。

chmod +x

OS Xでは、追加の手順を実行して、Mac OS Xに「+ .sh +」ファイルをプログラムのように実行し、エディターで開かないように指示する必要がある場合があります。

これを行うには、 `+ socks5.sh +`ファイルを右クリックし、*情報を取得*を選択します。

[*で開く] *セクションを見つけ、開閉用三角ボタンが下向きでない場合は、クリックしてドロップダウンメニューを表示します。 Xcodeがデフォルトのアプリとして設定されている可能性があります。 画像:https://assets.digitalocean.com/articles/socks5/8TJ7dvX.png [情報を見る]

  • Terminal.app *に変更します。 Terminal.appがリストにない場合は、*その他*を選択し、*アプリケーション>ユーティリティ> Terminal.app *に移動します。

SOCKSプロキシを今すぐ開くには、 `+ socks.sh +`ファイルをダブルクリックします。

(実行後、スクリプトはパスワードの入力を求めないため、パスフレーズを要求するように以前にSSHキーを設定した場合、サイレントに失敗します。)

スクリプトはターミナルウィンドウを開き、SSH接続を開始し、Firefoxを起動します。 ターミナルウィンドウを閉じてください。 Firefoxでプロキシ設定を保持している限り、安全な接続でブラウジングを開始できます。

コマンドラインエイリアス

コマンドラインで頻繁に自分自身を見つけてトンネルを立ち上げたい場合は、BASHエイリアスを作成してジョブを実行できます。

エイリアスを作成する最も難しい部分は、エイリアスコマンドを保存する場所を見つけることです。

さまざまなLinuxディストリビューションとOS Xリリースは、エイリアスをさまざまな場所に保存します。 最善の策は、次のファイルのいずれかを探し、 `+ alias +`を検索して、現在他のエイリアスが保存されている場所を確認することです。 可能性が含まれます

  • +〜/ .bashrc +

  • +〜/ .bash_aliases

  • +〜/ .bash_profile +

  • +〜/ .profile +

正しいファイルを見つけたら、このエイリアスを既存のファイルの下、またはファイルの最後に追加します。

bashrc
alias socks5='ssh -D  -f -C -q -N  &&  &'
  • `++`を目的のポート番号に置き換えます(Firefoxで設定したものと一致する必要があります)

  • `++`をSSHユーザーとホスト名またはIPに置き換えます

  • `++`をFirefoxのバイナリへのパスに置き換えます

エイリアスは新しいシェルを起動したときにのみロードされるため、ターミナルセッションを閉じて新しいセッションを起動します。

入力するとき:

socks5

このエイリアスはトンネルを設定し、Firefoxを起動してコマンドプロンプトに戻ります。

Firefoxがプロキシを使用するように設定されていることを確認してください。 安全にブラウジングできるようになりました!

ステップ5(オプション)-トラブルシューティング:ファイアウォールを通過する

接続が機能している場合は、準備ができており、読み上げを停止できます。

ただし、ファイアウォールが制限されているためにSSH接続を確立できないことがわかった場合、トンネルの作成に必要なポート22がブロックされている可能性があります。

プロキシサーバーのSSH設定を制御できる場合(DigitalOcean Dropletへのスーパーユーザーアクセスで、これを行うことができます)、22以外のポートでリッスンするようにSSHを設定できます。

ブロックされていないポートを使用できますか?

ShieldsUP!のようなツールでポートスキャンを実行するという疑わしい計画は別として(ローカルネットワークがこれを攻撃と見なす可能性があるため疑わしい)、一般的に残されているポートを試すのが最善です開いた。

頻繁に開かれるポートには、* 80 (一般的なWebトラフィック)および 443 *(SSL Webトラフィック)が含まれます。

SSHサーバーがWebコンテンツを提供していない場合、デフォルトのポート22ではなく、これらのWebポートのいずれかを使用して通信するようSSHに指示できます。 * 443 *は、このポートでトラフィックが暗号化されることが予想されるため、最良の選択です。SSHトラフィックは暗号化されます。

ファイアウォールのない場所から、プロキシに使用しているDigitalOcean DropletにSSHで接続します。 (または、コントロールパネルの組み込みのhttps://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-console-to-access-your-droplet[console]を使用しますが、 Webトラフィックが監視されているのではないかと心配している場合は、これを行いたくないかもしれません。)

サーバーのSSH設定を編集します。

sudo nano /etc/ssh/sshd_config

行「ポート22」を探します。

`+ 22 +`を完全に置き換える(いずれにせよSSHを強化する優れた手法です)か、SSHがリッスンする2番目のポートを追加することができます。

SSHが複数のポートでリッスンするように選択するため、「+ Port 22+」の下に「+ Port 443+」という新しい行を追加します。 これが一例です。

sshd_config

. . .

Port 22


. . .

SSHを再起動して、編集したSSH設定をリロードします。

ディストリビューションによって、SSHサーバーデーモンの名前は異なる場合がありますが、「+ ssh 」または「 sshd +」になる可能性があります。 一方が機能しない場合は、もう一方を試してください。

sudo service ssh restart

新しいSSHポートが機能することを確認するには、新しいシェルを開き(誤ってロックアウトした場合に備えて現在のシェルを閉じないでください)、新しいポートを使用してSSHで接続します。

ssh  -p 443

成功したら、両方のシェルからログアウトし、新しいポートを使用してSSHトンネルを開くことができます。

ssh -D  -f -C -q -N  -p 443

それでおしまい! Firefoxの設定はSSHポートに依存せず、トンネルポート(上記)に依存するため、まったく同じになります。

結論

SOCKS 5トンネルを開いて、lightweight索好きな目から安全なWebにアクセスするための軽量な方法が必要なときはいつでも、安全なSSHトンネルをブラウズします。

Related