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.pswp.cn/news/906486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906486.shtml
英文地址,請注明出處:http://en.pswp.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;它提供了處理音頻文件的基本功能。以下是一…