调整问题: SIEM是一个管理系统,它接收系统日志和其他类型的日志消息,并允许管理员以有助于他们更好地了解正在发生的事情的方式搜索,组合和报告日志。我正在使用Splunk并将Syslog(CEF)格式的消息发送到Splunk。当我向splunk发送两条消息时,会出现在此处显示的相同消息中。
< 1286> Sep 16,2014 2:07:38 PM dbrLnxRv CEF:0 | MyCompany | MyApp | 2.0 |恶意| 6 | FileName eicar.cab dname = www.csm-testcenter.org dst = 10.204.64.137 dpt = 8080 prot = HTTP src = 10.204.82.168 spt = 49809 suser ="" xAuthenticatedUser ="" requestMethod = GET requestClientApplication ="" reason = 0-1492-EICARFile.Detection_Test.Web.RTSS request = http://www.csm-testcenter.org/download/archives/cab/eicar.cab AnalysisType ="" ThreatName = EICARFile ThreatReason = 0-1492-EICARFile.Detection_Test.Web.RTSS Category = 128 Direction = inbound Manual = 1 TicketNumber = 0 FileType = unknown FileHash = 654ec5ae29c1718501af794822663da40aec51fc FileSize = 168 Status = completed SessionId = 79421 TransactionId = 5 < 1286> Sep 16,2014 2:07:39 PM dbrLnxRv CEF:0 | MyCompany | MyApp | 2.0 |恶意| 6 | FileName eicar.cab dname = www.csm-testcenter.org dst = 85.214.28.69 dpt = 80 prot = HTTP src = 10.204.64.137 spt = 40378 suser ="" xAuthenticatedUser ="" requestMethod = GET requestClientApplication ="" reason = 0-1492-EICARFile.Detection_Test.Web.RTSS request = http://www.csm-testcenter.org/download/archives/cab/eicar.cab AnalysisType ="" ThreatName = EICARFile ThreatReason = 0-1492-EICARFile.Detection_Test.Web.RTSS Category = 128 Direction = inbound Manual = 1 TicketNumber = 0 FileType = unknown FileHash = 654ec5ae29c1718501af794822663da40aec51fc FileSize = 168 Status = completed SessionId = 79432 TransactionId = 3
我的问题是,如何让它们出现在不同的块中。
目前每条消息之间都有CR / LF(通过使用Wireshark查看TCP事务进行验证)。尝试添加NULL也没有什么区别。
我知道我没有在日期/时间字段中找到MS,这是一个问题吗?
是否有我错过的消息ID会强制Splunk分离消息?
其他想法?
(当通过UDP发送时,每个事件都会出现在它自己的消息中)
还尝试禁用nagle算法。还是一样的问题。
我创建了一个自定义C ++应用程序,用于将SIEM消息从我的数据源发送到Splunk。如果我一次通过套接字发送6条SIEM消息,每条消息由CR / LF分隔(我也尝试在消息之间添加NULL),Splunk将它们放入一个单独的事件中。我应该发送什么来使消息处于独特的事件中?我已经到处查看SIEM协议的规范,并且没有在实际协议上找到二进制基础文档。
答案 0 :(得分:1)
TCP是' stream'协议而不是面向消息。它不保持消息边界。发送的内容不能保证以相同的方式读取。 TCP上面的应用程序可以解释字节和形式的消息'
手上的UDP维护消息边界。一个sendto
的X字节将转换为X字节的recvfrom
。虽然UDP不会保证该消息将到达接收方。
上述原因正是您所见证的。多个send
转换为单recv
,而UDP则转换为相反。
答案 1 :(得分:0)
搞定了
协议使用basic / r / n来终止流,这是我过去尝试过的。真正的诀窍在于Splunk配置。需要创建名为props.conf的配置文件,并包含以下行
SHOULD_LINEMERGE =假
然后一切正常。