前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >龙马卫士(WLM9000B-3100S)防火墙日志处理工具使用文档

龙马卫士(WLM9000B-3100S)防火墙日志处理工具使用文档

作者头像
奶油话梅糖
发布2025-03-03 15:23:24
发布2025-03-03 15:23:24
1600
代码可运行
举报
文章被收录于专栏:话梅糖的Android学习
运行总次数:0
代码可运行

龙马卫士(WLM9000B-3100S)防火墙日志处理工具使用文档

敏感信息已处理

鉴于龙马卫士防火墙(WLM9000B-3100S)以及龙马卫士(卫士通)答辩一样的web页面、性能和功能可用性,指望让设备自己处理日志不太可能,碰巧最近也有分析防火墙日志缩减ACL条例的需求,遂导出log查看,发现其log压缩非常高效,使用tar.gz对二进制文件进行压制(图1),解压后文件高达2G+(图2),(鉴于使用环境是银行,可能其他环境日志文件会小一点)

image
image

image
image

解压后先查看日志格式,发现日志以分号间隔:

代码语言:javascript
代码运行次数:0
复制
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,可见这台防火墙产生的日志无用内容比较多

image
image

以下是为该日志处理脚本编写的使用文档:


龙马卫士防火墙(WLM9000B-3100S)日志处理工具使用文档

工具用途

本工具专用于处理龙马卫士(WLM9000B-3100S)设备生成的日志文件,实现以下核心功能:

  • 多编码兼容处理(支持UTF-8/GBK/Latin-1,导出的日志编码不清楚,用emedit打开一直提示编码格式错误)
  • 基于策略规则的数据过滤(policyid=0 或 action=deny,这是默认匹配到了deny any,需要过滤)
  • 网络四元组去重(源IP/目的IP/源端口/目的端口,有相同地址发送多条请求,防火墙也会完整记录下来)
  • 数据格式标准化与清洗
  • 大文件分块处理
  • CSV格式输出与自动合并

环境要求

  • Python 3.8+
  • 依赖库:mmap​, tqdm​, csv​, re
  • 磁盘空间:输入文件大小的2倍以上(比如源文件2G,那么空闲空间就要有4G,避免空间不足无法写入)

输入输出说明

输入文件要求
  • 文件路径:自行更改
  • 命名格式:*.YYYYMMDD*.txt​(必须包含8位日期标识,最终输出以设备名+日期​生成文件名)
  • 内容格式:包含设备日志的半结构化文本(或者直接拿从防火墙导出的文件就行,记得改文件格式)
输出文件
  • 命名规则:[设备名]_YYYYMMDD_processed.csv
  • 输出位置:当前python脚本运行目录

处理流程

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[生成统计报告]

配置参数

代码语言:javascript
代码运行次数:0
复制
# 文件编码检测顺序(可调整顺序优化检测效率)
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+)')

使用示例

代码语言:javascript
代码运行次数:0
复制
# 目录结构示例
输入目录/
├── 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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 龙马卫士(WLM9000B-3100S)防火墙日志处理工具使用文档
  • 龙马卫士防火墙(WLM9000B-3100S)日志处理工具使用文档
    • 工具用途
    • 环境要求
    • 输入输出说明
      • 输入文件要求
      • 输出文件
    • 处理流程
    • 配置参数
    • 使用示例
      • 源码地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档