如何安全地从您的应用程序发送日志?

如何安全地从您的应用程序发送日志?

我目前正在为我的系统设置使用 graylog 的日志记录,但遇到了一个问题,即日志可能包含敏感信息。标准行为是通过 UDP 发送未加密的日志,以防止应用程序阻塞。有没有办法在保持 UDP 连接的同时保护它?如果 graylog 不是合适的工具,我很乐意切换到提供此功能的工具。您的经验是什么,如果我想维护应用程序的安全性并且不想引入通过 https 进行日志记录的延迟,我应该如何实现日志记录?

答案1

有很多选项,可以将它们组合在一起以获得更好的隐私:

  • 配置网络记录器以使用加密...如果 greylog 不支持此功能,则意味着使用其他方法。例如 rsyslog 支持使用 TLS 加密
  • 通过 VPN(例如 openvpn)进行隧道传输,例如使用静态密钥设置起来很简单
  • 通过 ssh 隧道本地端口转发

任何加密都不能被认为是完美的。如果你不是太过偏执,上述方法之一就足够了。如果你很偏执,那么如果可能的话,最好将它们全部一起使用。如果你真的对非常敏感的数据很偏执,最好根本不要通过网络发送它。

答案2

我完全同意彼得的回答,但为了稍微扩展一下,我再提出一个问题:您是否处理普通的系统日志消息,或者您的应用程序是否已经在 GELF 中发送结构化消息?

对于普通系统日志,经过验证的可靠设置是使用 rsyslog 或 syslog-ng 的中央日志服务器(两者都实现 TLS 传输,使用您的发行版默认使用的任何内容或具有更好配置语法的内容)。让它们在本地收集所有系统日志消息并通过 TLS 转发到您的中央日志服务器(可能与您的 Graylog2 服务器相同)。让日志服务器上的实例接收所有消息,可选择将它们存档到磁盘(或者如果它们包含敏感信息则决定避免该风险),最后将它们转发到您的 Graylog2 实例。

对于结构化消息,设置并不那么简单。我不确定是否有可靠的 GELF/TCP 支持。如果有,那么您可以使用 ssh 隧道或 stunnel TLS 连接来保护 TCP 传输。否则,您只能使用 UDP,因为 UDP 的隧道传输稍微困难一些,因此您可能必须设置 VPN(使用 openvpn)来保护日志传输。

相关内容