National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 80 24°C PM2.5 21
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 17

工控資安

Modbus 沒有認證、網路分區與 IEC 62443 概念
Interaction 25 minute(s)

Learning Objectives

  • 說明工控系統(OT)的資安和一般 IT 有什麼不同
  • 說明 Modbus 為什麼「連得到就寫得進去」,以及這對網路設計的影響
  • 用 IEC 62443 的「區域與管道」概念替工廠網路分區,找出不安全的連線
  • 寫一個預設拒絕的白名單,只放行必要的請求

控制系統的資安,先顧好「不要停、不要傷人」

辦公室的資安最在意資料不要外洩;工廠的控制系統(OT,operational technology)最在意的是機器照預期運作、不傷人、不停線。 這帶來幾個不同:

一般 IT 工控 OT
最重要的是 資料的機密性 可用性與人身安全
設備壽命 幾年換一次 十幾、二十年
更新修補 定期、自動 要停機才能更新,常常一拖再拖
通訊協定 多半有認證、加密 Modbus 等老協定沒有認證
出事的後果 資料外洩、服務中斷 設備損壞、環境汙染、人員受傷

所以工控資安不能只靠「裝防毒、常更新」,而要從網路架構著手:讓不該連到控制器的電腦,根本連不到。

這一課要回答:

  1. Modbus 沒有認證,實際上代表什麼?
  2. 「區域與管道」怎麼把網路切開?
  3. 白名單要怎麼寫?

這一課只談防禦。練習都在本課程的模擬環境裡;對任何真實系統做測試,都必須事先取得系統擁有者的書面授權。

逐步看:Modbus 不問你是誰

這台 PLC 用 SET/RST 控制攪拌馬達。一台不是 HMI 的電腦連上同一個網路,送出一個寫入線圈的請求。 看通訊紀錄與 PLC 畫面:PLC 照做了,馬達開始轉。這不是 PLC 壞掉,而是 Modbus 協定本來就沒有「確認對方身分」這一步。

區域與管道:IEC 62443 的分區想法

IEC 62443 是工業自動化與控制系統的資安標準系列,對象包括設備製造商、系統整合商與工廠營運者。 其中最常被引用的想法是區域與管道(zones and conduits):

  • 區域(zone):安全需求相近的一群設備,例如「所有 PLC 與變頻器」是一區、「SCADA 與 HMI」是另一區。
  • 管道(conduit):區域之間的通訊路徑,連同路徑上的防護(防火牆、閘道器、單向傳輸設備)。 區域之間只能經過管道溝通,管道上只放行必要的流量。

每個區域依風險評估訂定目標安全等級(SL 1~4,等級越高,要防的對手能力越強),標準再依七個基本要求 (識別與認證、使用控制、系統完整性、資料機密性、限制資料流、即時回應事件、資源可用性)列出要做到哪些措施。

常見的分區由外到內:

網際網路
  └─ 企業網路(IT):辦公室、郵件、ERP
       └─ 工業 DMZ:歷史資料鏡像、遠端維護跳板機   ← IT 與產線都只連到這裡
            └─ 監控區:SCADA、HMI、工程師站
                 └─ 控制區:PLC、變頻器、現場設備

原則是:不跨層直連、外部人員不直接進產線、每條管道只開必要的連線。下面的練習用一個示意的工廠網路試試看。

互動練習:替工廠網路分區

依序完成任務:

  1. 用下拉選單把每台設備放進區域,按「檢查分區」。
  2. 讀每條連線的用途與路徑,勾出不安全的連線,按「檢查標記」。
  3. 替每條不安全的連線選一個改法,按「檢查改法」。
  4. 回答一個問題。

逐步看:預設拒絕的白名單

管道上的防火牆或閘道器,常用白名單(允許清單):只寫「誰可以做什麼」,其他一律拒絕。 這個範例檢查四個請求:來源 IP、功能碼、位址都要符合某一條規則才放行。

其他防禦做法

分區與白名單是基礎,再往上疊幾層,叫縱深防禦(defense in depth):一層失守還有下一層。

  • 用有安全機制的協定:Modbus Organization 發布了 Modbus/TCP Security,用 TLS 包住 Modbus,以憑證認證雙方,使用埠 802; 第 15 課的 OPC UA 有 Sign、SignAndEncrypt 安全模式。新系統優先選用,舊設備放在受保護的區域裡。
  • 遠端維護:不要讓廠商從網際網路直接連 HMI。改走 DMZ 的跳板機,需要時才開放、多因素認證、全程記錄、用完關閉。
  • 帳號與權限:HMI 的操作員、工程師、管理者權限分開;不共用帳號、改掉預設密碼。
  • 可攜式媒體:USB 隨身碟是常見的入侵途徑,進產線前先掃描,或用專用的檔案交換站。
  • 備份與還原:定期備份 PLC 程式與設定,並且真的演練還原。
  • 監控與事件應變:記錄誰在什麼時候寫了什麼;事先寫好「出事時誰負責、先做什麼」。

資安措施也要配合安全(safety):急停按鈕、機器防護、上鎖掛牌(lockout/tagout)這些保護人的機制, 不能因為任何網路設定而失效;安全相關的功能最好不依賴網路。

互動練習:寫一個 Modbus 閘道器的白名單

這支程式扮演管道上的閘道器:四個請求先經過 allowed() 判斷,放行的才轉給 PLC。起始的 allowed() 什麼都放行。 PLC 會記錄三件事:馬達有沒有被啟動(M0.0)、設定值有沒有改成 300(M0.1)、位址 20 有沒有被寫(M0.2)。依序完成任務:

  1. 直接執行,看全部放行時 PLC 發生了什麼(馬達被不明的電腦啟動了)。
  2. 只允許 HMI(10.0.1.50):不明電腦的請求被擋下,HMI 的設定值照常寫入。
  3. 再限制 HMI 只能寫位址 0~9 的暫存器,擋下寫位址 20 的請求。
  4. 回答一個問題。

小測驗:OT 資安的觀念

1.

和一般辦公室 IT 相比,工控系統最優先考慮的通常是什麼?

2.

一台 PLC 用 Modbus TCP,接在辦公室的同一個網段。最主要的風險是?

3.

在 IEC 62443 的概念裡,「管道」(conduit)指的是?

第 1 次作答

小測驗:白名單

1.

下面的白名單會印出什麼?

RULES = [("10.0.1.50", 3), ("10.0.1.50", 6), ("10.0.1.20", 5)]
for req in [("10.0.1.50", 5), ("10.0.1.20", 5), ("10.0.1.99", 3)]:
    print("放行" if req in RULES else "拒絕", end=" ")
2.

設備廠商需要遠端檢查 HMI。下面哪一種做法比較好?

第 1 次作答

重點整理

  • OT 資安以可用性與人身安全為優先;設備壽命長、難以停機更新,所以要靠網路架構保護。
  • Modbus 沒有認證與加密:連得到就讀得到、寫得進去。保護它的責任在網路設計。
  • IEC 62443 的區域與管道:安全需求相近的設備放同一區,區域之間只經過管道溝通,管道只放行必要的流量。
  • 典型分區:IT → 工業 DMZ → 監控區 → 控制區;不跨層直連,外部維護走跳板機。
  • 白名單:寫清楚「誰、用哪些功能碼、存取哪些位址」,其他預設拒絕。
  • 縱深防禦:安全的協定(Modbus/TCP Security、OPC UA 的安全模式)、權限、可攜式媒體管理、備份還原、監控與事件應變;保護人的安全功能不依賴網路。

最後一課把整個軌道串起來:輸送帶分揀站的 PLC 程式加上 Python 監控。

這一課完成了!
Next lesson:專題:輸送帶分揀站
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。