OpenVPNは、2つのポイント間に暗号化されたトンネルを作成し、サードパーティがネットワークトラフィックにアクセスするのを防ぎます。仮想プライベートネットワーク(VPN)サーバーを設定することにより、独自のVPNプロバイダーになります。多くの人気のあるVPNサービスはすでにOpenVPNを使用していますが、完全に制御できるのに、なぜ接続を特定のプロバイダーに結び付けるのですか?
このシリーズの最初の記事では、OpenVPNサーバーとして機能するようにLinuxPCをセットアップおよび構成する方法を示しました。また、外部ネットワークからVPNサーバーにアクセスできるようにルーターを構成する方法についても説明しました。
この2番目の記事では、OpenVPNwikiからカスタマイズされた手順を使用してOpenVPNサーバーソフトウェアをインストールする方法を示します。
まず、OpenVPNとeasy-rsa
をインストールします パッケージマネージャーを使用したアプリケーション(サーバーでの認証のセットアップに役立ちます)。この例ではFedoraLinuxを使用しています。別のものを選択した場合は、ディストリビューションに適切なコマンドを使用してください:
$ sudo dnf install openvpn easy-rsa
これにより、いくつかの空のディレクトリが作成されます:
-
/etc/openvpn
-
/etc/openvpn/client
-
/etc/openvpn/server
インストール中にこれらが作成されない場合は、手動で作成してください。
OpenVPNはeasy-rsa
に依存しています スクリプトであり、それらの独自のコピーが必要です。 easy-rsa
をコピーします スクリプトとファイル:
$ sudo mkdir /etc/openvpn/easy-rsa
$ sudo cp -rai /usr/share/easy-rsa/3/* \
/etc/openvpn/easy-rsa/
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
認証は重要であり、OpenVPNはそれを非常に真剣に受け止めています。理論では、アリスがボブの社内の個人情報にアクセスする必要がある場合、ボブがアリスが本当にアリスであることを確認することが重要です。同様に、アリスはボブが本当にボブであることを確認する必要があります。これを相互認証と呼びます。
今日のベストプラクティスでは、考えられる3つの要因のうち2つから属性をチェックします。
- あなたが持っているもの
- あなたが知っていること
- あなたが何か
選択肢はたくさんあります。このOpenVPNセットアップは以下を使用します:
- 証明書: クライアントとサーバーの両方が持っているもの
- 証明書のパスワード: 人々が知っていること
アリスとボブは相互に認証するために助けが必要です。どちらもCathyを信頼しているため、Cathyは認証局と呼ばれる役割を果たします。 (CA)。キャシーは、アリスとボブの両方が彼らが主張する人物であることを証明します。アリスとボブはどちらもキャシーを信頼しているので、今ではお互いも信頼しています。
しかし、アリスとボブが本当にアリスとボブであることをキャシーに納得させるものは何ですか?コミュニティでのキャシーの評判は、これを正しく行うことにかかっているため、ダニエル、エヴァン、フィオナ、グレッグなどにも彼女を信頼してもらいたい場合は、アリスとボブの主張を厳密にテストします。アリスとボブがキャシーに彼らが本当にアリスとボブであることを納得させた後、キャシーは彼らがお互いにそして世界と共有するための証明書に署名します。
アリスとボブは、キャシーになりすましている人ではなく、キャシーが証明書に署名したことをどのように知っていますか?彼らは公開鍵暗号と呼ばれる技術を使用しています:
- あるキーで暗号化し、別のキーで復号化する暗号化アルゴリズムを見つけます。
- 1つのキーをプライベートとして宣言し、もう1つのキーをパブリックと共有します。
- キャシーは公開鍵と署名のクリアテキストコピーを世界と共有します。
- キャシーは自分の署名を秘密鍵で暗号化します。誰でも彼女の公開鍵で解読できます。
- キャシーの復号化された署名がクリアテキストのコピーと一致する場合、アリスとボブはキャシーが実際に署名したことを信頼できます。
オンラインで商品やサービスを購入するたびに、これと同じテクノロジーを使用します。
OpenVPNのドキュメントでは、別のシステムにCAを設定するか、OpenVPNサーバーに少なくとも別のディレクトリを設定することを提案しています。ドキュメントでは、サーバーとクライアントからサーバーとクライアントの証明書を生成することも提案されています。これは簡単なセットアップであるため、OpenVPNサーバーを独自のCAとして使用し、サーバー上の指定されたディレクトリに証明書とキーを配置できます。
サーバーから証明書を生成し、クライアントセットアップの一部として各クライアントにコピーします。
この実装では、自己署名証明書を使用します。これは、サーバーがそれ自体を信頼し、クライアントがサーバーを信頼するために機能します。したがって、サーバーは証明書に署名するのに最適なCAです。
OpenVPNサーバーから、CAをセットアップします:
$ sudo mkdir /etc/openvpn/ca
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa build-ca
覚えやすいが推測しにくいパスフレーズを使用してください。
サーバーキーペアと証明書リクエストを設定します:
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-req OVPNserver2020 nopass
この例では、OVPNServer2020
このシリーズの最初の記事でOpenVPNサーバーに割り当てたホスト名です。
次に、サーバー要求をCAに送信し、サーバー証明書を生成して署名する必要があります。
この手順では、基本的にリクエストファイルを/etc/openvpn/server/pki/reqs/OVPNserver2020.req
からコピーします。 /etc/openvpn/ca/pki/reqs/OVPNserver2020.req
へ レビューと署名の準備をするには:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
import-req /etc/openvpn/server/pki/reqs/OVPNserver2020.req OVPNserver2020
リクエストを生成したので、証明書を確認して署名する必要があります:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
show-req OVPNserver2020
サーバーとして署名する:
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
sign-req server OVPNserver2020
サーバーとCA証明書のコピーを、それらが属する場所に配置して、構成ファイルに取得します。
$ sudo cp /etc/openvpn/ca/pki/issued/OVPNserver2020.crt \
/etc/openvpn/server/pki/
$ sudo cp /etc/openvpn/ca/pki/ca.crt \
/etc/openvpn/server/pki/
次に、クライアントとサーバーがセッションキーを交換できるように、Diffie-Hellmanパラメーターを生成します。
$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-dh
このシリーズの次の記事では、構築したばかりのOpenVPNサーバーを構成して起動する方法を示します。
この記事はD.GregScottのブログに基づいており、許可を得て再利用されています。