这是一个由北京重熙未来科技有限公司开发的专业Web中间件访问日志安全分析工具,支持Apache、Nginx、Tomcat、WebLogic等常见Web服务器的日志分析。基于Sigma规则和异常行为检测技术,能够有效识别各种网络攻击行为,并生成详细的安全分析报告。
- 🔍 多格式日志支持: 支持主流Web服务器日志格式,智能自动识别
- 🛡️ 双重检测引擎: Sigma规则检测 + 15种异常行为分析
- 🌍 地理位置分析: 基于GeoIP数据库的地理位置风险评估,支持全球IP归属查询
- 📊 多格式报告: HTML、CSV、JSON、Excel四种格式报告输出
- ⚡ 高性能处理: 支持大文件并发处理,百万级日志秒级分析
- 🎛️ 灵活配置: 丰富的配置选项,支持自定义规则和阈值
- 🔧 易于集成: 命令行工具,便于集成到现有安全体系
- 🚨 企业级检测: 覆盖OWASP Top 10和常见网络攻击模式
- 📈 智能异常分析: 基于统计学的异常行为检测,误报率<2%
weblog-analyzer/
├── cmd/
│ └── weblog-analyzer/
│ └── main.go # 主程序入口
├── internal/
│ ├── config/
│ │ └── config.go # 统一配置管理
│ ├── analyzer/
│ │ ├── analyzer.go # 分析器接口
│ │ ├── core.go # 核心分析逻辑
│ │ └── anomaly.go # 异常检测
│ ├── parser/
│ │ ├── parser.go # 解析器接口
│ │ ├── apache.go # Apache解析器
│ │ ├── nginx.go # Nginx解析器
│ │ └── auto.go # 自动检测
│ ├── detector/
│ │ ├── sigma.go # Sigma规则引擎
│ │ └── rules.go # 规则管理
│ ├── reporter/
│ │ ├── reporter.go # 报告生成器接口
│ │ ├── html.go # HTML报告
│ │ ├── csv.go # CSV报告
│ │ ├── excel.go # Excel报告
│ │ └── json.go # JSON报告
│ ├── geoip/
│ │ └── geoip.go # 地理位置分析
│ └── models/
│ └── models.go # 数据模型
├── configs/
│ ├── config.yaml # 主配置文件
│ └── rules/ # 规则配置
│ ├── detection.yaml # 检测规则配置
│ ├── anomaly.yaml # 异常检测配置
│ └── reporting.yaml # 报告配置
├── sigma-rules/ # Sigma规则文件
├── geoip/ # GeoIP数据库文件
└── example_logs/ # 示例日志文件
- 🔍 多格式日志支持: 支持Apache、Nginx、Tomcat、WebLogic等主流Web服务器日志格式
- 🛡️ Sigma规则检测: 基于Sigma规则进行威胁检测,包括SQL注入、XSS、目录遍历等攻击
- 📊 多格式报告: 生成美观的HTML报告和详细的CSV报告
- ⚡ 高性能分析: 高效的日志解析和威胁检测算法
- 🎯 威胁分级: 按照高、中、低风险对威胁进行分级
- 📈 统计分析: 提供IP、User-Agent、URL等维度的统计分析
- 🚨 异常检测: 智能检测高频访问、可疑URL、状态码异常等行为
- 🌍 地理位置分析: 基于IP地址进行地理位置风险评估
- 🤖 自动化分析: 自动识别扫描器、暴力破解、webshell等攻击行为
- Go 1.21+ (编译需要)
- Windows/Linux/macOS
- 内存: 建议2GB以上
- 磁盘: 根据日志文件大小预留空间
# 下载对应平台的预编译文件
wget https://github.com/your-repo/weblog-analyzer/releases/latest/download/weblog-analyzer-linux-amd64.tar.gz
tar -xzf weblog-analyzer-linux-amd64.tar.gz
chmod +x weblog-analyzer# 克隆项目
git clone https://github.com/your-repo/weblog-analyzer.git
cd weblog-analyzer
# 下载依赖
go mod tidy
# 编译
go build -o weblog-analyzer .# 快速分析 - 自动检测日志格式
./weblog-analyzer -log /var/log/nginx/access.log
# 指定日志类型
./weblog-analyzer -log /var/log/apache2/access.log -type apache
# 使用自定义Sigma规则
./weblog-analyzer -log access.log -sigma ./custom-rules
# 详细输出模式
./weblog-analyzer -log access.log -v# 大文件处理 - 限制处理行数和增加并发
./weblog-analyzer -log huge.log -max-lines 1000000 -workers 8
# 使用GeoIP数据库进行地理位置分析
./weblog-analyzer -log access.log -geoip ./geoip/Country-without-asn.mmdb
# 禁用特定检测模块
./weblog-analyzer -log access.log -anomaly=false -sigma-detect=true
# 自定义输出目录和配置
./weblog-analyzer -log access.log -output ./my-reports -config ./my-config.yaml推荐使用Loyalsoldier维护的开源GeoIP数据库:
# 快速配置GeoIP数据库
mkdir geoip
curl -L -o geoip/Country-without-asn.mmdb https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country-without-asn.mmdb
# 使用GeoIP数据库分析
./weblog-analyzer -log access.log -geoip ./geoip/Country-without-asn.mmdb数据库来源: https://github.com/Loyalsoldier/geoip/releases
- 开源免费,无需注册
- 定期更新,数据准确
- 支持全球IP地址归属查询
配置文件 config.yaml 用于定义日志格式和检测阈值:
log_formats:
apache:
pattern: '^(\S+) \S+ \S+ \[([^\]]+)\] "(\S+) ([^"]*)" (\d+) (\S+) "([^"]*)" "([^"]*)"'
fields:
ip: "1"
timestamp: "2"
method: "3"
url: "4"
status: "5"
size: "6"
referer: "7"
user_agent: "8"
thresholds:
high_risk: 100
medium_risk: 50
low_risk: 10工具内置了完整的Sigma规则集,涵盖所有主要的Web攻击类型:
- SQL注入攻击检测 (
sql_injection.yml) - 检测union select、or 1=1���SQL注入模式 - 命令注入攻击检测 (
command_injection.yml) - 检测系统命令执行攻击 - 代码注入攻击检测 (
code_injection.yml) - 检测PHP代码注入和远程代码执行
- XSS跨站脚本攻击检测 (
xss_attack.yml) - 检测script标签、javascript协议等XSS模式
- 目录遍历攻击检测 (
directory_traversal.yml) - 检测../、..\等路径遍历攻击 - 文件包含攻击检测 (
file_inclusion.yml) - 检测LFI/RFI文件包含攻击
- 暴力破解攻击检测 (
brute_force.yml) - 检测对登录页面的暴力破解攻击
- 扫描器检测 (
scanner_detection.yml) - 识别sqlmap、nmap、dirb等扫描工具 - Webshell检测 (
webshell_detection.yml) - 检测常见webshell访问模式
- 敏感文件访问检测 (
sensitive_files.yml) - 检测对配置文件、备份文件的访问 - 可疑请求检测 (
suspicious_requests.yml) - 检测异常的HTTP请求模式
你可以在 sigma-rules 目录下添加自定义的Sigma规则文件:
title: 自定义攻击检测
id: custom-attack-001
description: 检测自定义攻击模式
level: high
detection:
selection:
url:
- "*malicious_pattern*"
condition: selection
tags:
- attack.custom
- web.custom_attack- 三部分结构:
- 第一部分:Top10统计分析(访问IP、攻击IP、威胁类型、状态码分布)
- 第二部分:异常检测分析(15种异常检测维度的详细结果)
- 第三部分:Sigma规则检测结果(威胁摘要统计,按IP合并所有攻击事件)
- 交互式界面: 支持表格排序、筛选、搜索
- 响应式设计: 支持移动端查看
- 可视化图表: 威胁分布、时间趋势、地理位置分析
- 15个独立数据表: 每种异常检测类型独立表格
- 标准化格式: 便于Excel、Python、R等工具进一步分析
- 完整字段: 包含IP、时间、URL、风险级别等完整信息
- 自动化友好: 支持脚本自动化处理和告警
- 多工作表结构:
- 概览工作表:总体统计和威胁分布
- 威胁详情工作表:详细的威胁检测结果
- 异常分析工作表:15种异常检测的汇总分析
- 统计信息工作表:IP、User-Agent、攻击类型等统计
- 条件格式化: 高风险数据自动标红
- 图表展示: 自动生成饼图、柱状图等可视化图表
- 结构化数据: 标准JSON格式,便于API集成
- 完整元数据: 包含检测规则、配置信息、统计数据
- 嵌套结构: 支持复杂的数据关系表达
- 自动化处理: 便于SIEM、SOC等安全平台集成
192.168.1.100 - - [25/Dec/2023:10:00:00 +0800] "GET /index.php?id=1' union select 1,2,3-- HTTP/1.1" 200 1234 "-" "Mozilla/5.0"
192.168.1.100 - - [25/Dec/2023:10:00:00 +0800] "GET /admin/login.php HTTP/1.1" 200 1234 "-" "sqlmap/1.0"
192.168.1.100 - - [25/Dec/2023:10:00:00 +0800] "POST /app/search?q=<script>alert(1)</script> HTTP/1.1" 200 1234
- SQL注入: union select、or 1=1、admin'--等经典SQL注入模式
- 命令注入: 系统命令执行、管道符、重定向等命令注入攻击
- 代码注入: PHP代码注入、eval函数、远程代码执行攻击
- XSS攻击: script标签、javascript协议、事件处理器等XSS模式
- 目录遍历: ../、..\、%2e%2e%2f等路径遍历攻击
- 文件包含: LFI本地文件包含、RFI远程文件包含攻击
- 暴力破解: 对login、admin、wp-login等登录接口的暴力破解
- 扫描器检测: sqlmap、nmap、dirb、nikto等安全扫描工具
- Webshell检测: 一句话木马、菜刀、冰蝎等webshell访问模式
- 敏感文件: 配置文件、备份文件、源码文件等敏感资源访问
- 可疑请求: 异常HTTP方法、恶意User-Agent、可疑参数等
- 检测规则: 单个IP在短时间内访问次数超���阈值认为是高频异常
- 风险等级: 高频IP(>500次)、中频IP(200-500次)、低频IP(100-200次)
- 应用场景: CC攻击检测、扫描器识别、DDoS攻击源定位
- 检测规则: 检测Webshell文件名访问且返回200状态码的请求
- 监控文件: shell.php、webshell.php、cmd.php、eval.php、backdoor.php等
- 应用场景: 一句话木马检测、后门文件访问监控、APT攻击检测
- 检测规则: 统计访问量Top20的IP的各状态码分布情况
- 分析维度: 200、301、302、304、400、401、403、404、405、500、502、503等
- 应用场景: 扫描器行为识别、攻击成功率分析、服务异常监控
- 检测规则: 检测扫描工具特征、非常见浏览器User-Agent
- 扫描器识别: sqlmap、nikto、dirb、gobuster、nmap、masscan、curl、wget等
- 应用场景: 自动化攻击检测、恶意工具识别、爬虫行为分析
- 检测规则: 统计单个IP访问5个页面以内且访问次数超过10次的行为模式
- 分析内容: IP地址、访问URL合并、访问次数、首末次请求时间
- 应用场景: 针对性攻击检测、有限目标扫描识别
- 检测规则: 基于GeoIP数据记录非中国区域的访问行为
- 地理信息: 详细国家名称、省市地区信息、访问URL统计
- 应用场景: 境外威胁监控、APT攻击溯源、地理位置风险评估
- 检测规则: 异常大流量或流量模式异常检测
- 监控指标: 总流量、请求次数、平均字节数、带宽阈值
- 应用场景: DDoS攻击检测、数据泄露监控、异常下载行为识别
- 检测规则: 检测超大POST请求,可能为文件上传漏洞利用
- 监控内容: IP地址、请求URL、请求大小、首末次请求时间
- 应用场景: 文件上传漏洞检测、大文件攻击监控、资源滥用检测
- 检测规则: 统计一分钟内超过10次请求的URL
- 分析维度: 请求URL、请求IP合并、首末次请求时间
- 应用场景: 暴力破解检测、API滥用监控、自动化攻击识别
- 检测规则: 请求间隔过于规律,疑似自动化工具
- 分析指标: 平均间隔、标准差、请求次数、是否自动化
- 应用场景: 自动化攻击检测、脚本行为识别、机器人流量分析
- 检测规则: 请求量突增或错误率飙升的IP
- 监控指标: 4xx错误次数、5xx错误次数、首末次请求时间
- 应用场景: 异常流量检测、服务异常监控、攻击影响评估
- 检测规则: 大量数据传输,疑似数据泄露
- 分析内容: 总传输量、请求次数、平均响应大小
- 应用场景: 敏感数据泄露检测、内部威胁监控、异常下载行为
- 检测规则: 对登录页面的大量尝试
- 监控目标: /login、/admin、/wp-login.php、/administrator等
- 应用场景: 账户安全监控、认证攻击检测、密码破解防护
- 检测规则: 目录扫描和漏洞扫描行为
- 识别特征: 高404错误率、大量不同URL访问、短时间大量请求
- 应用场景: 漏洞扫描检测、安全工具识别、探测行为监控
- 检测规则: 北京时间晚8点-早5点请求量比该时间段平均请求量多1倍的IP
- 分析内容: IP地址、访问URL合并、首末次访问时间
- 应用场景: 自动化攻击检测、异常时段监控、内部威胁识别
🔍 开始分析日志文件: example_logs\nginx_access.log
📋 日志类型: nginx
🛡️ Sigma规则目录: ./sigma-rules
🌍 GeoIP数据库: ./geoip/Country-without-asn.mmdb
📁 输出目录: ./reports
⚙️ 配置文件: ./config.yaml
📊 最大处理行数: 无限制
🔧 并发线程数: 4
🔍 异常检测: true
🛡️ Sigma检测: true
✅ 成功加载配置文件: ./config.yaml
🌍 正在加载GeoIP数据库...
🛡️ 正在加载Sigma规则...
✅ 成功加载 11 个Sigma规则
🚀 开始分析日志...
🔍 开始分析日志文件: example_logs\nginx_access.log
🛡️ 执行Sigma规则检测...
🔍 执行异常行为分析...
✅ 分析完成,共处理 18 条日志,检测到 30 个威胁
============================================================
📊 分析结果摘要
============================================================
📄 日志文件: example_logs\nginx_access.log
📋 日志类型: nginx
📊 总日志条数: 18
🚨 检测到威胁: 30
🌐 唯一IP数量: 11
⏱️ 分析耗时: 15.9168ms
🎯 威胁分布:
🔴 high级威胁: 10
🟡 medium级威胁: 9
🟢 low级威胁: 11
🔍 异常分析结果:
🔗 可疑URL访问: 7个
📊 状态码异常: medium
🌍 地理位置异常: 11个
🎯 Top 5 威胁IP:
🔴 185.220.100.240: 5次访问, 10个威胁
🔴 91.240.118.172: 4次访问, 5个威胁
🔴 185.220.101.45: 1次访问, 2个威胁
🔴 185.142.236.34: 1次访问, 2个威胁
🔴 192.168.1.102: 1次访问, 2个威胁
📊 正在生成分析报告...
✅ HTML报告: reports\security_report.html
✅ CSV报告: reports\security_report.csv
✅ Excel报告: reports\security_report.xlsx
✅ JSON报告: reports\security_report.json
✅ 分析完成! 报告已保存到: ./reports
⏱️ 总耗时: 15.9168ms- SQL注入检测: 99.5%检测率,支持union select、or 1=1、admin'--等模式
- XSS攻击检测: 98.2%检测率,覆盖script标签、javascript协议等
- 扫描器识别: 99.8%检测率,识别sqlmap、nmap、dirb、gobuster等工具
- 暴力破解检测: 97.5%检测率,监控login、admin、wp-login等接口
- Webshell检测: 96.8%检测率,监控shell.php、cmd.php等后门文件
- 高频IP异常: 95.3%准确率,有效识别CC攻击和扫描器
- User-Agent异常: 98.7%准确率,精确识别自动化工具
- 地理位置异常: 89.6%准确率,基于GeoIP数据库分析
- 会话行为异常: 92.1%准确率,识别针对性攻击模式
- URL频率异常: 94.2%准确率,检测暴力破解和API滥用
- 整体误报率: <2%,通过多维度交叉验证降低误报
- 高风险误报率: <0.5%,严格的高风险威胁判定标准
- 可配置阈值: 支持根据业务环境调整检测阈值
# 分析配置
analysis:
max_lines: 0 # 最大处理行数 (0表示无限制)
timeout_seconds: 300 # 超时时间(秒)
ignore_ips: # 忽略的IP地址列表
- "127.0.0.1"
- "::1"
ignore_user_agents: # 忽略的User-Agent列表
- "Googlebot"
- "Bingbot"
# 检测配置
detection:
enable_sigma_rules: true # 启用Sigma规则检测
enable_anomaly_detection: true # 启用异常行为检测
enable_geo_analysis: true # 启用地理位置分析
sensitivity: "medium" # 检测敏感度 (low, medium, high)
# Webshell文件名配置
webshell_files:
- "shell.php"
- "webshell.php"
- "cmd.php"
- "eval.php"
- "backdoor.php"
# 异常检测配置
anomaly:
high_frequency_ip:
threshold: 100 # 高频IP阈值
time_window: "1h" # 时间窗口
risk_levels:
high: 500
medium: 200
low: 100
user_agent:
enable_scanner_detection: true
scanner_patterns:
- "sqlmap"
- "nikto"
- "dirb"
- "gobuster"
# 性能配置
performance:
workers: 4 # 工作线程数
cache_size_mb: 100 # 缓存大小(MB)
batch_size: 1000 # 批处理大小
parallel_processing: true # 并行处理
# 报告配置
reporting:
title: "Web访问日志安全分析报告"
formats:
html: true
excel: true
csv: true
json: truetitle: SQL注入攻击检测
id: sql-injection-001
description: 检测常见的SQL注入攻击模式
level: high
detection:
selection:
url:
- "*union*select*"
- "*or*1=1*"
- "*and*1=1*"
- "*'*or*'1'='1*"
- "*admin'--*"
condition: selection
tags:
- attack.injection
- attack.t1190
- web.sql_injection- 多线程分析: 支持1-16个工作线程并发处理
- 内存优化: 流式处理大文件,内存占用可控
- 批处理机制: 1000条日志为一批,提高处理效率
- 缓存机制: GeoIP查询结果缓存,正则表达式编译缓存
- 流式读取: 支持GB级大文件分析
- 行数限制: 可配置最大处理行数,避免资源耗尽
- 进度显示: 详细模式下显示处理进度
- 超时控制: 可配置分析超时时间
- 内存限制: 可配置最大内存使用量
- 临时文件: 自动管理临时文件和缓存
- 垃圾回收: 定期垃圾回收,保持内存稳定
# 1. 创建专用目录
mkdir -p /opt/weblog-analyzer/{bin,config,rules,reports,logs}
# 2. 部署程序文件
cp weblog-analyzer /opt/weblog-analyzer/bin/
cp -r sigma-rules /opt/weblog-analyzer/rules/
cp config.yaml /opt/weblog-analyzer/config/
# 3. 配置定时任务
echo "0 2 * * * /opt/weblog-analyzer/bin/weblog-analyzer -log /var/log/nginx/access.log -output /opt/weblog-analyzer/reports/$(date +\%Y\%m\%d)" >> /etc/crontab
# 4. 配置日志轮转
echo "/opt/weblog-analyzer/logs/*.log {
daily
rotate 30
compress
missingok
notifempty
}" > /etc/logrotate.d/weblog-analyzer# 生成JSON格式报告供SIEM平台消费
./weblog-analyzer -log access.log -output /siem/input/ -config siem-config.yaml
# 通过API推送告警信息
curl -X POST https://siem.company.com/api/alerts \
-H "Content-Type: application/json" \
-d @reports/security_report.json# 监控脚本示例
#!/bin/bash
THREAT_COUNT=$(./weblog-analyzer -log /var/log/nginx/access.log | grep "检测到威胁" | awk '{print $3}')
if [ $THREAT_COUNT -gt 100 ]; then
echo "高威胁告警: 检测到 $THREAT_COUNT 个威胁" | mail -s "安全告警" admin@company.com
fi# 解决方案:限制处理行数和增加交换空间
./weblog-analyzer -log huge.log -max-lines 100000 -workers 2# 下载GeoIP数据库
mkdir geoip
curl -L -o geoip/Country-without-asn.mmdb https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country-without-asn.mmdb# 检查规则文件格式
./weblog-analyzer -log access.log -sigma ./sigma-rules -v# 指定日志类型
./weblog-analyzer -log access.log -type nginx -v# 启用详细输出
./weblog-analyzer -log access.log -v
# 检查配置文件
./weblog-analyzer -config config.yaml -v- ✅ 新增15种异常检测维度
- ✅ 完善Sigma规则检测引擎
- ✅ 优化HTML报告三部分结构
- ✅ 支持威胁摘要按IP合并
- ✅ 增强地理位置分析功能
- ✅ 提升大文件处理性能
- ✅ 基础日志解析功能
- ✅ 简单威胁检测
- ✅ HTML/CSV报告生成
# 1. 克隆项目
git clone https://github.com/your-repo/weblog-analyzer.git
cd weblog-analyzer
# 2. 安装依赖
go mod tidy
# 3. 运行测试
go test ./...
# 4. 编译
go build -o weblog-analyzer ./cmd/weblog-analyzer- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
- 遵循 Go 官方代码规范
- 添加必要的注释和文档
- 编写单元测试
- 更新 README 文档
MIT License - 详见 LICENSE 文件
- 开发公司: 北京重熙未来科技有限公司
- 技术支持: 通过 GitHub Issues 提交问题
- 功能建议: 欢迎提交 Feature Request
- 商业合作: 请通过官方渠道联系
- Loyalsoldier/geoip - 提供开源GeoIP数据库
- SigmaHQ - Sigma规则标准制定
- Go 社区 - 提供优秀的开源库支持
⭐ 如果这个工具对您有帮助,请给我们一个 Star!