Osmedeus日志聚合与分析:ELK Stack集成实现集中式日志管理
你是否还在为Osmedeus扫描日志分散、难以追踪安全线索而困扰?本文将带你通过ELK Stack(Elasticsearch、Logstash、Kibana)实现日志集中管理,从日志采集、过滤到可视化分析,让安全扫描数据成为安全挖掘的强力助手。读完本文你将掌握:
- Osmedeus日志系统工作原理
- ELK Stack部署与配置要点
- 日志实时监控与异常检测方法
- 安全溯源与攻击路径分析技巧
Osmedeus日志系统架构
Osmedeus采用分级日志架构,核心日志功能由utils/log.go实现。系统默认将日志同时输出到控制台和文件,通过InitLog()函数初始化多写入器(MultiWriter):
mwr := io.MultiWriter(os.Stdout, f) // 同时输出到控制台和文件
日志文件默认存储在~/.osmedeus/logs/目录,命名格式为osmedeus-*.log,包含扫描进度、模块执行结果和错误信息等关键数据。通过-l参数可自定义日志路径:
osmedeus scan -t example.com -l /var/log/osmedeus/custom.log
日志级别控制通过utils/log.go实现,支持--debug(调试模式)、--verbose(详细模式)和--quite(静默模式)三个级别,满足不同场景的日志需求。
ELK Stack部署与配置
环境准备
确保系统已安装Docker和Docker Compose,然后克隆Osmedeus仓库:
git clone https://gitcode.com/GitHub_Trending/os/osmedeus
cd osmedeus
创建ELK专用目录并编写docker-compose.yml:
version: '3'
services:
elasticsearch:
image: elasticsearch:7.14.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: logstash:7.14.0
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
depends_on:
- elasticsearch
kibana:
image: kibana:7.14.0
ports:
- "5601:5601"
depends_on:
- elasticsearch
Logstash配置
创建日志处理管道logstash/pipeline/osmedeus.conf,配置文件输入、过滤和输出:
input {
file {
path => "/root/.osmedeus/logs/osmedeus-*.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:loglevel}\] %{GREEDYDATA:content}" }
}
date {
match => [ "timestamp", "yyyy-MM-dd'T'HH:mm:ss" ]
}
if "vulnerability" in [content] {
mutate { add_tag => [ "sec_alert" ] }
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "osmedeus-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
该配置使用Grok模式解析Osmedeus日志格式,对包含"vulnerability"的日志添加标签,便于后续告警处理。
Osmedeus日志采集优化
自定义日志路径
修改Osmedeus扫描命令,将日志输出到ELK监控目录:
osmedeus scan -f general -t example.com -l /var/log/osmedeus/scan-%(date +%Y%m%d).log
日志轮转配置
创建/etc/logrotate.d/osmedeus文件实现日志轮转:
/var/log/osmedeus/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}
Kibana日志可视化
索引模式创建
- 访问Kibana控制台(http://localhost:5601)
- 进入Management > Stack Management > Index Patterns
- 创建索引模式
osmedeus-*,时间字段选择@timestamp
安全监控仪表板
导入预设仪表板配置文件kibana-dashboard.json(可从docs/目录获取示例),包含以下关键面板:
- 扫描趋势图:按小时统计扫描任务数量
- 漏洞类型分布:饼图展示不同漏洞分类占比
- 模块执行耗时:条形图显示各扫描模块性能
- 错误告警列表:实时展示失败的扫描任务
实时告警配置
通过Kibana Alerts创建规则,当出现高风险安全日志时触发通知:
- 进入Stack Management > Alerts and Insights > Rules
- 创建新规则,选择索引模式
osmedeus-* - 设置触发条件:
tags: "sec_alert" AND content: "Critical" - 配置通知方式(邮件/Slack/Webhook)
实战案例:安全溯源分析
假设Kibana发现以下异常日志:
2023-10-04T15:30:22 [INFO] [subdomain] Found 100+ subdomains for example.com
2023-10-04T15:32:45 [DEBUG] [portscan] Open port 443 on test.example.com
2023-10-04T15:35:18 [WARNING] [vulnerability] Critical: Log4j RCE found on test.example.com
通过日志时间线分析,可快速定位安全漏洞产生的上下文:子域名枚举→端口扫描→漏洞检测,结合execution/process.go中的进程管理代码,追溯漏洞检测模块的执行参数和输出结果。
总结与进阶方向
本文介绍了基于ELK Stack的Osmedeus日志管理方案,通过集中式日志收集和可视化分析,显著提升安全扫描的可观测性。进阶探索方向包括:
- 结合Elastic APM实现扫描性能分析
- 使用Machine Learning检测异常扫描行为
- 集成SIEM系统实现安全事件联动响应
完整配置文件和示例仪表板可参考项目test-workflows/目录下的ELK集成测试用例。定期查阅README.md获取日志功能更新信息,持续优化你的安全监控体系。
如果觉得本文对你有帮助,请点赞、收藏并关注项目更新,下期将带来"Osmedeus分布式扫描集群部署"实战教程。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



