背景 :远程日志聚合被认为是一种提高安全性的方法。 通常,这可以解决危害系统的攻击者可以编辑或删除日志以阻止取证分析的风险。 我一直在研究常见的日志工具中的安全选项。
但有些事情感觉不对 我看不到如何configuration任何常用的远程logging器(例如rsyslog,syslog-ng,logstash)来validation传入的消息是否真正来自声称的主机。 如果没有某种政策约束,一个日志发起者可以代表另一个日志发起者伪造消息。
rsyslog的作者似乎警告有关validation日志数据 :
最后要注意的是:transport-tls保护发送者和接收者之间的连接。 它不一定能保护消息本身的攻击。 特别是在中继环境中,该消息可能来自恶意系统,该恶意系统将无效的主机名和/或其他内容放入其中。 如果没有提供这些logging,这些logging可能会显示在接收者的存储库中。 -transport-tls不能防止这种情况发生(但它可能有帮助,正确使用)。 请记住,syslog-transport-tls提供了逐跳安全性。 它不提供端到端的安全性,也不authentication消息本身(只是最后一个发送者)。
所以后续的问题是:什么是一个好的/实用的configuration(在你select的任何常见的日志工具 – rsyslog,syslog-ng,logstash等),它提供了一定的真实性?
或者…如果没有人authentication日志数据,那为什么不呢?
–
(另外:在讨论/比较时,可能会使用RFC 5424中的一些图或术语:第4.1节:示例部署scheme – 例如“发起者”vs“中继”与“收集器”)
这是一个很好的问题。
我使用logstash来完成你所提议的事情。 使用logstash(或logstash-forwarder)将日志发送到中央收集系统,添加一个logstashconfiguration向邮件中添加一个键字段,其值是一个对每个服务器唯一的长随机string。
然后在接收端,您可以添加一个相应的规则来放弃(或提醒)特定主机的密钥与您期望的主机名不匹配的任何消息。
这不是防弹的,但是朝着正确的方向迈出了坚实的一步。
TLS使用机器客户端证书是正确的。
rsyslog是从2008年开始的,并且有很好的说明: http : //www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
这个过程非常简单,就像这样:
然后,您的计算机不能模拟对方,没有人可以login到您的日志服务器没有你的证书之一。
我看到你已经发现了,但你仍然担心他们的警告。 我不会太担心这个。 日志注入当然是一件事情,但它是很多东西,包括通过应用程序注入和注入日志过程。 如果有人在您的应用程序软件中发生日志注入攻击,那么经过身份validation的rsyslog不会保护您,但是没有任何事情可以或不可以; 只有修复应用程序可以帮助。 这只会保护你免受欺骗日志。
其他的注意事项可以通过不使用继电器轻易地减轻,反正这些继电器真的没什么理由。 如果你没有relay,而你在rsyslog服务器的gtls连接驱动程序中使用x509 / name选项,你应该没有问题。
请参阅gtlsconfiguration文档: http ://www.rsyslog.com/doc/v8-stable/concepts/ns_gtls.html