ernie55ernie/Anomaly-Firewall-Rule-Detection-And-Resolution

GitHub: ernie55ernie/Anomaly-Firewall-Rule-Detection-And-Resolution

基于学术论文实现的防火墙规则异常检测与解决工具,支持自动识别和修复遮蔽、相关、冗余异常,并提供规则合并优化功能。

Stars: 35 | Forks: 10

# 防火墙规则异常检测与解决 这是论文 [M Abedin, et al. "Detection and resolution of anomalies in firewall policy rules"](https://link.springer.com/chapter/10.1007/11805588_2) 针对 Ryu restful [防火墙](https://osrg.github.io/ryu-book/en/html/rest_firewall.html#id10) 的一个实现。 防火墙规则定义了网络流量的安全策略。任何错误都可能导致不需要的流量通过或阻止期望的流量,从而危及系统安全。 - [使用方法](#usage) - [两条规则之间的关系](#relation-between-two-rules) - [两条规则之间可能的异常](#possible-anomalies-between-two-rules) - [解决算法的示例说明](#illustrative-example-of-the-resolve-algorithm) - [合并算法的示例说明](#illustrative-example-of-the-merge-algorithm) - [任务列表](#task-list) - [关于本程序的更多信息](#more-about-this-program) ## 使用方法 ``` usage: main.py [-h] [--path PATH] [--detect] [--resolve] [--merge] Anomaly Firewall Rule Detection and Resolution optional arguments: -h, --help show this help message and exit --path PATH path of firewall rules file --detect detect anomaly firewall rule --resolve resolve anomaly firewall rule --merge merge contiguous firewall rule ``` - 安装依赖 ``` pip install -r requirements.txt ``` - 这将运行演示程序 ``` python anomaly_resolver.py ``` - 这将执行异常检测 ``` python main.py --path rules/example_rules_1 --detect ``` - 这将执行异常解决 ``` python main.py --path rules/example_rules_1 --resolve ``` - 这将执行规则合并 ``` python main.py --path rules/example_rules_2 --merge ``` ## 两条规则之间的关系 规则定义为当数据包匹配特定条件时执行的一组标准和一个操作。[Ryu restful firewall 规则]((https://osrg.github.io/ryu-book/en/html/rest_firewall.html#id10) 的条件包含以下元素:VLAN、priority、输入交换端口、Ethernet 源、Ethernet 目的、Ethernet 帧类型、IP 源、IP 目的、IPv6 源、IPv6 目的、IP 协议、源端口和目的端口。这些也是 [OpenFlow Switch Specification](https://www.opennetworking.org/wp-content/uploads/2014/10/openflow-spec-v1.3.0.pdf) 中定义的匹配字段。 两条规则之间的关系是它们匹配的数据包集合之间的关系。假设一条规则匹配 A 数据包,另一条匹配 B 数据包。 ![规则关系](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f1ac2506e4224608.png) 1. Disjoint(不相交):规则中至少有一个标准具有完全不相关的值 2. Exactly Matching(完全匹配):规则中的每个标准都完全匹配 3. Inclusively Matching(包含匹配):一条规则和另一条规则至少有一个标准是彼此的子集,其余属性相等 4. Correlated(相关):两条规则不相交,也不彼此包含匹配 ## 两条规则之间可能的异常 1. Shadowing Anomaly(遮蔽异常):如果另一条规则在策略中位于该规则之前,并且另一条规则可以匹配该规则匹配的所有数据包,且它们具有不同的操作,则该规则被另一条规则遮蔽 2. Correlation Anomaly(相关异常):两条规则具有不同的操作,并且一条规则匹配某些匹配另一条规则的数据包,反之亦然 3. Redundancy Anomaly(冗余异常):冗余规则对相同数据包执行与另一条规则相同的操作 该算法按如下方式解决异常: - *shadowing anoamly*(遮蔽异常):当规则 *exactly matched*(完全匹配)时,保留具有 reject 操作的那一条。当规则 *inclusively matched*(包含匹配)时,重新排序具有 reject 操作的那一条。 - *correlation anomaly*(相关异常):将规则分解为不相交的部分并插入列表中。对于相关规则共有的部分,保留具有 reject 操作的那一条。 - *redundancy anomaly*(冗余异常):移除冗余规则。 ## 解决算法的示例说明 防火墙规则应采用以下格式: - priority. ``` 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ``` 异常解决后,列表中不再存在异常。 ``` ``` ## 合并算法的示例说明 ``` 1. 2. 3. 4. 5. 6. ``` 从这个规则列表中,我们可以生成树: ![从示例规则列表生成的树](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/acd13f19bd224615.png) 在此树上运行合并函数,合并后的树结果如下: ![合并后的树结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/db51be42e9224623.png) ## 任务列表 - [x] 防火墙规则文件到 Rules 的解析器 - [x] resolve_anomalies 函数,用于解决防火墙规则文件中的异常 - [x] insert 函数,用于将规则 r 插入 new_rules_list - [x] resolve 函数,用于解决两条规则 r 和 s 之间的异常 - [x] split 函数,用于根据属性 a 分割重叠的规则 r 和 s - [x] tree_insert 函数,用于将规则 r 插入规则树的节点 n - [x] merge 函数,用于合并表示连续范围的节点 n 的边 - [ ] IP 范围表示转换为多个 CIDR 表示 - [ ] 支持处理 dl_src, dl_dst, dl_type, ipv6_src, ipv6_dst, multiple nw_proto - [ ] 将解决和合并后的规则输出到防火墙规则文件 ### 关于本程序的更多信息 关于本程序的详细描述请参阅博客文章 [Anomaly Firewall Rule Detection and Resolution](https://ernie55ernie.github.io/python/2019/06/09/anomaly-firewall-rule-detection-and-resolution.html)。
标签:Python, Ryu SDN, 安全策略, 提示词设计, 无后门, 流量过滤, 策略分析, 网络安全, 规则冲突解决, 规则合并, 规则异常检测, 论文实现, 访问控制列表, 软件定义网络, 逆向工具, 防火墙, 隐私保护