当前位置: 首页 > article >正文

智能物联网网关策略部署

在这里插入图片描述

实训背景

某智慧工厂需部署物联网网关,实现以下工业级安全管控需求:

  1. 设备准入控制:仅允许注册MAC地址的传感器接入(白名单:AA:BB:CC:DD:EE:FF)。
  2. 协议合规性:禁止非Modbus TCP(端口502)的工业协议流量。
  3. 时段策略:限制摄像头设备(IP段192.168.40.100-150)仅在08:00-18:00传输视频流(RTSP 554端口)。
  4. MQTT安全:加密MQTT流量(8883端口)且仅允许Topic为/sensor/#的消息发布。

环境准备

硬件/软件要求
  • 四台设备
    1. 网关服务器:双网卡(eth0: 外网,eth1: 内网192.168.40.1)
    2. PLC控制器:MAC=AA:BB:CC:DD:EE:FF,IP=192.168.40.10,运行Modbus TCP
    3. 摄像头:IP=192.168.40.120,运行RTSP服务
    4. MQTT Broker:IP=192.168.40.200,端口8883(TLS)
  • 操作系统:Debian 11(内核≥5.10)
  • 工具iptablesebtablescrontcpdumpmosquitto_pub
网络拓扑
外网 (eth0)  ↓  
网关服务器 (eth1:192.168.40.1)  ↓  
工业内网 (192.168.40.0/24)  ├── PLC控制器 (192.168.40.10)  ├── 摄像头 (192.168.40.120)  └── MQTT Broker (192.168.40.200)  

实训步骤


任务1:MAC白名单准入控制

目标:仅允许授权设备通过二层过滤接入网络。

  1. 配置ebtables MAC过滤

    ebtables -A INPUT -s ! AA:BB:CC:DD:EE:FF -j DROP  
    ebtables -A FORWARD -s ! AA:BB:CC:DD:EE:FF -j DROP  
    
  2. 绑定IP与MAC(防ARP欺骗)

    arp -s 192.168.40.10 AA:BB:CC:DD:EE:FF  
    

验证

  • 使用未授权设备(MAC=00:11:22:33:44:55)尝试ping网关,应不通。

任务2:工业协议合规性过滤

目标:放行Modbus TCP,阻断其他工业协议(如EtherNet/IP 44818端口)。

  1. 允许Modbus TCP流量

    iptables -A FORWARD -p tcp --dport 502 -j ACCEPT  
    
  2. 阻断非常规工业端口

    iptables -A FORWARD -p tcp -m multiport --dports 44818,47808,1911 -j DROP  
    

验证

  • 在PLC控制器运行Modbus客户端,流量应正常。
  • 尝试通过端口44818通信,触发tcpdump -i eth1 port 44818无数据。

任务3:摄像头时段策略控制

目标:通过时间模块限制视频流传输时段。

  1. 安装iptables时间模块

    apt install iptables-dev  
    modprobe xt_time  
    
  2. 配置时间策略规则

    iptables -A FORWARD -s 192.168.40.120 -p tcp --dport 554 -m time --timestart 08:00 --timestop 18:00 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT  
    iptables -A FORWARD -s 192.168.40.120 -p tcp --dport 554 -j LOG --log-prefix "[CAMERA BLOCKED] "  
    iptables -A FORWARD -s 192.168.40.120 -p tcp --dport 554 -j DROP  
    

验证

  • 在19:00执行curl rtsp://192.168.40.120:554,应失败并在/var/log/syslog中记录日志。

任务4:MQTT流量深度管控

目标:限制MQTT Topic并强制TLS加密。

  1. 允许加密MQTT流量

    iptables -A FORWARD -p tcp --dport 8883 -j ACCEPT  
    iptables -A FORWARD -p tcp --dport 8883 ! --tcp-flags SYN,ACK,FIN,RST ACK -j DROP  # 过滤非加密握手  
    
  2. 基于字符串匹配过滤Topic

    iptables -A FORWARD -p tcp --dport 8883 -m string --string "/sensor/" --algo bm --to 65535 -j ACCEPT  
    iptables -A FORWARD -p tcp --dport 8883 -j DROP  
    

验证

  • 合法发布:mosquitto_pub -t /sensor/temp -m "25" -h 192.168.40.200 -p 8883 --cafile ca.crt 应成功。
  • 非法发布:mosquitto_pub -t /control/light -m "on" 应被拒绝。

实训总结

通过本案例,您已掌握以下工业物联网安全技能:

  1. 使用ebtables实现二层设备准入控制。
  2. 基于端口和协议特征的工业流量过滤。
  3. 利用xt_time模块实现时间维度策略。
  4. 通过字符串匹配实现MQTT Topic级管控。

知识要点

要点说明
ebtables二层MAC过滤工具,需与iptables配合使用
xt_time模块支持按时间/日期匹配流量
字符串匹配-m string实现应用层协议内容过滤
工业协议特征Modbus TCP=502, EtherNet/IP=44818
MQTT安全TLS加密+Topic白名单双保险

扩展挑战

  1. 集成Suricata实现工业协议深度检测(DPI)。
  2. 使用CONNMARK标记实现跨VLAN设备联动控制。
  3. 部署ELK Stack实现安全事件可视化分析。

相关文章:

智能物联网网关策略部署

实训背景 某智慧工厂需部署物联网网关,实现以下工业级安全管控需求: 设备准入控制:仅允许注册MAC地址的传感器接入(白名单:AA:BB:CC:DD:EE:FF)。协议合规性:禁止非Modbus TCP(端口…...

神经网络语言模型与统计语言模型的比较

神经网络语言模型(Neural Language Models, NLMs)与统计语言模型(Statistical Language Models, SLMs)是自然语言处理(NLP)中两类核心的语言建模方法,其核心差异体现在建模方式、表示能力、数据…...

Java学习总结-线程池

线程池是什么? 线程池就是一个可以复用线程的技术。 假若不用线程池的问题:创建新线程开销很大,不能来一个任务就就创建一个新线程。 如何创建线程池对象? 方法一:使用ExecutorService的实现类ThreadPoolExecutor创…...

Android 中绕过hwbinder 实现跨模块对audio 的HAL调用

需求 Audio 模块中专门为 TV 产品添加了一些代码,需要在 hdmi 的 HAL 代码中进行调用以完成某些功能。 解决方法 首先将 hdmi HAL 要调用的 audio 接口函数所在的 .so 链接到最基本的 lib.primay.amlogic.so 中(其它平台上这个 .so 文件的名字也可能是…...

【DB2】事务日志满/归档占用较大问题处理记录

某DB2环境经常报错The active log is full and is held by...,并且归档磁盘占用较大 事务日志满 事务日志满可以理解为Oracle的redo追尾,即业务写入量大于redo刷盘速度,这时候其他SQL会陷入等待,容易造成性能问题 一般由两方面原…...

基于CNN-BiLSTM-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码

一、深度Q网络(Deep Q-Network,DQN)介绍 1、背景与动机 深度Q网络(DQN)是深度强化学习领域的里程碑算法,由DeepMind于2013年提出。它首次在 Atari 2600 游戏上实现了超越人类的表现,解决了传统…...

CVE-2025-29927 Next.js 中间件鉴权绕过漏洞

Next.js Next.js 是一个基于 React 的现代 Web 开发框架,用来构建高性能、可扩展的 Web 应用和网站。 CVE-2025-29927 Next.js 中间件鉴权绕过漏洞 CVE-2025-29927是Next.js框架中的一个授权绕过漏洞,允许攻击者通过特制的HTTP请求绕过在中间件中执行…...

数据结构(五)——AVL树(平衡二叉搜索树)

目录 前言 AVL树概念 AVL树的定义 AVL树的插入 右旋转 左旋转 左右双旋 右左双旋 插入代码如下所示 AVL树的查找 AVL树的遍历 AVL树的节点个数以及高度 判断平衡 AVL树代码如下所示 小结 前言 前面我们在数据结构中介绍了二叉搜索树,其中提到了二叉搜…...

C++类型转换详解

目录 一、内置 转 内置 二、内置 转 自定义 三、自定义 转 内置 四、自定义 转 自定义 五、类型转换规范化 1.static_case 2.reinterpret_cast 3.const_cast 4.dynamic_cast 六、RTTI 一、内置 转 内置 C兼容C语言,在内置类型之间转换规则和C语言一样的&am…...

【前端】【React】性能优化三件套useCallback,useMemo,React.memo

一、总览:性能优化三件套 useCallback(fn, deps):缓存函数,避免每次渲染都新建函数。useMemo(fn, deps):缓存值(计算结果),避免重复执行计算。React.memo(Component):缓存组件的渲染…...

excel数据透视表大纲格式改为表格格式

现有这样一个数据透视表: 想要把他变成这样的表格格式: 操作步骤: 第一步: 效果: 第二步: 效果: 去掉分类汇总: 效果: 去掉展开/折叠按钮: 操作方式&#xf…...

pycharm中安装Charm-Crypto

一、安装依赖 1、安装gcc、make、perl sudo apt-get install gcc sudo apt-get install make sudo apt-get install perl #检查版本 gcc -v make -v perl -v 2、安装依赖库m4、flex、bison(如果前面安装过pypbc的话,应该已经装过这些包了) sudo apt-get update sudo apt…...

天梯集训+代码打卡笔记整理

1.着色问题 直接标注哪些行和列是被标注过的&#xff0c;安全格子的数量就是未标注的行*列 #include <bits/stdc.h> using namespace std;const int N 1e510; int hang[N],lie[N];int main(){int n,m;cin>>n>>m;int q;cin>>q;while(q--){int x,y;ci…...

python基础语法:缩进规则

Python 的缩进规则是其语法的重要组成部分&#xff0c;它通过缩进来表示代码块的层次结构&#xff0c;而不是像其他语言&#xff08;如 C 或 Java&#xff09;那样使用大括号 {}。以下是 Python 缩进规则的详细说明&#xff1a; 1. 缩进的基本规则 代码块的标识&#xff1a;Pyt…...

支付系统设计入门:核心账户体系架构

&#x1f449;目录 1 账户记账理论 2 账户设计 3 账户性能问题 4 账户核心架构 5 小结 第三方支付作为中立的第三方&#xff0c;截断了用户和商户的资金流&#xff0c;资金先从用户账户转移到第三方支付平台账户&#xff0c;得到双方确认后再从支付平台账户转移到商户账户。 支…...

[LevelDB]Block系统内幕解析-元数据块(Meta Block)元数据索引块(MetaIndex Block)索引块(Index Block)

本文内容组织形式 Block的基本信息作用示意图举例说明 源码解析Footer格式写入&读取编码&解码 元数据块&#xff08;Meta Block&#xff09;构建&读取 元数据索引块构建&读取 索引块定义构建&读取核心方法-FindShortestSeparator&FindShortSuccessor作…...

leetcode:905. 按奇偶排序数组(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;将 nums 中的的所有偶数元素移动到数组的前面&#xff0c;后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1&#xff1a; 输入&#xff1a;nums [3,1,2,4] 输出&#xff1a;[2,4,3,1] 解释&#xff1a…...

抖音视频下载工具

抖音视频下载工具 功能介绍 这是一个基于Python开发的抖音视频下载工具&#xff0c;可以方便地下载抖音平台上的视频内容。 主要特点 支持无水印视频下载自动提取视频标题作为文件名显示下载进度条支持自动重试机制支持调试模式 使用要求 Python 3.10Chrome浏览器必要的P…...

断言与反射——以golang为例

断言 x.(T) 检查x的动态类型是否是T&#xff0c;其中x必须是接口值。 简单使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二个参数就是OK,这…...

【家政平台开发(27)】商务部信用对接、法律咨询与视频面试功能开发全攻略

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...

【数据结构】排序算法(下篇·开端)·深剖数据难点

前引&#xff1a;前面我们通过层层学习&#xff0c;了解了Hoare大佬的排序精髓&#xff0c;今天我们学习的东西可能稍微有点难度&#xff0c;因此我们必须学会思想&#xff0c;我很受感慨&#xff0c;借此分享一下&#xff1a;【用1520分钟去调试】&#xff0c;如果我们遇到了任…...

山东大学软件学院创新项目实训开发日志(9)之测试前后端连接

在正式开始前后端功能开发前&#xff0c;在队友的帮助下&#xff0c;成功完成了前后端测试连接&#xff1a; 首先在后端编写一个测试相应程序&#xff1a; 然后在前端创建vue 并且在index.js中添加一下元素&#xff1a; 然后进行测试&#xff0c;测试成功&#xff1a; 后续可…...

【VUE3】Eslint 与 Prettier 的配置

目录 0 前言 1 VSCode 中的 Eslint 与 prettier 插件 2 两种方案 3 eslint.config.js 4 eslint-plugin-prettier 插件 5 eslint-config-prettier 插件 6 安装插件命令 7 其他配置 8 参考资料 0 前言 黑马程序员视频地址&#xff1a;160-Vue3大事件项目-ESlint配合P…...

蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】

【背景说明】本文的作者是一名算法竞赛小白&#xff0c;在第一次参加蓝桥杯之前希望整理一下自己会了哪些算法&#xff0c;于是有了本文的诞生。分享在这里也希望与众多学子共勉。如果时间允许的话&#xff0c;这一系列会分为上中下三部分和大家见面&#xff0c;祝大家竞赛顺利…...

springboot调用python文件,python文件使用其他dat文件,适配windows和linux,以及docker环境的方案

介绍 后台是用springboot技术&#xff0c;其他同事做的算法是python&#xff0c;现在的需求是springboot调用python&#xff0c;python又需要调用其他的数据文件&#xff0c;比如dat文件&#xff0c;这个文件是app通过蓝牙获取智能戒指数据以后&#xff0c;保存到后台&#xf…...

GSO-YOLO:基于全局稳定性优化的建筑工地目标检测算法解析

论文地址:https://arxiv.org/pdf/2407.00906 1. 论文概述 《GSO-YOLO: Global Stability Optimization YOLO for Construction Site Detection》提出了一种针对建筑工地复杂场景优化的目标检测模型。通过融合全局优化模块(GOM)​、稳定捕捉模块(SCM)​和创新的AIoU损失函…...

Python 中使用单例模式

有这么一种场景&#xff0c;Web服务中有一个全局资源池&#xff0c;在需要使用的地方就自然而言引用该全局资源池即可&#xff0c;此时可以将该资源池以单例模式实现。随后&#xff0c;需要为某一特殊业务场景专门准备一个全局资源池&#xff0c;于是额外复制一份代码新建了一个…...

系统思考—提升解决动态性复杂问题能力

感谢合作伙伴的信任推荐&#xff01; 客户今年的人才发展重点之一&#xff0c;是提升管理者应对动态性、复杂性问题的能力。 在深入交流后&#xff0c;系统思考作为关键能力模块&#xff0c;最终被纳入轮训项目——这不仅是一次培训合作&#xff0c;更是一场共同认知的跃迁&am…...

Java基础 - 反射(2)

文章目录 示例5. 通过反射获得类的private、 protected、 默认访问修饰符的属性值。6. 通过反射获得类的private方法。7. 通过反射实现一个工具BeanUtils&#xff0c; 可以将一个对象属性相同的值赋值给另一个对象 接上篇&#xff1a; 示例 5. 通过反射获得类的private、 pro…...

Python proteinflow 库介绍

ProteinFlow是一个开源的Python库,旨在简化蛋白质结构数据在深度学习应用中的预处理过程。以下是其详细介绍: 功能 数据处理:支持处理单链和多链蛋白质结构,包括二级结构特征、扭转角等特征化选项。 数据获取:能够从Protein Data Bank (PDB)和Structural Antibody Databa…...