GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

trailofbits

algo – クラウドに個人用のIPSEC VPNを設定する //blog.trailofbits.com/2016/12/…

投稿日:

クラウドに個人用のIPSEC VPNを設定する https: //blog.trailofbits.com/2016/12/…

Algo VPN

Algo VPNは、個人用IPSEC VPNの設定を簡素化する一連の安全なスクリプトです。 利用可能な最も安全なデフォルトを使用し、一般的なクラウドプロバイダで動作し、ほとんどのデバイスでクライアントソフトウェアを必要としません。 詳細はリリース発表をご覧ください。

特徴

  • AES-GCM、SHA2、およびP-25​​6の強力な暗号を持つIKEv2のみをサポート
  • iOSとmacOSデバイスを自動設定するAppleプロファイルを生成する
  • ユーザーを追加または削除するためのヘルパースクリプトが含まれています
  • ローカルDNSリゾルバで広告をブロックする(オプション)
  • トラフィックをトンネリングするための限定されたSSHユーザーを設定します(オプション)。
  • 現在のバージョンのUbuntuとstrongSwanに基づいています
  • DigitalOcean、Amazon EC2、Microsoft Azure、Google Compute Engine、または自分のサーバーにインストールする

アンチフィーチャー

  • レガシー暗号スイートまたはL2TP、IKEv1、RSAなどのプロトコルはサポートしていません
  • Tor、OpenVPNなどの危険なサーバーをインストールしない
  • TLSのセキュリティに依存しない
  • ほとんどのプラットフォームでクライアントソフトウェアを必要としない
  • 匿名性や検閲回避を主張していない
  • あなたをFSBMSSDGSE 、またはFSMから守ると主張していない

Algoサーバーを展開する

Algoサーバーを稼動させる最も簡単な方法は、クラウド内に新しい仮想マシンを設定できるようにすることです。

  1. クラウドホスティングプロバイダのアカウントをセットアップします。 AlgoはDigitalOcean (ユーザーフレンドリー)、 Amazon EC2Google Compute EngineMicrosoft Azureサポートしています

  2. Algoをダウンロードしてください ローカルマシン上の便利な場所に解凍します。

  3. Algoのコア依存関係をインストールします。 ターミナルを開きます。 Algoを配備するために使用するpythonインタプリタはpython2でなければなりません。 これが何を意味するのか分からなければ、おそらく大丈夫です。 Algoを解凍したalgo-masterディレクトリにcdして、次のalgo-masterを実行します。

  4. Algoの残りの依存関係をインストールします。 前の手順と同じターミナルウィンドウを使用して、次のコマンドを実行します。

    $ python -m virtualenv --python=`which python2` env && source env/bin/activate && python -m pip install -U pip && python -m pip install -r requirements.txt

    macOSでは、 ccをインストールするように指示されることがあります。 もしそうなら、acceptを押すべきです。

  5. 作成するユーザーをリストします。 あなたの好きなテキストエディタでconfig.cfgを開きます。 作成するusersリストで指定します。

  6. 展開を開始します。 ターミナルに戻ります。 Algoディレクトリで./algoを実行し、指示に従います。 いくつかのオプション機能を利用できます。 完全に機能するVPNサーバーには、何も必要ありません。 これらのオプション機能については、 deploy-from-ansible.mdで詳しく説明しています

それでおしまい! サーバー展開プロセスが完了すると、以下のメッセージが表示されます。 あなたは今インターネット上にAlgoサーバーを持っています。 後で必要になる場合は、p12(ユーザー証明書)のパスワードを書き留めておいてください。

これで、クライアントに接続するように設定できます(iPhoneやラップトップなど)。 以下の「VPNクライアントの設定」に進みます。

        "\"#----------------------------------------------------------------------#\"",
        "\"#                          Congratulations!                            #\"",
        "\"#                     Your Algo server is running.                     #\"",
        "\"#    Config files and certificates are in the ./configs/ directory.    #\"",
        "\"#              Go to https://whoer.net/ after connecting               #\"",
        "\"#        and ensure that all your traffic passes through the VPN.      #\"",
        "\"#                    Local DNS resolver 172.16.0.1                     #\"",
        "\"#                The p12 and SSH keys password is XXXXXXXX             #\"",
        "\"#----------------------------------------------------------------------#\"",

VPNクライアントを構成する

ユーザが必要とする証明書と設定ファイルは、 configsディレクトリに置かれます。 多くの場合、秘密鍵が含まれているので、これらのファイルを保護してください。 すべてのファイルは、新しいAlgo VPNサーバーのIPアドレスで指定されたサブディレクトリに保存されます。

アップルデバイス

ユーザーにAppleのプロフィールを送信します。 各ユーザーの対応するmobileconfig(Apple Profile)を見つけ、AirDropまたはその他の安全な手段を介してそれらに送信します。 Apple設定プロファイルは、iOSおよびmacOSデバイス用のオールインワン設定ファイルです。 macOSでは、インストールするプロファイルをダブルクリックすると、VPNが完全に構成されます。 iOSでは、AirDropが承認されるとすぐにプロファイルをインストールするように求められます。

VPNをオンにします。 iOSでは、設定を開き、リストの一番上にある「VPN」の横にあるトグルをクリックして、VPNに接続します。 macOSでは、システム環境設定 – >ネットワークを開き、左の列でAlgo VPNを見つけて「接続」をクリックして、VPNに接続します。 macOSでは、「メニューバーにVPNステータスを表示」をチェックすると、メニューバーに簡単に接続したり切断したりすることができます。

オンデマンドVPNの管理。 「オンデマンド」を有効にすると、VPNはできるだけ自動的に接続されます。 iOSでは、Algo VPNのエントリの横にある(i)をクリックし、「オンデマンドで接続」をオフにして、「オンデマンド」をオフにすることができます。 macOSでは、ネットワーク環境設定を開き、Algo VPNを左の列で探し、「オンデマンドで接続」のチェックボックスをオフにすることで、「オンデマンド」をオフにすることができます。

Androidデバイス

AndroidのどのバージョンもIKEv2をサポートしていません。 Android 4以降用strongSwan VPN Clientをインストールします 対応するuser.p12証明書をデバイスにインポートします。 より詳細なウォークスルーについては、 Androidの設定手順をご覧ください。

ウィンドウズ10

PowerShellスクリプトwindows_{username}.ps1とp12証明書{username}.p12をWindowsクライアントにコピーし、管理者として次のコマンドを実行してVPN接続を構成します。

powershell -ExecutionPolicy ByPass -File windows_{username}.ps1 Add

手動インストールについては、 Windowsのセットアップ手順を参照してください

Linuxネットワークマネージャクライアント(例えば、Ubuntu、Debian、またはFedora Desktop)

ネットワークマネージャはAES-GCMをサポートしていません。 Linuxデスクトップクライアントをサポートするには、展開プロセス中に「互換性のある」暗号化を選択し、少なくともNetwork Manager 1.4.1を使用します。 詳細は、 Issue#263を参照してください。

LinuxのstrongSwanクライアント(OpenWRT、Ubuntu Serverなど)

strongSwanをインストールし、付属のipsec_user.conf、ipsec_user.secrets、user.crt(ユーザ証明書)、およびuser.key(秘密鍵)ファイルをクライアントデバイスにコピーします。 これらは、正確なユースケースに基づいてカスタマイズする必要があります。 これらのファイルは、元々、ポイントツーポイントのOpenWRTベースのVPNを念頭に置いて生成されました。

Ubuntu Server 16.04の例

  1. sudo apt-get install strongswan strongswan-plugin-openssl :strongSwanをインストールする
  2. /etc/ipsec.d/certs algo-master/configs/<server_ip>/pki/certs/<name>.crt <name>.crtから<name>.crtコピーします。
  3. /etc/ipsec.d/private algo-master/configs/<server_ip>/pki/private/<name>.keyから<name>.keyコピーしalgo-master/configs/<server_ip>/pki/private/<name>.key
  4. /etc/ipsec.d/cacerts algo-master/configs/<server_ip>/pki/cacert.pemからcacert.pemをコピーします。
  5. /etc/ipsec.secretsリストに追加します(例: <server_ip> : ECDSA <name>.key
  6. /etc/ipsec.confから接続を追加し、 leftcert<name>.crtファイル<name>.crt一致することを確認します
  7. sudo ipsec restart :設定の変更を取得する
  8. sudo ipsec up <conn-name> :ipsecトンネルを開始する
  9. sudo ipsec down <conn-name> :ipsecトンネルをシャットダウンする

一般的な使用例の1つは、VPNを経由せずにサーバーがローカルLANにアクセスできるようにすることです。 /etc/ipsec.conf次の行を追加して、パススルー接続を設定します。

conn lan-passthrough
leftsubnet=192.168.1.1/24 # Replace with your LAN subnet
rightsubnet=192.168.1.1/24 # Replac with your LAND subnet
authby=never # No authentication necessary
type=pass # passthrough
auto=route # no need to ipsec up lan-passthrough

他のデバイス

プラットフォームによっては、以下のファイルが1つまたは複数必要になる場合があります。

  • cacert.pem:CA証明書
  • user.mobileconfig:アップルのプロフィール
  • user.p12:ユーザー証明書と秘密鍵(PKCS#12形式)
  • user.sswan:AndroidのstrongSwanプロフィール
  • ipsec_user.conf:strongSwanクライアントの設定
  • ipsec_user.secrets:strongSwanクライアントの設定
  • windows_user.ps1:Windows上でVPN接続をセットアップするためのPowershellスクリプト

SSHトンネルの設定

オプションのSSHトンネリングロールをオンにすると、 config.cfg各ユーザーに対してローカルユーザーアカウントが作成され、SSH authorized_keyファイルはconfigsディレクトリ(user.ssh.pem)に格納されます。 SSHユーザーアカウントにはシェルアクセス権がなく、パスワードで認証できず、トンネリングオプションが限られています( ssh -N )。 これにより、SSHユーザーはトンネルをセットアップするために必要なアクセスが最小限に抑えられ、Algoサーバー上で他のアクションは実行できません。

以下の例のコマンドを使用して、 useripを自分のものに置き換えてSSHトンネルを開始します。 トンネルが設定されると、Algoサーバーを経由してトラフィックをルーティングするために、SOCKSプロキシとして127.0.0.1:1080を使用するようにブラウザまたはその他のアプリケーションを設定できます。

ssh -D 127.0.0.1:1080 -f -q -C -N user@ip -i configs/ip_user.ssh.pem

SSHからAlgo Serverへ

管理目的のためにAlgoサーバーにSSH接続するには、以下の例のコマンドを使用して、 ipを自分のものに置き換えます。

ssh root@ip -i ~/.ssh/algo.pem

定期的にAlgoにログインすると、Algo sshキーを自動的に読み込むと便利です。 ~/.bash_profile末尾に次のスニペットを追加して、シェル環境に永続的に追加します。

ssh-add ~/.ssh/algo > /dev/null 2>&1

管理者のユーザ名は、Digital Ocean以外のプロバイダのrootではなく、 ubuntuに注意してください。

ユーザーの追加または削除

展開プロセス中にCA証明書を保存することを選択した場合、Algo自身のスクリプトは簡単にVPNサーバーからユーザーを追加したり削除したりできます。

  1. config.cfg usersリストを更新する
  2. 端末を開き、algoディレクトリに移動し、 source env/bin/activateして仮想環境をsource env/bin/activate
  3. 次のコマンドを実行します./algo update-users

このプロセスが完了すると、Algo VPNサーバーには、 config.cfgファイルにリストされているユーザーのみが含まれます。

その他のドキュメント

すべてのドキュメントを読んでさらに質問がある場合は、Gitterのチャットに参加してください

推薦

私はあまりにも長い間、おそらく被験者に適切な話をする時間については、VPNのsvcsの申し訳ありません状態について怒ってきた。 TL; DR:Algoを使用します。

ケンホワイト

VPNプロバイダ/アプリを選ぶ前に、 https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdfの調査をしてください 。 Algoを検討する

登録

Algoは本当に簡単で安全です。

グルーグ

私はAlgo VPNを使って遊んでいました。これは、開発についてあまり知られていなくても、ほんのわずかの時間でクラウドにVPNを設定できるスクリプトのセットです。 私はビットのアプローチのトレイルにかなり感銘を受けたと言わざるを得ない。

TechCrunchの Romain Dillet

匿名のランダムVPNプロバイダーに現金を預けるのが不愉快なら、これが最善の解決策です。

ライフハッカーの Thorin Klosowski

Algo VPNをサポート

すべての寄付は継続的な発展を支えています。 ありがとう!

  • PayPalPatreonFlattrから寄付を受け付けています。
  • デジタルオーシャンに10ドルのクレジットを申し込むときは、 紹介コードを使用してください。
  • また、Github Pull Requestsによる新しいコードとバグ修正の寄稿を受け入れ、感謝しています。







-trailofbits
-, , , , , , , , ,

執筆者: