如何在Logstash中解析Glastopf蜜罐JSON日志并实现Kibana可视化
Glastopf蜜罐日志Logstash解析与Kibana可视化配置方案
一、Logstash配置文件调整 (/etc/logstash/conf.d/myconfig.conf)
基于你已有的Dionaea/Cowrie配置经验,以下是适配Glastopf JSON日志的完整配置:
input { file { path => "/opt/glastopf/logs/glastopf.json" # 替换为你的Glastopf日志实际路径 start_position => "beginning" sincedb_path => "/dev/null" # 调试阶段可选:重启后从头读取日志 codec => "json" # 自动解析JSON格式日志,无需手动写grok规则 } } filter { # 仅处理攻击事件(Glastopf核心日志类型) if [event_type] == "attack" { # 提取嵌套字段到顶层,方便Kibana可视化 mutate { add_field => { "source_ip" => "%{[source][ip]}" "source_port" => "%{[source][port]}" "request_method" => "%{[request][method]}" "request_path" => "%{[request][path]}" "request_user_agent" => "%{[request][user_agent]}" "malware_md5" => "%{[malware][md5]}" } # 可选:清理冗余嵌套字段 # remove_field => ["request", "source", "malware"] } # 字段类型转换,确保数据类型适配Kibana mutate { convert => { "source_port" => "integer" "timestamp" => "string" } } # 替换Logstash默认时间戳,适配Kibana时间筛选 date { match => ["timestamp", "ISO8601"] # Glastopf默认时间戳格式为ISO8601 target => "@timestamp" } } # 过滤非攻击类日志(可选,按需调整) else { drop {} } } output { elasticsearch { hosts => ["http://127.0.0.1:9200"] # 替换为你的Elasticsearch地址 index => "glastopf-%{+YYYY.MM.dd}" # 和Dionaea/Cowrie索引命名风格统一 } # 调试用:控制台输出解析结果,验证字段正确性 stdout { codec => rubydebug } }
二、关键配置说明
- Input层:通过
codec => "json"直接解析Glastopf的JSON日志,避免复杂的正则匹配。 - Filter层:
- 提取
source、request等嵌套字段到顶层,简化Kibana可视化时的字段选择。 - 类型转换确保端口、时间戳等字段符合Kibana的数据分析要求。
- 用Glastopf原生
timestamp替换Logstash默认时间戳,保证时间维度分析的准确性。
- 提取
- Output层:沿用你已有的索引命名规则,方便在Kibana中统一管理多款蜜罐的日志索引。
三、验证与调试步骤
- 检查配置文件语法合法性:
sudo /usr/share/logstash/bin/logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/myconfig.conf --config.test_and_exit
- 启动Logstash并实时查看日志输出:
sudo systemctl restart logstash sudo journalctl -u logstash -f
- Kibana配置:
- 创建索引模式(匹配
glastopf-*)。 - 基于
source_ip创建攻击源地图/饼图,基于request_path创建热门攻击路径条形图,基于@timestamp创建攻击时间趋势折线图。
- 创建索引模式(匹配
四、常见问题修复
- 字段缺失:检查Glastopf日志的JSON结构,确认嵌套字段的键名(部分版本可能用
src_ip替代source.ip)。 - 时间戳不生效:若Glastopf日志时间戳格式为
yyyy-MM-dd HH:mm:ss,修改date插件的match参数为["timestamp", "yyyy-MM-dd HH:mm:ss"]。
内容的提问来源于stack exchange,提问作者Febrian12345
相关产品推荐
相关产品推荐

