サーバーがインターネット上に配置されているクライアントサーバーアプリケーションを設計したいと思います。 VPNを使用して(IPSecを使用していますか)、またはSSL接続(おそらくhttps)を使用してクライアント/サーバー接続をセットアップできると思います。インターネット経由のクライアントサーバー接続を保護するためのVPN/IPsecとSSL/httpsの違いは何ですか?
VPNは「仮想プライベートネットワーク」を意味します。これは、ハードウェア以外の手段(「仮想」という意味)によって論理的に大規模なネットワークから分離された大規模なネットワーク(インターネット全体など)の一部を指定する一般的な概念です。ケーブルとスイッチ;むしろ、分離は暗号化を使用して実行されます。
SSL(現在はTLSとして知られています)は、双方向のトランスポートメディアを使用してsecured双方向のメディアを提供するテクノロジーです。基盤となるトランスポートメディアは「ほとんど信頼できる」必要があります(攻撃されない場合、データバイトは適切な順序で転送され、損失や繰り返しはありません)。 SSLは、機密性、整合性(アクティブな変更が確実に検出される)、および一部の認証(通常はサーバー認証、両側で証明書を使用している場合は相互のクライアントサーバー認証)を提供します。
したがって、VPNとSSLは同じレベルのものではありません。 VPN 実装は、ある時点で暗号化を必要とします。一部のVPN実装は実際にSSLを使用し、その結果、システムが階層化されます。VPNは、TCPをトランスポートメディアとして使用するSSL接続でシリアル化することにより、(仮想ネットワークの)IPパケットを転送します。これは、IPパケットを介して(物理的に保護されていないネットワーク上で)構築されます。IPsecは、パケットにより深く統合された別のテクノロジーであり、これらのレイヤーの一部を抑制し、そのため少し効率的です(帯域幅オーバーヘッドが少ない)。一方、IPsecはオペレーティングシステムのネットワークコード内で非常に深く管理する必要がありますが、SSLベースのVPNは着信トラフィックと発信トラフィックをハイジャックするための何らかの方法しか必要とせず、残りはユーザーレベルのソフトウェアでダウンさせることができます。
あなたの質問を理解しているように、一部のマシンがインターネット経由で通信しなければならないアプリケーションがあります。セキュリティ要件があり、SSL(TCP over IP))またはHTTPS(HTTP-over-SSL-over-TCP-over-IP)の使用を検討している、またはクライアントとサーバーの間にVPNを設定し、「プレーン」を使用するTCPそのプライベートネットワークで(VPNの要点は、機密性について心配する必要がない安全なネットワークを提供することです) 。SSLでは、接続コードはセキュリティを認識している必要があります。プログラミングの観点からは、SSL接続を「単なるソケット」であるかのように開かないでください。一部のライブラリでは、比較的簡単に接続できますが、アプリケーションレベルでセキュリティを管理します。一方、VPNはオペレーティングシステムレベルで構成されているため、セキュリティはクライアント上のアプリケーションとサーバー上のアプリケーションの間ではなく、クライアントオペレーティングシステムとサーバーオペレーティングシステムの間です。 :これは同じセキュリティモデルではありませんが、多くの場合、違いは関係ないことがわかります。
実際には、VPNは、クライアントのオペレーティングシステムで何らかの構成手順が必要であることを意味します。それはかなり侵襲的です。同じクライアントで2つのVPNベースのアプリケーションを使用すると、問題が発生する可能性があります(セキュリティに関しては、クライアントは2つのVPNをリンクするブリッジとして機能するため、名目上は互いに分離する必要があり、実際にはアドレスの衝突が原因です。スペース)。クライアントが顧客の場合、VPNを適切に構成することは、不可能な作業のように見えます。 ただし、VPNは、アプリケーションがセキュリティを意識する必要がないことを意味します。これにより、アプリケーション内にサードパーティソフトウェアを簡単に統合できるようになります。
どちらも正しく設定されていないと、セキュリティの問題があります。しかし、最初にいくつかの定義から始めましょう:
シスコはVPNを適切に定義しています。
VPNにはいくつかの形式があります。 VPNは、2つのエンドシステム間、または2つ以上のネットワーク間に存在できます。 VPNは、トンネルまたは暗号化を使用して(基本的にプロトコルスタックの任意の層で)、またはその両方を使用して構築できます。あるいは、MPLSまたは「仮想ルーター」方式の1つを使用して構築できます。 VPNは、専用回線、フレームリレー、またはATMによってサービスプロバイダーのネットワークに接続されたネットワークで構成することも、集中型サービスまたは他のダイヤルアップサブスクライバーに接続するダイヤルアップサブスクライバーで構成することもできます。 https://www.Cisco.com/c/en_in/products/security/vpn-endpoint-security-clients/what-is-vpn.html
SSLについて:
SSL(Secure Sockets Layer)はTLS(Transport Layer Security)とも呼ばれ、2つのプログラムが安全な方法で相互に通信できるようにするプロトコルです。 TCP/IPと同様に、SSLを使用すると、プログラムは通信用のエンドポイントである「ソケット」を作成し、それらのソケット間で接続を確立できます。しかし、SSLはTCPの上に構築されており、暗号化の追加機能を追加します。 http://www.boutell.com/newfaq/definitions/ssl.html
質問に関して、主な違いは、SSLはエンドユーザーとサーバーの間でデータを暗号化するためにブラウザーを利用することが多く、データの機密性と整合性の保護を必要とするWebサイトの領域で一般的に使用されることです。
VPN/IPSECには特定のVPNクライアントソフトウェアが必要であり、通常、システムまたはネットワークへのリモートアクセスを提供するためのものです。また、IPSECの代わりにL2TPまたはL2Fを使用するオプションもあります。
ただし、SSL VPNは、Webブラウザーを介してネットワーク/システムへのアクセスを提供する手段として普及しています。このアプローチには、一般的なWebブラウザーを使用して安全な接続を可能にするため、多くの利点があります。このアプローチの粒度は、特定のアプリケーションへのアクセスを制御するための優れた方法でもあります。
セキュリティ問題について-
SSL-
弱いセキュリティサイファーは、エンドユーザーに対して中間者スタイルの攻撃を実行する能力につながり、データの機密性/完全性が失われる可能性があります。
IPSEC-
潜在的なDoS状態の導入。この例は http://www.Cisco.com/en/US/products/products_security_advisory09186a0080b20ee5.shtml です。
システムがIPsecポリシーを無視し、ネットワークトラフィックをクリアテキストで送信する可能性のある2008年のMicrosoftの問題などの機密性の問題。 https://docs.Microsoft.com/en-us/security-updates/securitybulletins/2008/ms08-047
ここでいくつかの非常に良い答え、私はすでに言われたことを繰り返さないでしょう。
しかし、不足していることが1つ見つかりました。特にクライアント証明書の要件がない場合は、SSLをアドホックベースで設定する方がはるかに簡単です。
一方、IPsecは常にクライアント証明書を必要とし(通常の一般的なセットアップを想定)、初期セットアップと配布にも他の問題があります。
そのため、IPsecは通常、制御されたネットワークにより適していますが、野生の未知のインターネットではそうではありません。この他の質問でいくつかの詳細を参照してください: " IPsec(Internet Protocol Security)facts "。
したがって、実際の質問に戻ると、サーバーをインターネットに配置するほとんどすべての場合、ユーザーがVPNを使用して接続することは期待できません。 (もちろん例外があります。)
代わりに、サーバーにSSL証明書をセットアップし、クライアントに向けるだけで十分です(使用する言語/テクノロジー/ライブラリに応じて、証明書を明示的に検証してください)再使用...)
安全なVPNを作成するためにこれらのオプションを検討していますか?自宅の従業員が企業ネットワークに接続している場合など、SSLは一般に導入が容易であり、デスクトップからネットワークへのVPNタイプのサポートが向上しています。ネットワーク間暗号化VPN(2つの異なる組織間など)など、より複雑な展開を行う場合、IPSECはより優れた制御とより多くのカスタマイズオプションを提供します。
ジュニパーネットワークスのトピックについては、まともな ホワイトペーパー がありますが、製品の強みに歪んでいる可能性があります。
まあ、違いは、円形と正方形の違いのようなものです(どちらも形状ですが、大きく異なります)。どちらも安全な通信ですが、レベルや方法が異なります。 IPSECは有線の暗号化と認証であり、SSLはアプリケーション固有です。
IPSECにはアクセス制御がありますが、SSLにはありません。
あなたが理解しようとしていることをより具体的にすることができますか?
これは非常に長い答えになる可能性がありますが、短い答えを試してみます。
Httpsを使用すると、ブラウザ(SSLクライアントとして機能)はWebサーバーへのこの接続のみを暗号化します。
VPNを使用する場合、特別なクライアントが必要であり、クライアントとサーバー間にトンネルを確立します。次に、どのトラフィックがトンネルを通過するかを構成できます。これは、すべてまたは単なるhttpトラフィックです。
Httpと通信できるクライアント/サーバーアプリケーションのみをセットアップする場合、最も簡単な解決策は、暗号化が必要な場合のhttpsトラフィックです。 VPNを設定して維持することは、はるかに複雑です。
これは、脅威モデル、必要なクライアントサーバープロトコルの性質、および顧客によって異なります。
これは、洗練されていないエンドユーザーを対象としていますか?次に、SSLを使用します。この時点で、VPNの複雑さは多くの潜在的なユーザーを無効にするだけです。
クライアントをブラウザーアプリとして展開しますか(javascriptでperahps)?その後、再びhttps/sslを使用する方法のようです。
サーバーはクライアントに何かを非同期的に通知する必要がありますか?その場合、HTTPSはあなたが望むものではないかもしれません(そうすることは可能ですが)。
フィッシングのリスクはどのくらいですか?攻撃者がMITMとして人々を誘うのが簡単である場合、SSLは各サーバーをクライアントに対して認証するため、おそらくより優れています。一般的なVPNは、いったんセットアップされると、VPN上の他のホストに侵入した攻撃者を回避するのに役立ちません。これはおそらく大きなリスクではありませんが、やはりそれはあなたが何をしているのかに依存します。
これをクラウド(クライアントとサーバーの両方)に展開している場合は、非常にカジュアルな脅威に対処できるVPNをほぼ無料で入手できます。
私はセキュリティの専門家とはほど遠いですが、2つの間の最も重要な違いは他の答えにはないと思います。
VPNにより、通信は次のようになります。
HTTP client <-[raw]-> VPN client
<-[encrypted]->
VPN server <-[raw]-> HTTP server
HTTPSを使用すると、次のようになります。
HTTP client
<-[encrypted]->
HTTP server
したがって、VPNを使用すると、保護されていないデータがクライアントのローカルネットワークとサーバーのローカルネットワークを経由して移動する可能性があります。これらのネットワークを完全に信頼しない場合は、HTTPSを使用するのが賢明です。 VPNとHTTPクライアント/クライアント、サーバー/サーバーのペアは、必ずしも同じコンピュータ上にあるとは限らないことに注意してください。ルーターは、VPNサーバーまたはクライアントとして構成できます。
これらのテクノロジーは異なるレベルで機能するため、相互に排他的ではないため、別の保護層が必要な場合と、それに伴うパフォーマンスの低下を気にしない場合のどちらでも使用できます。あなたのニーズによりよく合います。私の知る限り、両方のテクノロジーが適切に構成されていれば、安全であると見なされます。