使用相同的IP标记/修改来自不同来源的syslog-ng消息

问候。 首先,感谢您花时间阅读这个问题; 我可怜的英语道歉。 我真的关于syslog-ng,但我做了这个工作,并阅读syslog-ng-ose-admin-guide.pdf,我仍然无法解决我的问题。

这是我的场景:我在一家为客户提供云安全服务的公司工作。 具有使用VMWare ESXi 6.5的虚拟机(VM)的设备作为我们的服务的一部分安装在客户端,如下所述:

VMs offering security services with syslog-ng client configuration. Splunk Forwarder (UF) VM with syslog-ng server configuration. VMs running Ubuntu 16.04.02 and syslog-ng version is 3.5 

在我们的云端,我们运行Splunk Enterprise来收集/关联/分析日志。

在此设备中,所有VM均使用静态不可路由的IP(172.16.XX)进行configuration,并且具有syslog-ng客户端的VM将所选日志转发到syslog-ng服务器。 UF将这些收集的日志转发给SE。 所有客户都拥有这种configuration。

该设备以每台虚拟机具有的configuration方式进行configuration。 所以,举个例子, 如果VM1具有IP 172.16.1.1,VM2 172.16.1.2,则在客户端cust1中,cust2和cust3 VM1具有相同的IP 172.16.1.1等等。

所以,这是我们的问题:当SE通过UF接收来自VM的日志时,我们无法确定谁是数据拥有者,因为VM在所有客户端拥有相同的IP,所以当我们检查Splunk询问172.16.1.1的数据时,知道结果来自cust1,cust2还是cust3。 事实上,我们相信,结果是一团糟的cust1,cust2和cust3日志。 此外,VM在客户端进行一些检查,因此可以find例如在VM1日志和VM2日志中具有IP 10.10.1.1的PC的条目; 所以如果syslog-ng客户端发送这个日志到syslog-ng服务器,我们怎么知道一个条目是属于VM1日志还是VM2日志呢?

阅读提到的PDF,我发现我们可以用标记来修改syslog-ng消息。 因此,通过正确识别日志的客户,我们认为我们可以修改消息并添加唯一的客户ID,因此客户的日志可以在SE中进行咨询和关联而不会混淆。

但我不知道syslog-ng中的哪些命令/选项/function,我应该使用它来标记客户的日志,如前所述。

所以,这是我的问题:标记一个真正的解决我的问题? 如果是这样,我应该如何在syslog-ngconfiguration中使用标记? 你能提供一些例子吗? 有其他方法可以解决我的问题吗?

请,我真的N00B关于syslog-ng和任何帮助将不胜感激,即使你考虑基本的支持,指导,build议或答案。 我真的打开了syslog-ng 101的答案。

请让我注意,如果你需要进一步解释我的问题,我希望我已经足够描述了。

非常感谢,并致以最诚挚的问候,

拉斐尔

这里有几个关于这个问题的笔记和想法:

  • 标记可以是一个很好的解决scheme。 但是,默认情况下,syslog-ng不会将标记从syslog-ng客户端转发到syslog-ng服务器。 如果在客户端添加标签,则必须在转发的消息中明确包含标签,并在服务器上提取标签的值。 如何做到这一点取决于你使用的协议和消息格式。 如果使用network()驱动程序,则必须使用包含消息中标记的模板,并在服务器上以某种方式parsing它。 更好的方法是使用syslog()驱动程序,并在消息的SDATA部分包含标记(可以在此博客文章中find此示例: https ://czanik.blogs.balabit.com/2015/03/ 使用-rfc5424-syslog-to-forward-file-names / )。 还有一种方法是以JSON格式发送消息。
  • 如果使用TLS来encryptionsyslog-ng客户端和服务器之间的通信,则较新的syslog-ng版本可以使用来自客户端证书的信息作为macros。 因此,如果您的客户端主机拥有唯一的证书,您可以使用此信息来识别它们: https : //www.balabit.com/sites/default/files/documents/syslog-ng-ose-latest-guides/en/syslog- NG-OSE-引导pipe理员/ HTML /参考macros.html#macrosTLS-X509
  • 另外,如果你的客户端有独特的主机名(即使他们的IP地址不是唯一的),根据你的环境,检查他们消息中的主机名相关的macros($ HOST_FROM,$ FULLHOST_FROM),它们可能包含你需要的信息。
  • 如果您可以在您的syslog-ng服务器上以某种方式分隔您的客户(例如,每个客户站点将消息发送到服务器的单独端口或IP地址),以便您可以将服务器上的单独源分配给每个客户端,那么您可以使用源驱动程序的host-override()选项为消息分配唯一的主机名。

让我们知道如果上述是对你有帮助,或者如果你需要进一步的帮助。