セキュリティで保護されていないホットスポットからインターネットを安全に使用できるようにOpenVPNをセットアップするにはどうすればよいですか?


31

目標:ノートブックが開いているホットスポット/アクセスポイントに接続されている間、自宅のPCを介してインターネットを安全に使用できるようにしたい。

私はない私がSSHトンネル/ SOCKSプロキシを使用することができることを知っているが、私は(でも、可能な場合、彼らはそれを使用する)アプリケーションと周りいじる必要はありません。必要なのはOpenVPNセットアップだと思うので、次の方法に関する詳細なガイドを探しています。

  1. OpenVPNサーバーのインストールとセットアップ
  2. OpenVPNクライアント(NetworkManager)をセットアップする

これが動作するUbuntuバージョンは10.10および11.04です。


これは、ubuntuの質問よりも、サーバー障害の質問です。
ルイスアルバラード

1
@Cyrex:1)は2)おそらくそうではない
-Lekensteyn

回答:


40

数か月前に正確な質問がありますが、さらに、可能であればIPv6接続が必要でした。Serverfaultに関する私の質問に興味があるかもしれません:

サーバーに使用するNIC(「ネットワークインターフェイス」)は1つしかありませんでした。私の設定では、IPv6をサポートするためにカスタムスクリプトを実行する必要があるため、NetworkManagerは十分ではありませんでした。ただし、簡単にするために、ここではNetworkManagerを使用し、IPv6サポートを省略します。

まず、認証方法を決定するだけです。SSLのように機能するより安全な証明書方式を使用します。ハンドシェイク中に、セッションに使用される共通のシークレットが選択されます。他のメソッドは共有キーです。ユーザー名とパスワード。

サーバ

1.準備する

まず、openvpnサーバーをインストールします。これはと同じくらい簡単sudo apt-get install openvpnです。難しい部分はそれを設定することです。設定はにあり/etc/openvpnます。

2.認証を構成する

サーバーには、サーバーとクライアントを識別するための証明書が必要です。これらの証明書は、CA(Common Authority)から取得されます。証明書および関連する秘密鍵の作成は、どのマシンでも実行できますが、サーバーで実行する必要はありません。本当に妄想している場合は、ネットワークに接続されていないマシンで実行し、証明書の転送にメモリスティックを使用する必要があります。

サーバーのCAと証明書を作成する

CAの秘密キーが危険にさらされない限り、この手順は1回実行する必要があります。その場合、サーバーによって受け入れられる有効な証明書を作成でき、セキュリティ侵害につながります。

公式ドキュメントはで管理を行うことを示唆しています/etc/openvpn。私はすべてをルートとして実行するのが大ファンではないので、別のディレクトリに配置します。

  1. 次のコマンドを実行して、管理ディレクトリを作成し、その中のファイルをコピーします。

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. vars必要に応じてデフォルトを編集しKEY_SIZE=2048ます。たとえば、あなたは偏執病なので設定します。
  3. 変数をロードし、次を実行してキーディレクトリを作成します。

    . vars
    
  4. エラーが発生したNo ... openssl.cnf file could be found Further invocations will fail場合はln -s openssl-1.0.0.cnf openssl.cnf. varsもう一度実行してください。

  5. このCAを初めて使用する場合は、キー環境を準備します。以前に作成したCAを維持する場合は、このコマンドを実行しないでください。そのためには、新しいをデプロイする必要がありますca.crt

    ./clean-all
    
  6. を実行してCAを作成します./build-ca。必要に応じて詳細を入力できますが、クライアントがサーバーに接続すると、この情報がログファイルに表示されることに注意してください。これにより、ファイルca.keyca.crtサブフォルダが作成されますkeys。キープca.keyファイルを秘密にして、すべての状況で。そうしないと、キーを持っている人はだれでもサーバーに接続できます。
  7. 失われた、または期限切れの以前の証明書がある場合、最初に古い証明書を取り消す必要があります./revoke-full server。そうしないと、データベースエラーが発生します。
  8. 次を実行して、サーバーの証明書を作成します。

    ./build-key-server server
    

    パスワードの入力を求められたら、サーバーを起動するたびにパスワードを入力する必要がない限り、空のままにしてください(推奨されません)。証明書に署名してコミットすることを確認します。2つの新しいファイルがディレクトリに表示されますkeysserver.keyserver.crt

DHおよびtls-authの準備を使用

以下を使用してDiffie-Hellmanパラメーターを生成します。

./build-dh

硬化のヒントごとに、を使用しますtls-auth。そのためには、次を使用して共有秘密鍵を生成します。

openvpn --genkey --secret ta.key

結果のファイル(ta.key)もクライアントに配布する必要がありますが、公開しないでください。

クライアント用の証明書を作成する

クライアントごとに、次の手順を繰り返す必要があります。

  1. CAおよびサーバー証明書を作成したディレクトリを入力します。

    cd ~/openvpn-admin/easy-rsa
    
  2. CAの作成手順が既にあるためスキップした場合は、最初に変数を読み込む必要があります。

    . vars
    
  3. 古い証明書が失われたり期限切れになったために新しい証明書を作成する場合、最初に古い証明書を取り消す必要があります./revoke-full you。そうしないと、データベースエラーが発生します。
  4. クライアント証明書you.keyとそれに対応する証明書を作成しますyou.crt

    ./build-key you
    

    CommonNameユニークでなければなりません。10.10の時点ではまだサポートされていないため、KDEを使用している場合は、パスワードを空のままにします。サーバー証明書の生成と同様に、証明書への署名と変更のコミットを確認します。

3. OpenVPNサービスをセットアップする

デフォルトでは、OpenVPNは接続を受け入れるときにルートとして実行されます。サービスが悪意のあるインターネットから到達可能である場合、良い考えではありません。

  1. OpenVPN専用のユーザーを作成しますopenvpn

    sudo useradd openvpn
    
  2. ファイルがコピーserver.keyserver.crtca.crtおよびdh1024.pem(またはdh2048.pemにキーディレクトリから、あなたは、キーのサイズを変更した場合)/etc/openvpn。400(所有者の読み取り専用)の許可は問題ありません。

    sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. ファイルta.keyもコピーします。

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. ファイル/etc/openvpn/server.confを作成し、次の行を追加します。

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. 適切なアクセス許可を設定します。秘密にする必要はありませんが、構成の詳細を漏らさないようにしています。

    sudo chmod 640 /etc/openvpn/server.conf
    

4.サーバーの仕上げ

サーバーで証明書を作成した場合は、証明書を暗号化するか、サーバーから移動することをお勧めします。いずれの場合も、失うことはありませんca.keyserver.key。最初のケースでは、他の人がサーバーに接続できます。後者では、MITMが可能です。

クライアント

サーバーのIPアドレスに加えて、サーバー管理者は次のファイルを渡す必要があります。

  • ca.crt:証明書の検証用
  • server.crt:サーバーを検証し、それと通信するため
  • ta.key:セキュリティを強化するために
  • you.crt:サーバーで自分自身を識別するため
  • you.key:パスワードのようなもので、ファイルのアクセス許可は400(所有者の読み取り専用)でなければなりません

1.インストール

OpenVPNとNetworkManagerプラグインをインストールします(KDEとGnomeに適しています):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn ユニバースリポジトリにあります。

2.設定

コントロールパネルで、次の詳細を使用します。

  • ゲートウェイ:サーバーのIPアドレス
  • タイプ:「証明書(TLS)」(Gnome)または「X.509証明書」(KDE)
  • CA証明書:へのパス ca.crt
  • ユーザー証明書:へのパス you.crt
  • 秘密鍵:へのパス you.key

で、高度

  • ゲートウェイポート:自動(1194)(変更する必要はありません)
  • LZOデータ圧縮を使用:有効
  • TCP接続を使用:無効
  • TAPデバイスを使用:有効
  • 暗号:デフォルト
  • HMAC認証:デフォルト
  • TLS認証を使用:有効
    キーファイルのパスを指定し、ta.key「キーの方向」をに設定し1ます。
  • todo-チェックアウト)サーバーはデフォルトゲートウェイをプッシュするため、すべてのトラフィックはVPN接続を経由します。前回チェックしたとき、network-manager-openvpnプラグインはそれをしませんでした。

NetworkManagerが機能しない、または使用したくない場合は、ファイル(ca.crt、...)を入れてファイル/etc/openvpnfileを作成し/etc/openvpn/client.confます。

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

起動時にこのVPNを有効にしたくない場合は/etc/default/openvpn、次の行を削除して次の行を編集およびコメント解除します#

#AUTOSTART="none"

この接続を開始するには、次を実行します。

sudo /etc/init.d/openvpn start client

client構成ファイルに名前が付けられていない場合は、名前を変更する必要がありますclient.conf。例:構成ファイルsafe.confに名前を付けた場合、を実行する必要がありますsudo /etc/init.d/openvpn start safe

OpenVPNを停止するには、次を実行する必要があります。

sudo /etc/init.d/openvpn stop

1
ユーザー名/パスワードベースのログインのサーバー構成は何ですか?私のクライアントには、VPNクライアントをセットアップする知識がなく、サーバーIP、ユーザー名、パスワードを使用したいだけです。

@YumYumYumユーザー名/パスワードの使用方法がわかりません。openvpn(man openvpn)のマニュアルページをご覧ください。openvpnの最近のバージョンには、証明書とキーファイルを埋め込む機能があるため、その単一の構成ファイルにユーザーへの指示を提供する方が簡単かもしれません。
-Lekensteyn

Ubuntuの新しいバージョンにはOpenSSL 1.0.1が付属しており、. vars上記のコマンドを実行すると、「openssl.cnfファイルが見つかりませんでした。以降の呼び出しは失敗します」というエラー生成される場合があります。あなたはする必要がありsudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnfその後、実行. varsし、他のコマンド。
ダンダスカレスク14年

@DanDascalescuスクリプトは私のためにファイルを正しくwhichopenssl見つけますopenssl-1.0.0.cnf(easy-rsa 2.3.2、OpenSSL 1.0.1e)
Lekensteyn 14年

非常に有益で徹底的な答え。この質問に答えていただけますか?
JB0x2D1 14

8

実際にアプリケーションをいじる必要はありません。これは「VPNと同じように」機能します。

  1. 最初にtsocksパッケージをインストールします(一時的な靴下):

    sudo apt-get install tsocks
    
  2. 次に、編集/etc/tsocks.confして入力します

    server = 127.0.0.1
    server_port = 3333
    
  3. 次に、ターミナルを開いて入力します(これにより接続されます)。

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. 実行(別の端末またはALT-F2経由):

    tsocks firefox
    

これで、FirefoxはSSHが作成したコンピューター上のSOCKSサーバーにすべての通信を送信します。これはさらに、ホームマシンにトンネリングされ、そこでWebに送信されます。ホームマシンに必要なのは、SSHサーバーだけです。1回目以降は、手順3と4を繰り返します。

それは魅力のように機能します!残念ながら、クロムはtsocksが好きではありませんが、Firefoxは動作します。


3
最後の文をご覧ください-OpenVPNでNetworkManagerアプレットを1回クリックするだけで、tsocksで本当にうまく機能する場合、最初にすべてのプログラムをチェックしたくありません。
-htorque

OK。私の答えは、ウェブサイトにアクセスするための迅速な解決策を望む人々にとっておそらく役に立つでしょう。
-MarkovCh1

1

SSHトンネルソリューションは、思っているより簡単です。gSTMのようなプログラムは、GUIを使用してトンネルを開始/停止します。次に、ネットワークプロキシを開いて、直接インターネット接続から手動プロキシ設定に変更し、「システム全体に適用」を押すと、すべてのアプリがデータをトンネルに送信します。それぞれを個別に操作する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.