数か月前に正確な質問がありますが、さらに、可能であれば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
。私はすべてをルートとして実行するのが大ファンではないので、別のディレクトリに配置します。
次のコマンドを実行して、管理ディレクトリを作成し、その中のファイルをコピーします。
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa
vars
必要に応じてデフォルトを編集しKEY_SIZE=2048
ます。たとえば、あなたは偏執病なので設定します。
変数をロードし、次を実行してキーディレクトリを作成します。
. vars
エラーが発生したNo ... openssl.cnf file could be found
Further invocations will fail
場合はln -s openssl-1.0.0.cnf openssl.cnf
、. vars
もう一度実行してください。
このCAを初めて使用する場合は、キー環境を準備します。以前に作成したCAを維持する場合は、このコマンドを実行しないでください。そのためには、新しいをデプロイする必要がありますca.crt
。
./clean-all
- を実行してCAを作成します
./build-ca
。必要に応じて詳細を入力できますが、クライアントがサーバーに接続すると、この情報がログファイルに表示されることに注意してください。これにより、ファイルca.key
とca.crt
サブフォルダが作成されますkeys
。キープca.key
ファイルを秘密にして、すべての状況で。そうしないと、キーを持っている人はだれでもサーバーに接続できます。
- 失われた、または期限切れの以前の証明書がある場合、最初に古い証明書を取り消す必要があります
./revoke-full server
。そうしないと、データベースエラーが発生します。
次を実行して、サーバーの証明書を作成します。
./build-key-server server
パスワードの入力を求められたら、サーバーを起動するたびにパスワードを入力する必要がない限り、空のままにしてください(推奨されません)。証明書に署名してコミットすることを確認します。2つの新しいファイルがディレクトリに表示されますkeys
:server.key
とserver.crt
。
DHおよびtls-authの準備を使用
以下を使用してDiffie-Hellmanパラメーターを生成します。
./build-dh
硬化のヒントごとに、を使用しますtls-auth
。そのためには、次を使用して共有秘密鍵を生成します。
openvpn --genkey --secret ta.key
結果のファイル(ta.key
)もクライアントに配布する必要がありますが、公開しないでください。
クライアント用の証明書を作成する
クライアントごとに、次の手順を繰り返す必要があります。
CAおよびサーバー証明書を作成したディレクトリを入力します。
cd ~/openvpn-admin/easy-rsa
CAの作成手順が既にあるためスキップした場合は、最初に変数を読み込む必要があります。
. vars
- 古い証明書が失われたり期限切れになったために新しい証明書を作成する場合、最初に古い証明書を取り消す必要があります
./revoke-full you
。そうしないと、データベースエラーが発生します。
クライアント証明書you.key
とそれに対応する証明書を作成しますyou.crt
。
./build-key you
CommonName
ユニークでなければなりません。10.10の時点ではまだサポートされていないため、KDEを使用している場合は、パスワードを空のままにします。サーバー証明書の生成と同様に、証明書への署名と変更のコミットを確認します。
3. OpenVPNサービスをセットアップする
デフォルトでは、OpenVPNは接続を受け入れるときにルートとして実行されます。サービスが悪意のあるインターネットから到達可能である場合、良い考えではありません。
OpenVPN専用のユーザーを作成しますopenvpn
:
sudo useradd openvpn
ファイルがコピーserver.key
、server.crt
、ca.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}
ファイルta.key
もコピーします。
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
ファイル/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
適切なアクセス許可を設定します。秘密にする必要はありませんが、構成の詳細を漏らさないようにしています。
sudo chmod 640 /etc/openvpn/server.conf
4.サーバーの仕上げ
サーバーで証明書を作成した場合は、証明書を暗号化するか、サーバーから移動することをお勧めします。いずれの場合も、失うことはありませんca.key
とserver.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/openvpn
fileを作成し/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