25、工业防火墙 - 工控网络保护 (模拟) - /安全与维护组件/industrial-firewall-dcs-protection

76个工业组件库示例汇总

工业防火墙 - 工控网络保护 (模拟)

概述

这是一个交互式的 Web 组件,旨在模拟工业防火墙在保护关键工控网络(特别是 DCS - 分布式控制系统)免受网络攻击(如勒索软件传播)方面的核心功能。组件通过可视化简化的网络拓扑、模拟网络流量、应用防火墙规则,并记录流量日志和安全告警,来演示基本的网络安全防护概念。

请注意:这是一个高度简化的前端模拟演示,不执行真实的防火墙策略或网络数据包分析。所有网络流量、攻击模式、规则匹配和阻止行为都是基于预设逻辑和随机性在浏览器端模拟生成的。

主要功能

  • 网络拓扑可视化 (简化):
    • 展示典型的工业网络分层结构:IT 网络DMZ (隔离区)OT 网络 (DCS)
    • 清晰标示防火墙在 IT/DMZ 之间和 DMZ/OT 之间的位置。
    • 通过简单的动画点模拟网络流量在区域间的流动(绿色表示允许,红色表示被阻止)。
  • 防火墙规则列表 (概念性):
    • 展示一组典型的工业防火墙规则示例,涵盖允许特定工控协议(S7, Modbus, EtherNet/IP)在 OT 网络内部或从受信任源(如 DMZ 特定服务器)访问,以及阻止高风险协议(如 SMB, RDP)跨区域传输或拒绝来自 IT 的直接访问 OT 等。
    • 显示规则的描述和状态(启用/禁用,当前均为启用)。
    • 提供规则搜索功能。
  • 实时流量日志:
    • 以表格形式实时记录模拟的网络流量事件。
    • 包含信息:时间戳、源区域/IP (简化)、目标区域/IP (简化)、协议/端口、防火墙动作(ALLOW / BLOCK)。
    • 允许/阻止的动作以不同颜色高亮显示。
    • 提供按动作(允许/阻止)和区域(IT/DMZ/OT)过滤流量日志的功能。
  • 安全告警日志 (阻止攻击):
    • 当防火墙根据规则阻止了模拟的攻击流量(如来自 IT 的 SMB 访问 OT、外部网络扫描 OT 端口、IT 到 OT 的 RDP 尝试)时,在此面板生成安全告警。
    • 告警信息包含时间戳、检测到的攻击类型、源/目标信息以及被触发的阻止规则(概念性)。
    • 提供清除当前告警列表的功能。
  • 防火墙状态指示:
    • 页眉实时显示防火墙的整体状态:ACTIVE (运行中), WARNING (警告,暂未使用), ATTACK BLOCKED (检测到并阻止攻击)。
    • 当有攻击被阻止时,状态变为 ATTACK BLOCKED,并出现一个醒目的红色告警徽章。
  • 界面风格: 采用苹果科技工业风格,三栏布局,强调安全、监控和信息的清晰展示,支持响应式设计。

如何使用

  1. 打开页面: 在浏览器中打开 index.html
  2. 观察拓扑与规则: 在左侧面板查看简化的网络拓扑和防火墙规则列表。
  3. 监控实时流量: 在中间面板观察实时生成的网络流量日志。注意区分允许 (绿色标识) 和阻止 (红色标识) 的流量。
  4. 过滤流量: 使用流量日志上方的下拉菜单按动作(允许/阻止)或区域进行过滤,以关注特定类型的流量。
  5. 识别攻击与告警:
    • 观察是否有红色的阻止流量出现在日志中,特别是那些涉及高风险协议(如 SMB)或跨越 IT/OT 边界的流量。
    • 当模拟的攻击流量被阻止时,右侧"安全告警"面板会新增一条告警记录。
    • 同时,页眉的状态指示灯会变红闪烁,文字变为"检测到并阻止攻击!",并出现红色告警徽章 !
  6. 查看告警详情: 阅读右侧面板中的告警信息,了解模拟的攻击类型、来源、目标和阻止原因。
  7. 清除告警: 点击告警面板右上角的"清除告警"按钮,将清空告警列表,页眉状态也会恢复(如果之后没有新的攻击被阻止)。
  8. 搜索规则: 在规则列表上方的搜索框输入关键字过滤规则描述。

模拟细节

  • 网络区域与 IP: 定义了 IT, DMZ, OT 三个区域,并为每个区域设定了简化的代表性 IP 地址或地址段。
  • 协议: 定义了一系列常见 IT 和 OT 协议及其标准端口和概念性风险等级。
  • 防火墙规则: 预设了一组规则,采用自顶向下、首个匹配即生效的简化逻辑。规则包含源/目标区域、源/目标 IP (支持 ‘any’ 和简单的地址段匹配)、协议和动作 (allow/block)。包含了一些关键的默认阻止规则,如阻止 IT->OT 直接访问、阻止跨区域 SMB 等。
  • 流量生成: 定时生成"正常"流量,模拟允许的通信模式(如 OT 内部通信、IT 访问 DMZ、受限的 DMZ 访问 OT)。
  • 攻击模拟: 以较低频率随机生成几种典型的攻击流量:
    • 勒索软件传播尝试: IT -> OT 的 SMB 流量。
    • 网络扫描尝试: 外部 IP -> OT 的未知高位端口流量。
    • 未授权访问尝试: IT -> OT 的 RDP 流量。
  • 流量处理: 每条生成的流量(无论正常或攻击)都会经过规则匹配逻辑,确定最终动作 (allow/block)。
  • 告警触发: 当攻击类型的流量被规则阻止时,触发安全告警。
  • 状态更新: 防火墙全局状态根据是否有攻击被阻止来更新。
  • 流量可视化: 通过在网络拓扑图上动态添加和移除 CSS 动画的"点"来模拟流量,点的颜色和动画路径/终点根据允许/阻止状态变化。

文件结构

安全与维护组件/industrial-firewall-dcs-protection/
├── index.html         # 组件的 HTML 结构
├── styles.css         # 组件的 CSS 样式 
├── script.js          # 组件的 JavaScript 逻辑 (模拟流量, 规则匹配, 攻击防御)
└── README.md          # 本说明文件

技术栈

  • HTML5
  • CSS3 (使用了 CSS 变量, Grid 布局, Flexbox, 动画, 媒体查询)
  • JavaScript (原生 JS, 无外部库依赖)

效果展示

在这里插入图片描述

源码

index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>工业防火墙 - 工控网络保护</title><link rel="stylesheet" href="styles.css">
</head>
<body><div class="firewall-container"><header class="main-header"><h1>工业防火墙 - DCS 网络保护</h1><div class="header-status"><span class="status-indicator" id="firewallStatusIndicator"></span><span id="firewallStatusText">初始化中...</span><span class="attack-blocked-badge is-hidden" id="attackBlockedBadge">!</span></div></header><main class="main-content"><!-- Column 1: Topology & Rules --><section class="topology-rules-panel panel"><div class="topology-section"><h2><i class="icon icon-network"></i> 网络拓扑与防火墙</h2><div class="network-topology" id="networkTopology"><div class="zone it-zone">IT 网络</div><div class="zone dmz-zone">DMZ</div><div class="zone ot-zone">OT 网络 (DCS)</div><div class="firewall-line fw-it-dmz"></div><div class="firewall-icon fw-it-dmz-icon">FW</div><div class="firewall-line fw-dmz-ot"></div><div class="firewall-icon fw-dmz-ot-icon">FW</div><!-- Traffic paths/dots added by JS/CSS --></div></div><div class="rules-section"><h2><i class="icon icon-rules"></i> 防火墙规则 (概念)</h2><div class="panel-toolbar"><input type="search" id="ruleSearch" placeholder="搜索规则..."><span class="rule-count" id="ruleCount">加载中...</span></div><ul id="firewallRuleList" class="rule-list"><li class="placeholder">加载规则中...</li><!-- Rules populated by JS --></ul></div></section><!-- Column 2: Live Traffic Log --><section class="traffic-log-panel panel"><h2><i class="icon icon-traffic"></i> 实时流量日志</h2><div class="panel-toolbar"><select id="trafficFilterAction"><option value="all">所有动作</option><option value="allowed">允许</option><option value="blocked">阻止</option></select><select id="trafficFilterZone"><option value="all">所有区域</option><option value="IT">IT</option><option value="DMZ">DMZ</option><option value="OT">OT</option></select></div><div class="traffic-table-container"><table id="trafficLogTable"><thead><tr><th>时间</th><th>源区域/IP</th><th>目标区域/IP</th><th>协议/端口</th><th>动作</th></tr></thead><tbody id="trafficLogTBody"><tr class="placeholder-row"><td colspan="5">等待流量数据...</td></tr><!-- Traffic logs populated by JS --></tbody></table></div></section><!-- Column 3: Security Alerts Log --><section class="alerts-log-panel panel"><h2><i class="icon icon-shield"></i> 安全告警 (已阻止攻击)</h2><div class="panel-toolbar"><button class="action-button clear-alerts-btn" id="clearAlertsBtn"><i class="icon icon-clear"></i> 清除告警</button><span class="alert-count" id="alertCount">0 条告警</span></div><ul id="alertLogList" class="alert-log-list"><li class="placeholder">暂无安全告警</li><!-- Alerts populated by JS --></ul></section></main><footer class="main-footer"><p>&copy; 2024 工业防火墙模拟系统. 概念演示.</p></footer></div><script src="script.js"></script>
</body>
</html> 

styles.css

:root {--bg-color-light: #f9f9f9;--bg-color-container: #ffffff;--header-bg: #f5f5f7;--panel-bg: #ffffff;--border-color: #d1d1d6; /* Slightly darker border for structure */--border-color-subtle: #e5e5ea;--text-primary: #1d1d1f;--text-secondary: #515154;--text-label: #6e6e73;--accent-blue: #007aff;--accent-green: #34c759;--accent-orange: #ff9500;--accent-red: #ff3b30;--accent-teal: #5ac8fa; /* For network elements */--accent-grey: #8e8e93;--status-active: var(--accent-green);--status-warning: var(--accent-orange);--status-error: var(--accent-red); /* Could be used for FW error */--status-attack-blocked: var(--accent-red);--action-allowed: var(--accent-green);--action-blocked: var(--accent-red);--rule-enabled: var(--accent-green);--rule-disabled: var(--accent-grey);--zone-it-bg: rgba(0, 122, 255, 0.05);--zone-dmz-bg: rgba(255, 149, 0, 0.05);--zone-ot-bg: rgba(52, 199, 89, 0.05);--list-item-hover-bg: #f0f0f0;--table-row-hover-bg: #f5faff;--input-bg: #f0f2f5;--input-border: transparent;--input-focus-border: var(--accent-blue);--placeholder-text: #aaaaaa;--shadow-color: rgba(0, 0, 0, 0.05);--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-monospace: "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--border-radius: 8px;--border-radius-small: 4px;--transition-speed: 0.2s;
}* {box-sizing: border-box;margin: 0;padding: 0;
}body {font-family: var(--font-family);background-color: var(--bg-color-light);color: var(--text-primary);line-height: 1.4;overflow-x: hidden;
}.firewall-container {max-width: 1800px;margin: 1rem auto;background-color: var(--bg-color-container);border-radius: var(--border-radius);box-shadow: 0 4px 12px var(--shadow-color);overflow: hidden;display: flex;flex-direction: column;height: calc(100vh - 2rem); /* Limit height */min-height: 700px; /* Minimum reasonable height */
}/* Header */
.main-header {background-color: var(--header-bg);padding: 0.75rem 1.5rem;border-bottom: 1px solid var(--border-color);flex-shrink: 0;display: flex;justify-content: space-between;align-items: center;
}.main-header h1 {font-size: 1.3rem;font-weight: 600;color: var(--text-primary);
}.header-status {display: flex;align-items: center;gap: 0.5rem;font-size: 0.9rem;color: var(--text-secondary);
}.status-indicator {width: 12px;height: 12px;border-radius: 50%;background-color: var(--accent-grey); /* Initial */transition: background-color var(--transition-speed);
}.status-indicator.active {background-color: var(--status-active);
}.status-indicator.warning {background-color: var(--status-warning);animation: pulse-orange 1.5s infinite ease-in-out;
}.status-indicator.attack-blocked {background-color: var(--status-attack-blocked);animation: pulse-red 1s infinite ease-in-out;
}.attack-blocked-badge {display: inline-flex;align-items: center;justify-content: center;width: 18px;height: 18px;border-radius: 50%;background-color: var(--status-attack-blocked);color: white;font-size: 0.8rem;font-weight: bold;margin-left: 0.2rem;animation: badge-pop 0.5s ease-out;
}.attack-blocked<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kotlin flow的两种SharingStarted策略的区别

一 两种 SharingStarted 策略的区别&#xff1a; SharingStarted.Eagerly: 立即开始收集上游流&#xff0c;即使没有下游订阅者持续保持活跃状态&#xff0c;直到 ViewModel 被清除优点&#xff1a;响应更快&#xff0c;数据始终保持最新缺点&#xff1a;消耗更多资源&#x…

Windows_RustRover Rust语言开发环境构建

Windows_RustRover Rust语言开发环境构建 一、Rust语言简介&#xff08;一&#xff09;起源与发展&#xff08;二&#xff09;语言特点&#xff08;三&#xff09;应用场景&#xff08;四&#xff09;社区与生态 二、RustRover&#xff08;一&#xff09;主要功能&#xff08;二…

XCOSnTh-fatfsShell

#include "XCOSnTh.h" #include "ff.h" #include "stdio.h" static char pwd[1024]"1:"; static char pwdCount2; FRESULT lsExe(char *path,int(*printf)(const char* format, ...)) {FRESULT res;DIR dir;FILINFO fno;// 打开根目录…

篇章十 消息持久化(二)

目录 1.消息持久化-创建MessageFileManger类 1.1 创建一个类 1.2 创建关于路径的方法 1.3 定义内部类 1.4 实现消息统计文件读写 1.5 实现创建消息目录和文件 1.6 实现删除消息目录和文件 1.7 实现消息序列化 1. 消息序列化的一些概念&#xff1a; 2. 方案选择&#xf…

中间件-seata

分布式事务seata 角色组成角色指责AT模式TCC模式 角色组成 TC&#xff1a;事务协调者&#xff0c;维护全局和分支事务的状态&#xff0c;驱动全局事务提交或回滚。TM&#xff1a;事务管理者&#xff0c;定义全局事务的范围&#xff1a;开始全局事务、提交或回滚全局事务。RM&am…

python代码绘制某只股票最近90天的K线图、均线、量能图

运行代码&#xff0c;要求输入股票代码和名称&#xff0c;其他参数可省略 import akshare as ak import matplotlib.pyplot as plt import pandas as pd import mplfinance as mpf import matplotlib.dates as mdates import numpy as np import os from datetime import date…

Xilinx 7Series\UltraScale 在线升级FLASH STARTUPE2和STARTUPE3使用

一、FPGA 在线升级 FPGA 在线升级FLASH时&#xff0c;一般是通过逻辑生成SPI接口操作FLASH&#xff0c;当然也可以通过其他SOC经FPGA操作FLASH&#xff0c;那么FPGA就要实现在启动后对FLASH的控制。 对于7Series FPGA&#xff0c;只有CCLK是专用引脚&#xff0c;SPI接口均为普…

Azure 应用服务中的异常处理、日志记录和通知:综合指南

简介 Azure 应用服务是基于云的应用程序&#xff0c;使开发人员能够在云上构建、部署和管理应用程序。与任何应用程序一样&#xff0c;制定适当的异常处理、日志记录和通知实践至关重要&#xff0c;以确保应用程序平稳运行&#xff0c;并快速识别和解决任何问题。在本篇博文中&…

Java 应用如何实现 HTTPS:加密数据传输的实用指南

Java 应用如何实现 HTTPS&#xff1a;加密数据传输的实用指南 在当今的互联网环境中&#xff0c;数据安全至关重要&#xff0c;HTTPS 作为加密的数据传输协议&#xff0c;为 Java 应用提供了安全通信的保障。本文将深入探讨 Java 应用如何实现 HTTPS&#xff0c;通过详细代码实…

域名与DNS详解

域名与DNS详解 一、核心概念 域名&#xff08;Domain Name&#xff09; 定义&#xff1a;人类可读的网络地址标识&#xff08;如 www.google.com&#xff09;作用&#xff1a;替代复杂IP地址&#xff08;类似"手机通讯录"功能&#xff09; DNS&#xff08;Domain …

c++20引入的三路比较操作符<=>

目录 一、简介 二、三向比较的返回类型 2.1 std::strong_ordering 2.2 std::weak_ordering 2.3 std::partial_ordering 三、对基础类型的支持 四、自动生成的比较运算符函数 4.1 std::rel_ops的作用 4.2 使用<> 五、兼容他旧代码 一、简介 c20引入了三路比较操…

计算机网络相关面试题

一、HTTP1.1和HTTP2的区别 HTTP/1&#xff08;主要指 HTTP/1.1&#xff09;和 HTTP/2 是 Web 协议发展中的两个重要版本&#xff0c;二者在性能、协议机制和功能特性上有显著差异。以下从多个维度对比分析&#xff0c;并结合具体案例说明&#xff1a; 一、连接与请求处理方式 1…

图论算法精解(Java 实现):从基础到高频面试题

一、图的基础表示方法 1.1 邻接矩阵&#xff08;Adjacency Matrix&#xff09; 邻接矩阵是表示图的一种直观方式&#xff0c;它使用一个二维数组来存储节点之间的连接关系。对于一个有 n 个节点的图&#xff0c;邻接矩阵是一个 nn 的矩阵&#xff0c;其中 matrix [i][j] 表示…

江科大TIM定时器hal库实现

定时器相关hal库函数 hal库的定时器函数相比于标准库&#xff0c;多了很多的中断回调函数&#xff0c;同时对于定时器的初始化也改成使用句柄一次性顺带连带DMA等功能一起初始化了 typedef struct {uint32_t Prescaler; /*定时器的预分频值*/uint32_t CounterMode; …

CentOS 10:启动telnet服务

参考&#xff0c; 鳥哥私房菜 - 第七章、網路安全與主機基本防護&#xff1a;限制埠口, 網路升級與 SELinux 7.3.3 埠口与服务的启动/关闭及开机时状态设定 我们知道系统的 Telnet 服务通常是以 super daemon 来控管的&#xff0c;请您启动您系统的 telnet 试看看。 1 要启动 …

Taro 安全区域

目录 一、问题描述 二、问题解决 1、顶部刘海区 2、底部小黑条 一、问题描述 安全区域主要是为了避免刘海屏或底部栏遮挡&#xff0c;而造成的不良显示效果。 本次将针对以下两点进行考量&#xff1a; 1、顶部刘海屏区 2、苹果X底部小黑条 二、问题解决 通过Taro.getS…

【Java微服务组件】分布式协调P1-数据共享中心简单设计与实现

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言设计一个共享数据中心选择数据模型键值对设计 数据可靠性设计持久化快照 &#xff08…

在SpringBoot项目中,使用单元测试@Test

1.引入依赖 <!--单元测试Test的依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>3.2.1</version> </dependency> 2.在src/test/java目录…

在Java中,将Object对象转换为具体实体类对象

在Java中&#xff0c;将Object对象转换为具体实体类对象可以通过以下几种方法实现&#xff1a; 1‌.使用instanceof关键字进行类型检查和转换‌&#xff1a; 首先&#xff0c;使用instanceof关键字检查Object对象是否为目标实体类的类型。 如果是&#xff0c;则进行强制类型…

JAVA学习-练习试用Java实现“音频文件的读取与写入 :使用Java音频库处理音频数据”

问题&#xff1a; java语言编辑&#xff0c;实现音频文件的读取与写入 &#xff1a;使用Java音频库处理音频数据。 解答思路&#xff1a; 在Java中处理音频文件通常需要使用第三方库&#xff0c;例如javax.sound.sampled包&#xff0c;它提供了处理音频文件的基本功能。以下是一…