申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计4577字,阅读大概需要3分钟
欢迎关注我的个人公众号:不懂开发的程序猿
规则被定义为一组标准和当数据包匹配标准时要执行的操作。Ryu防火墙规则的标准包括:元素 VLAN、优先级、输入交换机端口、以太网源、以太网目标、以太网帧类型、IP 源、IP 目标、IPv6 源、IPv6 目标、IP 协议、源端口和目标端口。这些也是OpenFlow Switch Specification 中定义的匹配字段。
防火墙规则是定义网络流量的安全策略。任何错误的规则都会让不需要的流量通过或阻止所需的流量,从而危及系统安全。
两个规则之间的关系是它们匹配的一组数据包之间的关系。假设一个规则匹配A数据包,另一个匹配B数据包。如下几种形式:

(1)不相交:规则中至少有一个标准具有完全不相交的值
(2)完全匹配:规则中的每个条件都完全匹配
(3)包含匹配:一个规则和另一个规则至少有一个标准是彼此的子集,并且对于属性的其余部分,一个等于另一个
(4)相关:两个规则不相交且不包含彼此匹配
两个规则之间可能存在的异常:
Algorithm TreeInsert该算法解决异常如下:
git clone https://github.com/ernie55ernie/Anomaly-Firewall-Rule-Detection-And-Resolution.git

cd Anomaly-Firewall-Rule-Detection-And-Resolution/pip install -r requirements.txt

新开终端:
sudo ovs-vsctl set Bridge protocols=OpenFlow13

新开终端:
sudo ryu-manager rest_firewall.py

防火墙规则格式:
优先级<方向、源IP、源端口、目的IP、目的端口、动作>
运行示例代码:python anomaly_resolver.py

python main.py --path rules/example_rules_1 –detect
伪代码(r s代表了防火墙不同规则):
old rules list ← read rules from config filenew rules list ← empty listfor all r ∈ old rules list doInsert(r, new rules list)for all r ∈ new rules list **do**for all s ∈ new rules list after r **do**if r ⊂ s **then**if r.action = s.action **then**Remove r from new rules listbreak

python main.py --path rules/example_rules_1 –resolve
伪代码(r s代表了防火墙不同规则):
if new rules list is empty theninsert r into new rules listelseinserted ← falsefor all s ∈ new rules list doif r and s are not disjoint theninserted ← Resolve(r, s)if inserted = true thenbreakif inserted = false thenInsert r into new rules list

python main.py --path rules/example_rules_2 –merge
伪代码(r s代表了防火墙不同规则):
1. if r = s then
2. if r.action = s.action then
3. set s.action to REJECT and report anomaly
4. else
5. report removal of r
6. return true
7. if r ⊂ s then
8. insert r before s into new rules list and report reordering
9. return true
10. if s ⊂ r then
11. return false
12. Remove s from new rules list
13. Find set of attributes a = {x|r.x = s.x}
14. for all ai ∈ a do
15. Split(r, s, ai)
16. if r.action = s.action then
17. s.action ← REJECT
18. Insert(s, new rules list)
19. return true
20.
21.
22.
23.
24.
25.


从防火墙策略规则中解决异常流量对于网络安全至关重要,因为异常可能会引入不必要且难以发现的安全漏洞。因此,本文提出了一个自动化的过程来检测和解决这种异常。
–end–