dr4gon123/palos
GitHub: dr4gon123/palos
自动从 PAN-OS 官方文档中提取并结构化 syslog 字段定义,输出机器可读的 CSV 文件和 ECS/OCSF 字段映射,用于加速防火墙日志解析器和标准化流水线的开发。
Stars: 1 | Forks: 0
# PALOS — PAN-OS 日志抓取器
PALOS 从官方文档站点提取 Palo Alto Networks PAN-OS syslog 字段文档,并将其转换为整洁、结构化的 CSV 数据集。它专为需要机器可读的 syslog 模式用于解析器开发、日志规范化或字段参考的安全工程师和数据团队而设计。
模式规范化使防火墙日志能够在现代安全体系中变得可查询、可关联且可操作。基于 ECS、OCSF 或自定义模式规范化 PAN-OS 日志,需要所有日志类型中确切的字段名称和位置——而 PAN-OS 将这些信息分散在每个版本的不同文档页面中。
PALOS 提供了完整的流水线:从官方 PAN-OS 文档中提取并纠正模式,并将它们转换为 ECS 和 OCSF 字段映射,随时可用于您的规范化工作流。
## 快速开始
```
pip install requests beautifulsoup4 pandas lxml pyyaml
python3 paloalto_scraper.py
```
输出结果将保存在当前工作目录下以版本号命名的子目录中(例如 `11.1+/`)。
## 输出
```
{version}/
{LogType}_format.csv # e.g. Traffic_format.csv (not Traffic_Log_format.csv)
{LogType}_fields.csv # e.g. Traffic_fields.csv
consolidated/
panos_syslog_fields.csv # Consolidated matrix: rows = positions, columns = log types
panos_consolidated_fields.csv # All variables: field name, log type coverage, description
```
**`{LogType}_format.csv`** — 第一行是 PAN-OS 文档中记录的原始逗号分隔格式字符串(例如 `FUTURE_USE, Receive Time, Serial Number, ...`)。第二行是转换后的版本,其中长名称被替换为它们的 snake_case 变量名(`FUTURE_USE, receive_time, serial, ...`)。这两行都是带引号的 CSV,因此可以干净地解析为数组。
**`{LogType}_fields.csv`** — 从 PAN-OS 文档抓取的字段参考表,在 `Field Name` 后插入了 `Field Name lookup` 和 `Variable Name` 列。变量名从每个字段名称的括号中提取(例如 `Serial Number (serial)` → `serial`),并经过后处理以修复 PAN-OS 文档的不一致性。有关完整的更正列表,请参阅 [EDGE_CASES.md](EDGE_CASES.md)。
## 字段命名规范化
抓取的变量名会与标准安全模式进行交叉引用,以便进行 SIEM 接收和字段规范化。有关完整文档,请参阅 [FIELD_NAMING_NORMALIZATION.md](FIELD_NAMING_NORMALIZATION.md)。
| 模式 | 状态 | 输出 |
|--------|--------|--------|
| ECS (Elastic Common Schema) | 已映射 71/297 个字段 | `11.1+/ecs/panos_ecs_mapping.csv` |
| OCSF | 计划中 | `11.1+/ocsf/` |
## 配置
编辑 `paloalto_scraper_config.yaml` 以自定义行为:
| 设置 | 默认值 | 效果 |
|---------|---------|--------|
| `base_delay` | `1.0` | HTTP 请求之间的秒数(限速) |
| `force_rescrape` | `false` | 重新抓取本地已存在的版本 |
| `dry_run` | `false` | 打印抓取计划但不获取任何页面 |
| `output_dir` | `"."` | 所有输出的根目录 |
## 添加新的 PAN-OS 版本
在 `paloalto_scraper_config.yaml` 的 `versions` 下添加新条目:
```
versions:
- name: "11.2"
log_types:
- name: "Traffic_Log"
url: "https://docs.paloaltonetworks.com/ngfw/11-2/.../traffic-log-fields"
- name: "Threat_Log"
url: "https://docs.paloaltonetworks.com/ngfw/11-2/.../threat-log-fields"
# ... one entry per log type
```
除非设置 `force_rescrape: true`,PALOS 将跳过本地已存在的版本。
## 抓取的日志类型 (PAN-OS 11.1+)
1. Traffic Log
2. Threat Log
3. URL Filtering Log
4. Data Filtering Log
5. HIP Match Log
6. GlobalProtect Log
7. IP-Tag Log
8. User-ID Log
9. Decryption Log
10. Tunnel Inspection Log
11. SCTP Log
12. Authentication Log
13. Config Log
14. System Log
15. Correlated Events Log
16. GTP Log
17. Audit Log
## PAN-OS 文档说明
PAN-OS 文档在各种日志类型中存在许多不一致之处:字段表中的变量名被截断、括号内存在拼写错误、字段完全没有括号、与格式字符串不同的长名称,以及至少一个 PAN-OS 文档的实质性 Bug(使用句点而不是逗号作为字段分隔符)。PALOS 通过其异常系统(`paloalto_scraper_exceptions.yaml`)自动纠正了所有这些问题,因此即使在源文档不正确的情况下,输出的变量名也能保持一致且正确。
每一项已知的更正都记录在 [EDGE_CASES.md](EDGE_CASES.md) 中,按更正层组织,并注明了每个条目的根本原因和受影响的日志类型。
这些发现也已通过 Live Community 报告给 Palo Alto Networks:
["Bugs" on syslog field descriptions documentation (PAN-OS)](https://live.paloaltonetworks.com/t5/general-topics/quot-bugs-quot-on-syslog-field-descriptions-documentation-pan-os/m-p/1249086#M126065)
## 面向开发者和维护者
请参阅 [DEVELOPERS_GUIDE.md](DEVELOPERS_GUIDE.md) 了解:
- 更正流水线演练(从原始 HTML 到最终 CSV)
- 如何添加新的异常(字段名查找更正、变量名更正、原始格式 token 修复)
- 关键方法参考
- 架构概览
*对 Palo Alto 不感兴趣?查看 [Flores - FortiGate 日志消息参考抓取器](https://github.com/dr4gon123/flores)*
标签:AMSI绕过, BeautifulSoup, BlueTeam, CSV, ECS, OCSF, OISF, Palo Alto, PAN-OS, Python, Schema映射, Syslog, Terraform, 威胁检测, 字段参考, 安全工程, 安全数据分析, 开源安全工具, 数据工程, 数据提取, 数据管道, 数据规范化, 文档抓取, 无后门, 日志归一化, 日志管理, 日志解析, 机器可读, 网络安全, 证书伪造, 软件工程, 逆向工具, 逆向工程平台, 防火墙日志, 隐私保护