来源:https://github.com/defenxor/dsiem
该图显示了logstash如何在事件流中扮演中心角色。因此,在深入研究之前先了解它是如何工作的是很重要的。要理解的基本内容是:
Logstash处理管道的发展从输入⟶过滤器⟶输出。更多的细节可以在Logstash文档中找到它是如何工作的。
Logstash按字母顺序读取配置文件。示例配置文件使用这个事实来构造适当的管道。
一、处理初始事件
首先,Syslog/Filebeat接收日志,并将其(图中的“传入事件”)发送到具有唯一标识符的Logstash。在示例配置文件中,Filebeat将字段{application: suricata}添加到事件中。
Logstash通过00_input.conf接收事件,并根据文件50_suricata.conf中的' [application] == suricata '字段将其其他事件分开处理。
之后,仍然基于相同的惟一标识符,然后由70_siem-plugin-suricata-conf处理事件,之后是99_output.conf。
' 70_siem-plugin-suricata-conf '克隆事件,并从克隆中删除' [application] == suricata '标识符,这样它就不会被' 99_output.conf '处理。
' 99_output.conf '反过来处理原始事件并将其发送到Elasticsearch(图中的' Parsed Logs '),以存储在特定于设备的索引中,在本例中为' suricata-* '。至此,初始事件的处理流程已经完成。
二、处理克隆⟶规范化处理事件
对于克隆事件,“70_siem-plugin-suricata.conf”将其转换为“规范化事件”。这是一种标准化格式,拥有一组由所有传入事件(如源IP、目标IP、标题等)共享的公共字段。这里显示了“规范化事件”的完整字段列表。
除了将克隆的事件转换为规范化的事件格式外,“70_siem-plugin-suricata.conf”还添加了字段“[@metadata][siem_data_type]”=>“normalizedEvent”’来成为新的事件标识符。
然后,根据新的标识符80_siem.conf提取克隆的事件。在这里,克隆事件的一个副本被发送到Elasticsearch,以在' siem_events-* '索引中查找最终存储,另一个副本被发送到Dsiem,以进行事件关联。此时,克隆事件的处理流程已经完成。
三、生成警报
Dsiem根据其配置的指令规则对所有传入的“规范化事件”执行事件关联。如果指令规则条件在给定的时间内满足了一系列传入事件,Dsiem将生成“警报”。有关如何生成警报的详细信息,请参阅指令和警报文档。
Dsiem将生成的“警报”及其后续更新存储在一个日志文件中,然后由本地Filebeat获取该日志文件。除了警报本身之外,Dsiem还存储“Alarm_events”记录,这些记录将每个警报链接到触发警报创建的“规范化事件”。就像“Alarm”一样,这些记录也由本地Filebeat实例获取。
四、处理警报
Dsiem的Filebeat将‘Alarm’和‘Alarm_events’记录发送回Logstash。Filebeat添加了额外的字段' {application: siem, siem_data_type: alarm} '和' {application: siem, siem_data_type: alarm_events} '来惟一地标识它们(在这里和这里显示)。
收到这些配置文件后,Logstash配置文件80_siem-conf然后执行小的清理和格式化,然后将它们发送到最终的存储目的地,即elasticsearch索引' siem_alarm_events-* '和' siem_alarm '。
五、影响
为实际应用,上述处理流程意味着应遵循以下指导:
所有SIEM插件(即“dpluger”工具的输出)的文件名都应该以小于80的数字开头,例如“70_siem-plugin-suricata.conf”。这是为了确保在' 80_simon .conf '之前读取它们。
所有日志源过滤器必须放在一个文件中,该文件的名称以小于所有SIEM插件名称的数字开头。例如,如果SIEM插件的名称以70_开头,那么日志源过滤器应该以60_或50_开头(如上面例子中的' 50_suricata.conf ')。这确保了它们都将在SIEM插件预期克隆它们的结果之前被读取。
网友评论