web-dev-qa-db-ja.com

アプリケーションからログを安全に送信する方法は?

現在、システムのグレイログを使用してログを設定していますが、ログに機密情報が含まれている可能性があるという問題があります。標準的な動作は、アプリケーションがブロックされないように、UDPを介して暗号化されていないログを送信することです。 UDP接続を維持しながらそれを保護する方法はありますか?グレイログが適切なツールではない場合は、この機能を提供するツールに切り替えさせていただきます。アプリケーションのセキュリティを維持し、httpsを介したロギングに伴う遅延を導入したくない場合、どのようにロギングを実装する必要がありますか?

1
mryvlin

プライバシーを向上させるために一緒に階層化できる多くのオプションがあります。

  • 暗号化を使用するようにネットワークロガーを構成します... greylogがこれをサポートしていない場合は、別のものを使用することを意味します。たとえば、rsyslogは TLSによる暗号化 をサポートします。
  • 静的キー などのopenvpnなどのVPNを介してトンネリングします。これは設定が簡単です。
  • sshを介してトンネリング ローカルポートフォワード

暗号化が完全であると想定されるべきではありません。あなたがあまり妄想的でないなら、上記の1つだけで十分かもしれません。あなたが妄想的であるならば、可能であればそれらをすべて一緒に使用してください。そして、非常に機密性の高いデータについて本当に妄想的である場合は、それをネットワーク経由で送信しないことが最善です。

5
Peter

Peterの答えには完全に同意しますが、少し拡張するために、もう1つ質問をします。プレーンなsyslogメッセージを処理しますか、それともアプリケーションはすでにGELFで構造化メッセージを送信しますか?

プレーンsyslogの場合、実績のある信頼性の高いセットアップは、rsyslogまたはsyslog-ngを使用する中央ログサーバーです(どちらもTLSトランスポートを実装し、ディストリビューションがデフォルトで使用するものを使用するか、より適切な構成構文を使用します)。すべてのsyslogメッセージをローカルで収集し、TLSを介して中央のログサーバーに転送するようにします(Graylog2サーバーと同じ場合があります)。ログサーバー上のインスタンスにすべてのメッセージを受信させ、オプションでそれらをディスクにアーカイブし(または、機密情報が含まれている場合はそのリスクを回避することを決定し)、最後にメッセージをGraylog2インスタンスに転送します。

構造化メッセージの場合、セットアップはそれほど簡単ではありません。信頼できるGELF/TCPサポートがあるかどうかはわかりません。ある場合は、sshトンネルまたはstunnel TLS接続を使用してTCPトランスポートを保護できます。そうでない場合は、トンネリングがやや難しいUDPが残るため、セットアップが必要になる場合があります。ログトランスポートを保護するためのVPN(openvpnを使用)。

1
mschuett