来源:https://knowm.org/integrate-bro-ids-with-elk-stack/
Bro网络安全监控器是一个开源网络监控框架。简单地说,Bro监视网络上的包流,并从中创建高级“流”事件,并将事件作为单独的标签分隔行存储在日志文件中。然后,您可以解析这些日志文件以便进行数据挖掘,以获取关于您正在监视的网络上的网络流量的信息。解析bro日志文件和可视化所有数据的一个很好的方法是使用ELK套件。ELK的核心是Elasticsearch、Logstash和Kibana。Logstash解析bro日志,Elasticsearch存储解析过的数据,Kibana为数据挖掘和可视化提供了漂亮的GUI。
如果您已经安装了具有可选绑定网络接口的网络tap、已安装的Bro和已安装在系统上的ELK堆栈,那么剩下要做的就是创建和部署Logstash的配置文件,以便告诉log出来应该在哪里查找Bro日志、如何操作它们以及将它们放在哪里(Elastic Search)。
在/r/netsec上的redditor指出CVS过滤器要比grok过滤器高效得多,并将我指向一个git repo(https://github.com/timmolter/logstash-dfir),其中包含一些用于解析Bro日志的logstash conf文件。从那以后,我开始分叉repo并修改文件以更好地满足我的需求,包括修复标签分隔符分隔符、添加geoip过滤器以及修复一些bug。获取conf文件的一种快速方法是从github直接将它们拉到logstash的conf.d目录,如下面的代码块所示。注意,logstash会在启动时加载在conf.d中找到的所有配置文件。
注意,从Logstash 2.x开始,elasticsearch主机配置发生了变化。您将遇到的错误如下:
他修复的只是将配置文件中的host更改为hostsin,我在上面的*.conf文件中更新了配置文件。
一、解释
让我们仔细看看这个文件:https://raw.githubusercontent.com/timmolter/logstash-dfir/master/conf_files/bro/bro-conn_log.conf
https://github.com/timmolter/logstash-dfir/tree/master/conf_files/bro
1、在输入部分,我们需要将所有路径放到系统上实际的Bro日志文件中。
2、在配置文件末尾的输出部分,我们需要将数据推送到Elasticsearch:
elasticsearch { host => localhost }.
3、在主过滤器( filter)部分,为bro日志分配和配置一个csv过滤器。如果你愿意,你可以手工编写csv过滤器。
4、其他的过滤器( filter)部分对数据进行了更多的操作,并在注释部分得到了很好的解释。
5、启动Elasticsearch 2.0时,它不支持带有a.的字段名(或点字符)。由于bro日志包含名称中带有点的字段(id.orig_p),我们需要使用一个过滤器将这些点转换为下划线。如果没有,您可能会看到这样的错误:failed to put mappings on indices [[logstash-2016.05.02]], type [bro-conn_log] MapperParsingException[Field name [id.orig_h] cannot contain '.']。mutate插件用于使用rename命令将包含点的字段名转换为下划线。
二、logstash-filter-translate
上面的logstash配置使用一个名为logstash-filter-translate的插件。下面的终端命令展示了如何安装logstash-filter-translate插件。有关安装logstash插件的更深入解释,请参阅如何版本1.5安装logstash插件。
三、部署
要检查配置是否有效而不启动Logstash,运行以下步骤:
在控制台测试运行:
重新启动Logstash,它将自动获取新配置文件。它可能需要一分钟的时间才能开始抽取数据。
或系统systemd……
四、调试
对于调试,我们可以使用—debug标志启动Logstash,并使用以下命令:
在任何配置文件中,您都可以通过添加stdout{}来更改输出以将数据推送到控制台,而不是通过Elasticsearch。
codec => rubydebug也可以用于调试。格式化的漂亮。
下面是一些控制logstash服务的额外命令:
System V
Systemd
如果Logstash没有启动,请在以下日志中查找任何错误:
看看哪个pid logstash杀死它:
要查看Logstash启动的配置参数,请使用以下命令:
您将得到如下内容:
sincedb_path
sincedb_path需要由logstash的用户编写。一种方法是将sincedb_path设置为/var/tmp,如果系统有这个可写目录。如果您有与sincedb_path相关的错误消息,首先要检查配置路径上的权限。
相关资源
在Ubuntu上安装Bro: http://knowm.org/howtoinstall-bro-net-securi-monitor -on ubuntu/
如何创建绑定的网络接口:http://knowm.org/how to create-a- bonent -network-interface/
如何设置Elastic堆栈——Elasticsearch, Logstash和Kibana: http://knowm.org/how to Set Up the ELK -stack-elasticsearch logstashand Kibana