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

我目前正在为我的系统设置使用graylog的日志logging,并且有一个问题,即日志可能包含敏感信息。 标准的行为是通过UDP发送未encryption的日志,以防止应用程序阻塞。 在保持UDP连接的同时有什么办法来保护它吗? 如果graylog不是正确的工具,我会很乐意切换到提供此function的那个。 你有什么经验,如果我想维护我的应用程序的安全性,而不想引入通过httpslogin的延迟,我应该如何实现日志logging?

有许多选项,可以分层结合,以获得更好的隐私:

  • configurationnetworkinglogging器使用encryption…如果greylog不支持这一点,这将意味着使用别的东西。 例如rsyslog支持使用TLS进行encryption 。
  • 通过诸如openvpn之类的VPN来隧道传输,比如使用静态密钥来build立
  • 通过一个SSH 本地端口隧道向前

不应该认为encryption是完美的。 如果你不是太偏执,只是上面的其中一个就足够了。 如果你是偏执的,那么尽可能将它们一起使用。 如果真的对于非常敏感的数据非常偏执,最好不要通过networking发送。

我完全同意彼得的回答,但扩大一点,我提出了一个更多的问题:你处理纯系统日志消息,或者你的应用程序已经发送结构化消息在GELF?

对于普通的系统日志,经过validation的可靠的设置是使用rsyslog或syslog-ng的中央日志服务器(既实现TLS传输,使用默认情况下使用的任何软件,也可以使用更好的configuration语法)。 让他们在本地收集所有系统日志消息,并通过TLS转发到您的中央日志服务器(可能与您的Graylog2服务器相同)。 让日志服务器上的实例接收所有消息,可select将其归档到磁盘(或者如果它们包含敏感信息,则决定避免这种风险),最后将它们转发到您的Graylog2实例。

对于结构化的消息,设置并不容易。 我不确定是否有可靠的GELF / TCP支持。 如果有的话,你可以通过ssh隧道或stunnel TLS连接来保护TCP传输。 否则,你只剩下一些难以通信的UDP,所以你可能需要设置一个VPN(使用openvpn)来保护日志传输。