SIEM通过TCP流式传输,将多条消息输入一个事件中

SIEM streaming over TCP, getting multiple messages put into one event

本文关键字:输入 事件 一个 消息 TCP 通过 传输 SIEM      更新时间:2023-10-16

调整问题:SIEM是一种管理系统和其他类型的日志消息的管理系统,并允许管理员以帮助他们更好地了解正在发生的事情的方式进行搜索,组合和报告日志。我正在与Splunk合作,并向Splunk发送Syslog(CEF)格式的消息。当我向Splunk发送两条消息时,这些消息出现在与此处相同的消息中。

< 1286> 2014年9月16日2:07:38 pm dbrlnxrv cef:0 | mycompany | mycpany | myapp | myapp | 2.0 |恶意| 6 | fileName eicar.cab dname = www.csm-testcenter.org dnamedpt = 8080 prot = http src = 10.204.82.168 spt = 49809 suser =" xauthentIcatiCatedUser =" requestMethod = get requestClientApplication ="原因= 0-1492-EICARFIE.DETECTION.DETECTION.DETECTION_WEB.WEB.RTSSS.WEB.RTTSSS request request request = HTTP://////////wwwww。csm-testcenter.org/download/archives/cab/eicar.cab allatySistype =" thrantname = eicarfile = eicarfile threeAtreason = 0-1492-eicarfile.detection.detection_test.test.web.rtss cantory = 128 DirectFileHash = 654EC5AE29C1718501AF7948226663DA40AEC51FC FILESIZE = 168 Status =已完成sessionID = 79421 TransAction = 5 < 1286> 2014年9月16日下午2:07:39 DBRLNXRV CEF:0 | MyCompany | MyApp | MyApp | MyApp | MyApp | MyApp | MyApp | MyApp | 6 | FileName Eicar.cab dname = www.csm-testcenter.org dst = 85.214.28.28.69 dpt = 85.214.28.28.69 dpt = 85.214.28.69 dstprot = http src = 10.204.64.137 spt = 40378 suser =" xauthentIcateDuser =" requestMethod = get requestClientApplication ="原因= 0-1492-EICARFILE.DETECTION_DETECTION_WEB.WEB.RTSSSSSSSS request request = httpp =.org/download/cab/cab/eicar.cab allyySistype =" theatname = eicarfile thereateason = 0-1492-eicarfile.detection.detection_test.test.web.rts category = 128方向AEC51FCfilesize = 168状态=已完成的sessionid = 79432 TransActionID = 3

我的问题是,如何使它们出现在单独的块中。当前每个消息之间都有CR/LF(通过使用Wireshark查看TCP事务来验证)。也尝试添加无效,没有改变。我知道我在日期/时间字段中不依靠MS,这是一个问题吗?我是否缺少消息ID,这会迫使Splunk将消息分开?其他想法?
(通过UDP发送时,每个事件都会出现在其自己的消息中)还尝试禁用纳格尔算法。而且仍然同样的问题。


我创建了一个自定义的C 应用程序,将SIEM消息从我的数据源发送到Splunk。如果我一次通过插座发送6个SIEM消息,每条消息都被CR/LF分开(我还尝试在消息之间添加空),则Splunk将它们放入一个事件中。我应该发送什么以使消息进入独特的事件?我到处查找有关SIEM协议的规格,并且在实际协议上没有找到和二进制基础文档。

TCP是'流'协议,而不是面向消息。它不能保持消息边界。不能保证以相同方式读取的内容。它是在TCP上方的应用程序中解释字节并形式"消息"

的应用程序。

手工上的UDP保持消息边界。X字节的一个sendto将转化为X字节的recvfrom。尽管UDP不会使消息传到接收器。

上述原因是您目睹的。多个send s转化为单个recv,在UDP中相反。

使它起作用

该协议使用基本/r/n终止我过去尝试过的流。真正的技巧在于Splunk配置。一个人需要创建一个名为props.conf的配置文件,并包括以下行

应该_linemerge = false

然后一切正常。