我试图从Snort的IDS警报发送到Elasticsearch,所以我使用3种技术:
我filebeat配置文件中有这样的代码:
input {
beats {
port => 5044
}
} {过滤
if [type] == "snort" {
# parse the message into individual fields
grok {
match => { "message" => "(?<ts>.*\d{2}:\d{2}:\d{2})\s(?<host>.*?)\s.*?\s\[(?<generator_id>.*?)::(?<signature_id>.*?):.*?\]\s(?<signature>.*?)\s\[Classification:\s(?<classification>.*?)\]\s\[Priority:\s(?<priority>.*?)\].*?{(?<protocol>.*?)\}\s(?<source_ip>.*?):(?<source_port>.*?)\s-\>\s(?<destination_ip>.*?):(?<destination_port>.*)" }
}
# remove the original message if parsing was successful
if !("_grokparsefailure" in [tags]) {
mutate {
remove_field => [ "message" ]
}
}
# parse the timestamp and save in a new datetime field
if [ts] {
date {
match => [ "ts", "MMM dd HH:mm:ss" ]
target => "sys_timestamp"
}
# remove the original timestamp if date parsing was successful
if !("_dateparsefailure" in [tags]) {
mutate {
remove_field => [ "ts" ]
}
}
}
}
} {输出
# save events to Elasticsearch with the uuid as the document id
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "teste-%{+YYYY-MM-dd}"
}
}
我期待看到Snort的警报日志当我检查“http://localhost:9200/ola- * / _搜索?漂亮”,但警报未检索。我竭力要解决这个问题......我没有任何想法是什么问题。
提前致谢!
什么是你的堆栈版本?你filebeat配置文件有两个filebeat.prospectors
和filebeat.inputs
,因为6.3版应改用filebeat.inputs
的filebeat.prospectors
。
自从6.0版本也将被删除的document_type
配置,您的留言可能不会有一个叫做type
与snort
的价值,这是在logstash管道的主过滤器领域。这是更好使用标签来过滤邮件。
在filebeat.yml
使用这个来代替。
filebeat.inputs:
- type: log
paths:
- /var/log/snort/*.log
tags: ["snort"]
改变你的logstash过滤器,只需使用if "snort" in [tags]
代替if [type] == "snort"
的
你的输出发送您接收到名为teste-%{+YYYY-MM-dd}
指数的任何消息,你为什么运行针对所谓ola-*
索引的搜索?您应该运行对teste-*
索引的搜索。
我建议你运行带有stdout
输出您的管道,看看发生了什么。
只要把这个在您的管道,看看你得到任何消息,是如何的消息。
output {
stdout { }
}