web-dev-qa-db-ja.com

相互通信する複数のWebサーバーには双方向SSLで十分ですか?

Webサーバーの数は決まっています。各Webサーバーは会社を表し、会社のユーザーは割り当てられたWebサーバーと通信します。私は、データベースを分散化するためにこの設定をしています。そのため、1つのWebサーバーがハッキングされた場合、ハッカーが取得するデータはごくわずかです。私のクライアントは、単一のWebサーバー上の1つのデータベースに情報をアップロードすることを望んでいません。 WebサーバーはDjango webframework for pythonを実行します。ユーザーとWebサーバー間の標準の通信プロトコルとして一方向SSLを考えています。これは、最も論理的な選択肢のようです。ユーザーのために会社のウェブサーバーを識別する良い方法。

また、データを交換するためにWebサーバー間の通信も必要です。ここでは、双方向SSLプロトコルについて考えています。 python 3 sslモジュールを1つのWebサーバーから使用してDjangoと別のWebサーバーで通信します。sslモジュールはクライアント証明書を提供します。次にDjangoは他のWebサーバー上のサーバーとして機能し、クライアント証明書を受け取ります。Djangoに次のモジュールを使用して、認証にクライアント証明書を使用します: https://github.com/kimvais/Django-ssl-client-auth

このようにして、相互にWebサーバーを認証する双方向SSL実装を用意しています。

Webサーバーは相互に信頼していないため、VPNは良い解決策ではないと思います。そのため、OpenVPNやIPSecは使いたくありません。

双方向SSLは良い方法ですか、それともIPSecなどの別の方法を使用する必要がありますか?

3
user1872507

これは良い計画のように思えます。考慮すべき点は次のとおりです。

  1. 秘密鍵は秘密である必要があります。それはおそらく、ストアのロックを解除するための何らかのパスワード/キーを持つ安全なストアを意味します。多くの場合、OSまたはフレームワークのサポートが最も簡単です。 HSMはより安全な代替手段になりますが、状況によってはやり過ぎになると思います。
  2. 1つのサーバーが別のサーバーと通信しているときに、認証を提供する必要があります。リモートサーバー用の特別なユーザーアカウントを持つことは、しばしば意味があります(そして、ライブラリがサポートするもののように見えます)。
  3. ファイアウォールやその他の認証ルールを追加して、クロスサーバー通信のIPを制限すると、セキュリティを強化できます。

順調に進んでいるようですね。

1
Neil Smithline