敏感信息已处理
鉴于龙马卫士防火墙(WLM9000B-3100S)以及龙马卫士(卫士通)答辩一样的web页面、性能和功能可用性,指望让设备自己处理日志不太可能,碰巧最近也有分析防火墙日志缩减ACL条例的需求,遂导出log查看,发现其log压缩非常高效,使用tar.gz对二进制文件进行压制(图1),解压后文件高达2G+(图2),(鉴于使用环境是银行,可能其他环境日志文件会小一点)
解压后先查看日志格式,发现日志以分号间隔:
Feb 1 00:00:16 [设备IP] Feb 1 00:00:16 [设备名称];[日志序列号];ipv4;2; policy_permit: src_ip=[源IP];dst_ip=[目的IP];protocol=TCP;src_port=[源端口];dst_port=[目的端口];in_interface=bond1;out_interface=bond2;policyid=[策略ID];action=permit;Content=
拆开看是这样的:
Feb 1 00:00:16 [设备IP] Feb 1 00:00:16 [设备名称];
[日志序列号];
ipv4;
2;
policy_permit: src_ip=[源IP];dst_ip=[目的IP];protocol=TCP;src_port=[源端口];dst_port=[目的端口];
in_interface=bond1;
out_interface=bond2;
policyid=[策略ID];
action=permit;Content=
字段 | 值 |
---|---|
时间戳 | Feb 1 00:00:16 |
设备IP地址 | [设备IP] |
设备标识符 | FL01FW-01 |
日志序列号 | 01234567890123456789 |
IP版本 | ipv4 |
日志类型 | 2 |
策略允许/拒绝 | policy_permit |
源IP地址 | 192.168.10.98 |
目的IP地址 | 8.8.8.8 |
协议 | UDP |
源端口 | 45876 |
目的端口 | 22 |
入接口 | bond1 |
出接口 | bond2 |
策略ID | 75 |
动作 | permit |
内容 | Content= |
发现日志高达千万条(给我notepad--卡死了),于是想到使用python对数据进行处理,其源代码在:[python]龙马卫士(WLM9000B-3100S)防火墙日志处理工具 - 梅干しBlog
缩减后并转换为CVS格式,可以用excel打开或者使用emedit打开,缩减后不到100M,可见这台防火墙产生的日志无用内容比较多
以下是为该日志处理脚本编写的使用文档:
本工具专用于处理龙马卫士(WLM9000B-3100S)设备生成的日志文件,实现以下核心功能:
mmap
, tqdm
, csv
, re
*.YYYYMMDD*.txt
(必须包含8位日期标识,最终输出以设备名+日期
生成文件名)[设备名]_YYYYMMDD_processed.csv
graph TD A[检测文件编码] --> B[内存映射加载] B --> C[进度条初始化] C --> D[逐行处理] D --> E{策略过滤?} E -->|是| F[计数器+1] E -->|否| G[设备匹配] G --> H[数据清洗] H --> I[四元组去重] I --> J[缓冲写入] J --> K{缓冲满50万行?} K -->|是| L[临时文件分块] K -->|否| M[继续处理] L --> M M --> N[循环结束] N --> O[剩余数据写入] O --> P[合并临时文件] P --> Q[生成统计报告]
# 文件编码检测顺序(可调整顺序优化检测效率)
ENCODINGS = ['utf-8', 'gbk', 'latin-1']
# 目标设备标识(需与日志实际标识完全匹配)
target_device = "[设备名称]"
# 缓冲区设置(根据内存容量调整)
buffer_size = 500000 # 单位:行
# 正则表达式配置(非必要请勿修改,比如这里是原目的地址匹配)
device_pattern = re.compile(rf'{re.escape(target_device)}[;,]')
quad_pattern = re.compile(r'src_ip=([\d.]+)[;,].*?dst_ip=([\d.]+)[;,].*?src_port=(\d+)[;,].*?dst_port=(\d+)')
# 目录结构示例
输入目录/
├── log_20240219_001.txt
└── log_20240219_002.txt
# 执行处理(自动遍历目录)
python log_processor.py
# 输出结果
生成文件:SD31FW0B-A2_20240219_processed.csv
控制台输出:
🚀 初始化处理器 | 目标设备: SD31FW0B-A2 | 输出文件: SD31FW0B-A2_20240219_processed.csv
🔧 内存映射完成 | 文件尺寸: 1024.00MB
🔍 启动数据清洗流水线...
100%|██████████| 1024MB/1024MB [01:23<00:00, 12.30MB/s]
===============处理摘要===============
⏱️ 总耗时: 83.21s | 速率: 12.30MB/s
✅ 有效记录: 1,234,567
🚫 过滤记录: 89,012 (policyid=0/action=deny)
🔄 重复数据: 45,678
💾 输出文件: SD31FW0B-A2_20240219_processed.csv
[python]龙马卫士(WLM9000B-3100S)防火墙日志处理工具 - 梅干しBlog