基于Ryu 防火墙的检测和解决异常入侵的流量--实验

本文涉及的产品
云防火墙,500元 1000GB
简介: 基于Ryu 防火墙的检测和解决异常入侵的流量--实验

基于Ryu 防火墙的检测和解决异常入侵的流量

防火墙规则

规则被定义为一组标准和当数据包匹配标准时要执行的操作。Ryu防火墙规则的标准包括:元素 VLAN、优先级、输入交换机端口、以太网源、以太网目标、以太网帧类型、IP 源、IP 目标、IPv6 源、IPv6 目标、IP 协议、源端口和目标端口。这些也是OpenFlow Switch Specification 中定义的匹配字段。


防火墙规则是定义网络流量的安全策略。任何错误的规则都会让不需要的流量通过或阻止所需的流量,从而危及系统安全。


两个规则之间的关系是它们匹配的一组数据包之间的关系。假设一个规则匹配A数据包,另一个匹配B数据包。如下几种形式:

81eb1ff0cd764f13ad523a6f79f9cdfb.png



(1)不相交:规则中至少有一个标准具有完全不相交的值


(2)完全匹配:规则中的每个条件都完全匹配


(3)包含匹配:一个规则和另一个规则至少有一个标准是彼此的子集,并且对于属性的其余部分,一个等于另一个


(4)相关:两个规则不相交且不包含彼此匹配


两个规则之间可能存在的异常:


1.阴影异常:一个规则被另一个规则阴影,如果另一个规则在策略中的规则之前,另一个可以匹配规则匹配的所有数据包并且它们有不同的动作

2.相关性异常:两条规则有不同的动作,一个规则匹配一些匹配另一个的数据包,反之亦然

3.冗余异常:冗余规则对相同的数据包执行与另一个规则相同的操作

Algorithm TreeInsert该算法解决异常如下:


阴影异常:当规则完全匹配时,保留拒绝动作的那个。当规则包含匹配时,使用拒绝操作重新排序规则。

相关异常:将规则分解为不相交的部分并将它们插入列表中。在相关规则的共同部分中,保留拒绝操作的部分。

冗余异常:删除冗余规则。

实验仿真环节:

1.下载代码到本地

git clone https://github.com/ernie55ernie/Anomaly-Firewall-Rule-Detection-And-Resolution.git

938a98ed5ec148a187fa831130498bdb.png


2.安装相关依赖库

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

90507f7d096943a2848d09424faf4f91.png


3.设置openflow1.3

新开终端:


sudo ovs-vsctl set Bridge protocols=OpenFlow13

9a848678bc1b4f8e8d238d8a6226e973.png


4.启动控制器

新开终端:

sudo ryu-manager rest_firewall.py

5df10cb7589b4ef69b11448a87f7435d.png

防火墙规则格式:

优先级<方向、源IP、源端口、目的IP、目的端口、动作>
<IN, TCP, 129.110.96.117, ANY, ANY, 80, REJECT>
<IN, TCP, 129.110.96.*, ANY, ANY, 80, ACCEPT>
<IN, TCP, ANY, ANY, 129.110.96.80, 80, ACCEPT>
<IN, TCP, 129.110.96.*, ANY, 129.110.96.80, 80, REJECT>
<OUT, TCP, 129.110.96.80, 22, ANY, ANY, REJECT>
<IN, TCP, 129.110.96.117, ANY, 129.110.96.80, 22, REJECT>
<IN, UDP, 129.110.96.117, ANY, 129.110.96.*, 22, REJECT>
<IN, UDP, 129.110.96.117, ANY, 129.110.96.80, 22, REJECT>
<IN, UDP, 129.110.96.117, ANY, 129.110.96.117, 22, ACCEPT>
<IN, UDP, 129.110.96.117, ANY, 129.110.96.117, 22, REJECT>
<OUT, UDP, ANY, ANY, ANY, ANY, REJECT>

运行示例代码:python anomaly_resolver.py


9861736a38934d129ca3b377acfd4137.png


异常检测:

python main.py --path rules/example_rules_1 –detect

伪代码(r s代表了防火墙不同规则):

old rules list ← read rules from config file
new rules list ← empty list
for all r ∈ old rules list do
  Insert(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 list
            break

aa563e89ddd3416db9c6821c137b205f.png


异常解决:

python main.py --path rules/example_rules_1 –resolve

伪代码(r s代表了防火墙不同规则):

if new rules list is empty then
  insert r into new rules list
else
  inserted ← false
  for all s ∈ new rules list do
    if r and s are not disjoint then
      inserted ← Resolve(r, s)
      if inserted = true then
        break
    if inserted = false then
      Insert r into new rules list
<IN, TCP, 129.110.96.0/24, *, 129.110.96.81-255.255.255.255, 80, ALLOW>
<IN, TCP, 129.110.96.0/24, *, 0.0.0.0-129.110.96.79, 80, ALLOW>
<IN, TCP, 129.110.96.117, *, 0.0.0.0-129.110.96.79, 80, DENY>
<IN, TCP, 129.110.96.0-129.110.96.116, *, 129.110.96.80, 80, ALLOW>
<IN, TCP, 0.0.0.0-129.110.95.255, *, 129.110.96.80, 80, ALLOW>
<IN, TCP, 129.110.97.0-255.255.255.255, *, 129.110.96.80, 80, ALLOW>
<IN, TCP, 129.110.96.118-129.110.96.255, *, 129.110.96.80, 80, ALLOW>
<IN, TCP, 129.110.96.0/24, *, 129.110.96.80, 80, DENY>
<OUT, TCP, 129.110.96.80, 22, *, *, DENY>
<IN, TCP, 129.110.96.117, *, 129.110.96.80, 22, DENY>
<IN, UDP, 129.110.96.117, *, 129.110.96.0/24, 22, DENY>
<OUT, UDP, *, *, *, *, DENY>

c62b490728074ae5bfa25553adb0f3f6.png


规则合并:

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. <IN, TCP, 202.80.169.29-63, 483, 129.110.96.64-127, 100-110, ACCEPT>
21. <IN, TCP, 202.80.169.29-63, 483, 129.110.96.64-127, 111-127, ACCEPT>
22. <IN, TCP, 202.80.169.29-63, 483, 129.110.96.128-164, 100-127, ACCEPT>
23. <IN, TCP, 202.80.169.29-63, 484, 129.110.96.64-99, 100-127, ACCEPT>
24. <IN, TCP, 202.80.169.29-63, 484, 129.110.96.100-164, 100-127, ACCEPT>
25. <IN, TCP, 202.80.169.64-110, 483-484, 129.110.96.64-164, 100-127, ACCEPT>

27d391af11514c81b0fa36a22a5c3417.png


防火墙规则树:

738ee9254eb4448db38cec7fc9a515c7.png


结论

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


–end–


相关文章
|
4月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
227 0
|
6月前
|
监控 安全 网络安全
状态检测防火墙
【8月更文挑战第17天】
388 3
|
6月前
|
监控 安全 Serverless
SAE 防火墙的震撼之举:默认拦截公网一切流量,开启网络安全的无敌模式!
【8月更文挑战第7天】在数字化时代,网络安全至关重要。SAE(Serverless Application Engine,无服务器应用引擎)的防火墙功能默认阻止所有公网流量,为应用与数据提供坚实保护。这像坚固城门,将潜在威胁拒之门外,减少恶意攻击风险。如同在混沌中建立秩序,划定网络安全边界。但依赖默认设置不足,需根据业务需求配置规则,如开放特定端口或IP范围。还需持续监控防火墙效果,通过分析访问日志等手段及时调整优化,确保最佳防护效果。
96 0
|
9月前
|
弹性计算 监控 安全
通过NAT网关和云防火墙防护私网出站流量安全的最佳实践
针对云上企业出站流量安全攻击,企业可以通过采用“NAT网关+NAT边界防火墙”方案实现出向流量有效监控保护,有效降低恶意软件攻陷风险、内部人员风险、数据泄露风险、供应链风险、出站流量合规风险等
170 3
|
9月前
|
安全 网络安全 Python
【计算巢】防火墙技术:保护网络不受入侵的第一道防线
【5月更文挑战第31天】防火墙是网络安全的核心,防止未经授权的访问和攻击。它通过数据包过滤、状态检测和应用层网关等方式工作,阻止黑客入侵和病毒传播,限制内部网络对外部的不安全访问。然而,防火墙可能面临新型攻击的挑战,并不能完全防御内部威胁。Python 示例展示了数据包过滤规则的实现。有效的防火墙配置和管理至关重要,需随网络环境和安全需求变化而更新。防火墙需与其他安全技术结合,构建全面的网络安全体系。
117 0
|
9月前
|
安全 Serverless 网络安全
SAE防火墙功能默认阻止所有来自公网的流量
SAE防火墙功能默认阻止所有来自公网的流量
164 1
|
机器学习/深度学习 数据采集 安全
使用支持向量机的基于异常的入侵检测系统
使用支持向量机的基于异常的入侵检测系统
|
安全 测试技术 网络安全
网站用什么IDS防火墙防入侵等黑客攻击问题
IDS防火墙无法发现的威胁,入侵检测系统善于捕获已知的显式恶意攻击。而一些专家会说,一个正确定义的ids可以捕获任何安全威胁,包括事实上最难发现和预防的滥用事件。例如,如果外部黑客使用社会工程技术获得CEO密码,许多入侵检测系统将不会注意到。如果站点管理员无意中向世界公共目录提供机密文件,ids将不会注意到。如果攻击者使用默认密码管理帐户,则应在系统安装后更改账户,而入侵检测系统很少注意到。如果黑客进入网络并复制秘密文件,id也很难被注意到。这并不是说ids不能用来检测前面提到的每一个错误事件,但是它们比直接攻击更难检测。攻击者绕过ids的最有效方法是在许多层(第二、第三和第七层)中加密数据。
249 0
网站用什么IDS防火墙防入侵等黑客攻击问题
|
2月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
3月前
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
61 0