Github: https://github.com/trailofbits/algo
Algo VPN
Algo VPNは、個人用IPSEC VPNの設定を簡素化する一連の安全なスクリプトです。 利用可能な最も安全なデフォルトを使用し、一般的なクラウドプロバイダで動作し、ほとんどのデバイスでクライアントソフトウェアを必要としません。 詳細はリリース発表をご覧ください。
特徴
- AES-GCM、SHA2、およびP-256の強力な暗号を持つIKEv2のみをサポート
- iOSとmacOSデバイスを自動設定するAppleプロファイルを生成する
- ユーザーを追加または削除するためのヘルパースクリプトが含まれています
- ローカルDNSリゾルバで広告をブロックする(オプション)
- トラフィックをトンネリングするための限定されたSSHユーザーを設定します(オプション)。
- 現在のバージョンのUbuntuとstrongSwanに基づいています
- DigitalOcean、Amazon EC2、Microsoft Azure、Google Compute Engine、または自分のサーバーにインストールする
アンチフィーチャー
- レガシー暗号スイートまたはL2TP、IKEv1、RSAなどのプロトコルはサポートしていません
- Tor、OpenVPNなどの危険なサーバーをインストールしない
- TLSのセキュリティに依存しない
- ほとんどのプラットフォームでクライアントソフトウェアを必要としない
- 匿名性や検閲回避を主張していない
- あなたをFSB 、 MSS 、 DGSE 、またはFSMから守ると主張していない
Algoサーバーを展開する
Algoサーバーを稼動させる最も簡単な方法は、クラウド内に新しい仮想マシンを設定できるようにすることです。
-
クラウドホスティングプロバイダのアカウントをセットアップします。 AlgoはDigitalOcean (ユーザーフレンドリー)、 Amazon EC2 、 Google Compute Engine 、 Microsoft Azureをサポートしています 。
-
Algoをダウンロードしてください 。 ローカルマシン上の便利な場所に解凍します。
-
Algoのコア依存関係をインストールします。 ターミナルを開きます。 Algoを配備するために使用する
python
インタプリタはpython2でなければなりません。 これが何を意味するのか分からなければ、おそらく大丈夫です。 Algoを解凍したalgo-master
ディレクトリにcd
して、次のalgo-master
を実行します。- マックOS:
$ python -m ensurepip --user $ python -m pip install --user --upgrade virtualenv
- Linux(debベース):
$ sudo apt-get update && sudo apt-get install \ build-essential \ libssl-dev \ libffi-dev \ python-dev \ python-pip \ python-setuptools \ python-virtualenv -y
- Linux(rpmベース): RedHat / CentOS 6.xのプレインストールマニュアルを参照してください。
- Windows: Windowsのマニュアルを参照
- マックOS:
-
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を押すべきです。 -
作成するユーザーをリストします。 あなたの好きなテキストエディタで
config.cfg
を開きます。 作成するusers
リストで指定します。 -
展開を開始します。 ターミナルに戻ります。 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の例
-
sudo apt-get install strongswan strongswan-plugin-openssl
:strongSwanをインストールする -
/etc/ipsec.d/certs
algo-master/configs/<server_ip>/pki/certs/<name>.crt
<name>.crt
から<name>.crt
コピーします。 -
/etc/ipsec.d/private
algo-master/configs/<server_ip>/pki/private/<name>.key
から<name>.key
コピーしalgo-master/configs/<server_ip>/pki/private/<name>.key
-
/etc/ipsec.d/cacerts
algo-master/configs/<server_ip>/pki/cacert.pem
からcacert.pem
をコピーします。 -
/etc/ipsec.secrets
リストに追加します(例:<server_ip> : ECDSA <name>.key
-
/etc/ipsec.conf
から接続を追加し、leftcert
が<name>.crt
ファイル<name>.crt
一致することを確認します -
sudo ipsec restart
:設定の変更を取得する -
sudo ipsec up <conn-name>
:ipsecトンネルを開始する -
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サーバー上で他のアクションは実行できません。
以下の例のコマンドを使用して、 user
とip
を自分のものに置き換えて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サーバーからユーザーを追加したり削除したりできます。
-
config.cfg
users
リストを更新する - 端末を開き、algoディレクトリに移動し、
source env/bin/activate
して仮想環境をsource env/bin/activate
- 次のコマンドを実行します
./algo update-users
このプロセスが完了すると、Algo VPNサーバーには、 config.cfg
ファイルにリストされているユーザーのみが含まれます。
その他のドキュメント
- セットアップ手順
- 利用可能な不可欠な役割に関する文書
- Fedora Workstationから展開する(26)
- RedHat / CentOS 6.xから展開する
- Windowsから展開する
- 直接責任者から展開する
- クライアントセットアップ
- Androidクライアントをセットアップする
- 不可能なGeneric / Linuxクライアントのセットアップ
- クラウド設定
- Azureの設定
- 高度な導入
- 独自のFreeBSDサーバにデプロイする
- 独自のUbuntu 16.04サーバーに展開する
- サポートされていないクラウドプロバイダに展開する
- よくある質問
- トラブルシューティング
すべてのドキュメントを読んでさらに質問がある場合は、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を設定できるスクリプトのセットです。 私はビットのアプローチのトレイルにかなり感銘を受けたと言わざるを得ない。
匿名のランダムVPNプロバイダーに現金を預けるのが不愉快なら、これが最善の解決策です。
Algo VPNをサポート
すべての寄付は継続的な発展を支えています。 ありがとう!