このセクションでは、以前のマルチサーバーセキュリティエンジンのインストールでのプレーンテキストHTTP通信によって引き起こされるセキュリティの問題を解決します。この問題を解決するには、暗号化されたチャネルを介してセキュリティエンジン間の通信を確立することをお勧めします。このソリューションにより、サーバー2またはサーバー3は、サーバー1のIDを信頼し、中間の攻撃を回避できます。
自己署名証明書を使用して 最初に証明書を作成する、証明書を作成する必要があります。これは、単一の行コマンドに従うことで実現できます。 現在、セキュリティエンジンは、開始時に秘密鍵のパスワードを要求することはできません。したがって、セキュリティエンジンを起動またはリロードするたびに、秘密キーを手動で復号化するか、誘惑されていないキーを保存することを選択できます。いずれにせよ、パスワードを削除するには、次のコマンドを使用できます。
openssl req -x509 -newkey rsa:4096 -keyout encrypted-key.pem -out cert.pem -days 365 -addext "subjectAltName = IP:172.31.100.242"
openssl rsa -in encrypted-key.pem -out key.pem
を使用するには、生成された証明書を使用するようにセキュリティエンジンを構成する必要があります。以下に示すように、以下の
抜粋の>>>>>>>> optionsは、生成された証明書ファイルに設定されています。
/etc/crowdec/config.yaml
クライアントでは、両方のファイルで構成の変更が発生します。まず、api.server
をtls.cert_file
にtls.key_file
に設定して自己署名証明書を受け入れるように変更します。
api: server: log_level: info listen_uri: 10.0.0.1:8080 profiles_path: /etc/crowdsec/profiles.yaml online_client: # Crowdsec API credentials (to push signals and receive bad tls: cert_file: /etc/crowdsec/ssl/cert.pem key_file: /etc/crowdsec/ssl/key.pem
/etc/crowdec/config.yaml
insecure_skip_verify
注:true
サーバー1がログプロセッサとしても使用されている場合は、このサーバーでこのLAPI構成も実行する必要があることを忘れないでください。
/etc/crowdsec/local_api_credentials.yaml
明らかに、自己署名証明書を使用しても、LAPIサーバーの所有権に関する保証は提供されません。サービスを使用したサーバー(この設定でサーバー2またはサーバー3)は、中間の攻撃に対して依然として脆弱ですが、少なくともこの設定は暗号化された通信を提供します。これが、オプションが必要な理由です。
証明書権限が発行した証明書url: https://10.0.0.1:8080/ login: <login> password: <password></password></login>
またはローカルDNSサーバーに追加できる完全に認定されたドメイン名の証明書を発行することにより、問題を解決できます。その後、この指定された完全に適格なドメイン名をに入力できます。 InsecureSkipVerify
これは機能し、InsecureSkipVerify
オプションが設定されないようにします。 DNS構成が信頼されている限り、これにより、クライアントとサーバー間の通信が改ざんされないことが保証されますが、これはまだ回避策と見なされるべきです。
SSL公開キーインフラストラクチャ(PKI)の構成と管理のプロセスは、このチュートリアルの範囲内ではありませんが、公式OpenSSLドキュメントをチェックすることを強くお勧めします。このセキュリティエンジンのセットアップのニーズを満たすには、簡単なPKIソリューションで十分です。
OpenSSLのドキュメントによると、言及する価値のあるものがいくつかあります。
CrowdSec TLSシナリオで使用するには、CrowdSec LapiサーバーのIPに対応するトピックの代替名で証明書リクエストを発行する必要があります。これは、証明書リクエストのためにOpenSSLを呼び出すときにSAN環境変数を見つけることで実行できます(OpenSSL Simple PKIスキームのステップ3.3を参照)。
openssl req -x509 -newkey rsa:4096 -keyout encrypted-key.pem -out cert.pem -days 365 -addext "subjectAltName = IP:172.31.100.242"
CrowdSecセキュリティエンジンを開始する前に、ルート証明書の共通部分と署名された証明書(OpenSSL Simple PKIスキームのステップ4.5で作成されたバンドルされたファイル)をローカル証明書ストアに追加する必要があります。このセットアップでは、これはLAPIサーバーに接続するために必要です。これを行うには多くの方法があります。Golangソースコードは、予想される証明書の位置を指定するか、SystemDサービスファイルのSSL_CERT_FILE
環境変数を使用して、セキュリティエンジンの開始時に証明書を探す場所を指定できます。
結論
必要に応じて、セキュリティエンジン間の安全なTLS通信を実現するための3つの異なる方法を提案します。自己署名証明書の使用、証明書当局が発行した証明書を使用し、SSL公開キーインフラストラクチャを使用します。
最初のソリューション(自己署名証明書を使用)は、認証なしで暗号化された通信を確保したい状況にのみ適しています。 2番目のソリューションは、ローカルDNS解像度を変更できる場合にのみ考慮することができます。 3番目のソリューションは最も複雑ですが、ほとんどのユースケースに適しており、セキュリティの問題が深刻な場合に最適な選択かもしれません。
このチュートリアルが役立つことを願っています。お読みいただきありがとうございます、お楽しみに!
質問やフィードバックがある場合は、不一致と談話コミュニティプラットフォームからお気軽にお問い合わせください。
以上がHTTPSを使用して、マルチサーバーセキュリティエンジンのインストールを保護しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。