如何配置日志聚合器以认证数据?


8

背景:远程日志聚合被认为是提高安全性的一种方法。通常,这解决了危害系统的攻击者可以编辑或删除日志以破坏取证分析的风险。我一直在研究通用日志工具中的安全性选项。

但是有些不对劲。我看不到如何配置任何常见的远程记录器(例如rsyslog,syslog-ng,logstash)以验证传入消息确实是来自所声称的主机的。在没有某种策略约束的情况下,一个日志创建者可以代表另一个日志创建者伪造消息。

rsyslog的作者似乎警告要验证日志数据

最后一个警告:transport-tls保护发送方和接收方之间的连接。它不一定能防御消息本身中存在的攻击。特别是在中继环境中,该消息可能源自恶意系统,该恶意系统将无效的主机名和/或其他内容放入其中。如果没有针对此类情况的配置,则这些记录可能会显示在接收者的存储库中。-transport-tls不能防止这种情况的发生(但是如果正确使用它可能会有所帮助)。请记住,syslog-transport-tls提供了逐跳安全性。它不提供端到端的安全性,并且不对消息本身(仅是最后一个发送者)进行身份验证。

因此,后续问题是:什么是可以提供一定程度真实性的良好/实用配置(在您选择的任何常用日志工具中-rsyslog,syslog-ng,logstash等)?

或者...如果没有人对日志数据进行身份验证,那为什么不呢?

-

(此外:在讨论/比较中,使用RFC 5424中的某些图表或术语可能会有所帮助:第4.1节:示例部署方案 -例如,“发起者” vs“中继” vs“收集器”)


您想固定哪一部分?日志汇总是从正确的主机接收数据还是数据本身?
Shane Andrie

从正确的主机接收。如果Alice和Bob都是日志发起者,而Trent是日志收集器,则Alice应该能够为Trent日志提供“ hostname = alice”而不是“ hostname = bob”。但是我认为默认设置旨在假设Alice可以是日志中继,因此他们将允许她提交任何内容。
蒂姆·奥滕

Answers:


1

这是一个很好的问题。

我使用logstash完成类似您所提议的事情。使用logstash(或logstash转发器)将日志发送到中央收集系统,添加logstash配置以向消息添加键字段,其值是每个服务器唯一的长随机字符串。

然后,在接收方,您可以添加一条相应的规则,以丢弃(或发出警报)特定主机的密钥与您期望的主机名不匹配的任何消息。

这不是防弹的,但这是朝正确方向迈出的坚实一步。


3

为此使用的正确方法是带有计算机客户端证书的TLS。

rsyslog自2008年以来一直在这样做,并提供了很好的说明:http : //www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html

这些过程非常简单,因为这些过程如下:

  1. 设置一个CA
  2. 向要从中记录日志的所有计算机颁发证书
  3. 配置rsyslog以使用该身份验证

这样,您的计算机将无法模拟彼此,没有您的证书之一,任何人都无法登录到日志服务器。

我看到您已经发现了,但是您仍然担心他们的警告。我不会为此担心太多。日志注入当然是一回事,但这是很多事情,包括通过应用程序注入和注入日志记录过程。如果有人在您的应用程序软件中进行了日志注入攻击,则经过身份验证的rsyslog不会保护您,但是任何事情都不会或不能;仅修复应用程序可以帮助您。这只会保护您免受欺骗性日志的侵害。

通过不使用中继可以轻松缓解其他警告,但实际上没有理由这样做。如果没有中继,并且在rsyslog服务器中的gtls连接驱动程序中使用了x509 / name选项,则应该没有问题。

另请参阅gtls配置文档:http ://www.rsyslog.com/doc/v8-stable/concepts/ns_gtls.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.