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

  • 基于Ryu 防火墙的检测和解决异常入侵的流量
    • 防火墙规则
    • 实验仿真环节:
      • 1.下载代码到本地
      • 2.安装相关依赖库
      • 3.设置openflow1.3
      • 4.启动控制器
        • 异常检测:
        • 异常解决:
        • 规则合并:
      • 防火墙规则树:
    • 结论

申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计4577字,阅读大概需要3分钟
欢迎关注我的个人公众号:不懂开发的程序猿

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

防火墙规则

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

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

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

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

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

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

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

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

  • 1.阴影异常:一个规则被另一个规则阴影,如果另一个规则在策略中的规则之前,另一个可以匹配规则匹配的所有数据包并且它们有不同的动作
  • 2.相关性异常:两条规则有不同的动作,一个规则匹配一些匹配另一个的数据包,反之亦然
  • 3.冗余异常:冗余规则对相同的数据包执行与另一个规则相同的操作

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

  • 阴影异常:当规则完全匹配时,保留拒绝动作的那个。当规则包含匹配时,使用拒绝操作重新排序规则。
  • 相关异常:将规则分解为不相交的部分并将它们插入列表中。在相关规则的共同部分中,保留拒绝操作的部分。
  • 冗余异常:删除冗余规则。

实验仿真环节:

1.下载代码到本地

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

2.安装相关依赖库

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

3.设置openflow1.3

新开终端:

sudo ovs-vsctl set Bridge protocols=OpenFlow13

4.启动控制器

新开终端:

sudo ryu-manager rest_firewall.py

防火墙规则格式:

优先级<方向、源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

异常检测:

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
<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>

规则合并:

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>

防火墙规则树:

结论

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

–end–

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

  1. 基于视频的能见度检测,解决高速公路团雾的困扰

    2017年,发生在滁新高速公路安徽阜阳段的30辆车连撞事故,让大家对团雾的危害有了更深刻的认识.日常大家很少听说团雾,但是在高速公路上遇到团雾有多可怕呢?假设车辆以100公里的速度行驶,突然进入能见度 ...

  2. 基于集成融合模型检测电商异常订单

    目录 一.摘要 二.数据探索 三.数据预处理 3.1 缺失值处理 3.2 重复值处理 3.3 异常值处理 四.特征工程 4.1 建立benchmark 4.2 划分训练集和测试集 4.3 订单时间 4 ...

  3. 【阅读论文】基于统计特征的无监督时间序列异常检测方法

    文章目录 摘要 1.介绍 2.相关工作 3.问题描述 4.方法 4.1 统计特征 4.2提取特征总结 4.3 学习阶段算法 4.4测试阶段算法 5.结果 5.1 YOB评价:单变量 5.3对合成数据集 ...

  4. 自编码器AutoEncoder解决异常检测问题

    自编码器AutoEncoder解决异常检测问题 一. 自编码器(Auto-Encoder)介绍 1. AE算法的原理 2. AE算法的作用 3. AE算法的优缺点 二. 自编码器AutoEncoder ...

  5. 基于Autoencoder的反欺诈数据集的异常检测

    Autoencoder算法是一种常见的基于神经网络的无监督学习降维方法(其他常见降维方法). 本教程中,我们利用python keras实现Autoencoder,并在信用卡欺诈数据集上进行异常检测算 ...

  6. 应用高斯分布来解决异常检测问题(一)

    应用高斯分布来解决异常检测问题(一) 参考文章: (1)应用高斯分布来解决异常检测问题(一) (2)https://www.cnblogs.com/activeshj/p/3954213.html 备 ...

  7. 基于ABP的应用执行Update-Database出现异常的解决办法

    基于ABP的应用执行Update-Database出现异常的解决办法 参考文章: (1)基于ABP的应用执行Update-Database出现异常的解决办法 (2)https://www.cnblog ...

  8. 基于自适应巡视算法的工业物联网异常行为检测

    [摘  要]针对当前物联网节点易受攻击的问题,提出一种基于自适应巡视算法的工业物联网异常行为检测方法.根据数据包完整性.数据包传输率和传输延迟等异常行为动态更新物联网节点信誉度,结合信誉阈值自适应调整 ...

  9. 基于Matlab模拟、检测和跟踪飞机着陆进场中异常的仿真(附源码)

    目录 一.介绍 二.生成和标记轨迹 三.定义方案 四.运行方案并检测异常轨道 五.将跟踪异常报告与事实进行比较 六.总结 七.程序 该示例显示了如何自动检测最终接近机场跑道的飞机的偏差和异常.在此示例 ...

最新文章

  1. HTML5学习笔记简明版(2):新元素之section,article,aside
  2. 【MM】需求类型清单
  3. CentOS6中怎样将jdk1.7升级到1.8
  4. 打开有视频的文件夹~~当遇到某些特定的视屏格式就会出现Activemovie Window:Explorer.EXE-应用程序错误
  5. C# WPF图表控件之ChartControl用法指南①
  6. 新手程序员不知道的小技巧!
  7. 计算机应用技术专业考试试题,全国专业技术人员计算机应用能力考试模拟试题笔试题.docx...
  8. 不固定个数的子元素自适应居中
  9. 3种云桌面(VDI、IDV、VOI)技术解决方案简介
  10. 斯伦贝谢好进吗_拼集市 环球购30%智商税你还交吗
  11. win11改win10重装系统教程图解
  12. css+html投票系统,网上在线投票系统的设计与实现.doc
  13. 魔兽世界 圣骑士唯一的远程武器任务
  14. eclipes安装lombok
  15. osgEarth测高程方法
  16. hashmap底层源码详解
  17. gets()函数的缺陷,引入fgets()函数
  18. MySQL是如何执行一条SQL更新语句
  19. 接口测试的流程和步骤,主要测试哪些方面,测试工具,测试用例,以及测试框架
  20. 卡方值c 语言编程,amos的操作步骤与程序

热门文章

  1. DataGrip数据库配置导出步骤
  2. Caffe--应用实践
  3. armv8 ARM64 AARCH64
  4. 输出二叉查找树poj 2418 二叉查找树
  5. jQuery学习理解(详细)
  6. 如何使用miniconda(小白入门版)
  7. 计算机考研要考java吗_计算机二级考JAVA还是C?
  8. conemu 打开wsl 报错
  9. 神经平面分布图怎么看,面部神经网络 分布图
  10. Grafana面板(panel):从数据源请求数据