OPC (用于過程控制的 OLE )被廣泛應用在控制系統(tǒng)中,用于提供不同供應商的設備和軟件之間的互操作性。
最新版本的 OPC (OPC UA) 在其設計中已經包括了安全性需求,但 OPC“ Classic ” 協(xié)議 ( OPC DA, OPC HAD 和 OPC A&E ) 基于微軟的 DCOM 協(xié)議, DCOM 協(xié)議是在網絡安全問題被廣泛認識之前設計的。因此,這些協(xié)議給那些希望能確?刂葡到y(tǒng)安全性和可靠性的工程師帶來了極大的挑戰(zhàn)。
本應用指南簡要介紹了與 OPC 相關的安全問題,并解釋了如何使用 OPC enforcer 保護 OPC 服務器和 OPC 客戶端。
OPC Classic 的安全問題
大多數 TPC 和 UDP 通訊協(xié)議都使用單一的標準化端口號 - 例如, Modbus TCP 通常使用 502 端口。客戶端設備 建立對 服務器 設備 502 端口的連接 ,然后發(fā)送數據到服務器設備,或者接受來自服務器設備的數據。使用防火墻來保護這些客戶端和服務器設備相對而言比較簡單 - 只需設置防火墻,僅允許指定端口號的上的通訊,阻止其他所有的網絡通訊即可。
OPC Classic 協(xié)議就不是如此簡單了。建立 OPC 連接需要以下兩步:
l 客戶端通過 135 端口查詢服務器以獲取通訊所需的 TCP 端口號。
l 客戶端使用第一步獲取到的端口號連接到服務器,訪問目標數據。
步驟 1 中數據對象請求使用的端口號是標準化的,且是眾所周知的。然而,實際數據連接(步驟 2 )使用的端口號是由 OPC 服務器以一個虛擬隨機序列動態(tài)分配的,因此沒有辦法提前知道服務器返回給客戶端的端口號。另外,服務器可以分配的端口號范圍很廣 - Windows Server 2008 下超過 16000 個端口號,早期的端 Windows 版本則超過了 48000 個口號。
正因如此,傳統(tǒng)的防火墻在保護 OPC 服務器時,不得不允許 OPC 客戶端和 OPC 服務器之間如此大范圍內的任何端口號的 TCP 連接。在這種情況下,防火墻提供的安全保障被降至最低。因此,目前絕大多數的 OPC 服務器都在沒有任何防火墻保護的情況下運行,從而很容易受到惡意軟件和其他安全威脅的攻擊。
多芬諾 OP C Classic enforcer 軟插件
多芬諾 OPC enforcer 軟插件可以 動態(tài)跟蹤 OPC 服務器分配的 OPC 數據連接的端口號。最低限度的打開通訊所需的防火墻的端口,允許數據連接通過,同時關閉所有未使用的端口。 OPC enforcer 軟插件 也可以對 OPC 數據請求和響應信息執(zhí)行 “ sanity check ” ,從而阻止任何不符合有關 DCE/RPC 標準的信息。
因此, OPC enforcer 軟插件 能夠對使用 OPC Classic 協(xié)議的系統(tǒng)提供有效的防火墻保護。 OPC 數據連接將暢通無阻地通過 Tofino 安全模塊( SA ),而任何異常通訊和惡意通訊都將被阻擋,同時通過 多芬諾 Firewall 軟插件 產生報告。 Tofino 安全模塊提供的這些保護與 Windows PC 無關;不需要對 OPC 客戶端或服務器做任何更改。
使用范例
下面的內容介紹如何使用 OPC enforcer 軟插件 來保護 OPC 客戶端和 OPC 服務器設備之間的通信。在這個例子中,我們將用 Matrikon OPC Explorer 作為一個客戶端與 Mat ri kon OPC 仿真服務器進行通信。在 OPC 服務器和控制網絡的其余部分之間安裝 多芬諾 安全模塊。 多芬諾 組態(tài)管理平臺( CMP )用于配置和管理 多芬諾 安全模塊。系統(tǒng)網絡結構圖如圖 1 所示。
CMP 的配置
CMP 使用戶可以通過拖放節(jié)點視圖圖標到網絡編輯器中(或者通過使用 Tofino discovery 和 asset discovery 功能),創(chuàng)建控制網絡模型。如果需要的話,可以模擬整個網絡,但是只有防火墻規(guī)則中涉及到的設備才是網絡模型中必須包含的。因此,案例中的 OPC 網絡的最終模型(圖 2 )是非常簡單的。
一旦模型創(chuàng)建完成后,必須激活 Tofino 安全模塊中的 Firewall 和 OPC enforcer 軟插件。這一工作在網絡編輯器中的 Tofino 圖標的 “Modules ” 標簽頁中完成。
創(chuàng)建和配置防火墻規(guī)則
接下來,創(chuàng)建防火墻規(guī)則,允許客戶端和服務器之間的 OPC 通訊。參照以下步驟創(chuàng)建 “talker ” 防火墻規(guī)則:
l 雙擊 OPC 服務器的圖標顯示服務器的設置,然后單擊其中的 firewall 標簽頁。
l 在 “network ” 視圖中( Tofino CMP 的左上角)找到 OPC 客戶端圖標,然后將該圖標拖放到 OPC 服務器的 firewall 標簽頁中的 “talker rules ” 一行。
l 從 “protocols ” 視圖( Tofino CMP 的右下角)中將 “OPC Classic TCP ” 協(xié)議拖放到服務器的 firewall 標簽頁中的 OPC 客戶端圖標上。
l 雙擊 “OPC Classic-TCP ” 防火墻規(guī)則,將其權限改為 “enforcer ” ,點擊 “OK ” 。該權限設置使 OPC enforcer 能檢查計算機間的通訊,并且跟蹤被創(chuàng)建的 OPC 數據連接。
完成后的防火墻規(guī)則如圖 3 所示。點擊視圖底部的 “OK ” 按鈕,新的規(guī)則即可保存到 Tofino CMP 中,同時也被下載到 Tofino 安全模塊中。
測試規(guī)則
獨特的 “ 測試 ” 模式允許所有的網絡通訊通過 Tofino 安全模塊,但對實際運行中會受阻的通訊產生報警信息。從而可以在不存在意外阻止正確工廠操作所需通訊的風險下,對防火墻和 OPC enforcer 規(guī)則進行測試。
使用 “general/communication ” 標簽頁中底部的下拉控制,可以設置運行模式,在 Tofino 的工作模式改變后,必須停止并重啟 OPC 客戶端,這樣的話 OPC enforcer 就能發(fā)現(xiàn)數據連接請求,解析出所分配的端口號,并配置防火墻以便讓數據連接通過。
當 OPC enforcer 創(chuàng)建完防火墻規(guī)則,允許數據連接通過 Tofino 安全模塊后,將給 CMP 發(fā)送報警信息即 “exception heartbeat ” 通知用戶。這些信息都顯示在屏幕底部的 “event ” 視圖中。雙擊這些心跳信息中的某一條信息,將打開圖 4 所示詳細視圖。
通過監(jiān)測異常事件,編輯防火墻和 OPC enforcer 的配置,用戶就能確保所有必需的系統(tǒng)通訊都能通過 Toflno S A ,同時也不會產生報警。測試完成后,可以將 Tofino SA 設置為運行模式,執(zhí)行已配置好的規(guī)則。
OPC enforcer 選項
有三個選項可用來控制 OPC enforcer 如何管理每個 OPC 連接。
“Sanity check ” 功能使 OPC enforcer 能檢查數據連接請求和響應是否符合 DCE/RPC 協(xié)議標準,并且阻止任何不標準的通訊。對于一些 OPC 客戶端和 / 或服務器,需要關閉該功能。
“Fragment check ” 功能使 OPC enforcer 能阻止不完整的 DCE/RPC 數據連接請求。和 “Sanity check ” 相同,對于一些 OPC 客戶端,可能需要關閉該功能。
“connection T/O ” 定義了數據連接請求和實際數據連接開始之間的最長時間限制。如果由于某種原因, OPC 客戶端不再創(chuàng)建數據連接,該設置將確保通過 OPC enforcer 在防火墻創(chuàng)建的 “ 大門 ” 及時關閉。默認的時間限制是 5 秒,但對于一些 OPC 客戶端,這個值可能需要增加。對 Matrikon OPC Explorer 的測試表明, 10 秒的超時設置對該客戶端是最佳的選擇,如圖 5 所示。
通過計算機名連接 VS 通過 IP 地址連接
如果 OPC 客戶端通過 IP 地址訪問 OPC 服務器,那么只需要 OPC Classic-TCP 防火墻規(guī)則。如果 OPC 客戶端被配置為不是通過 OPC 服務器的 IP 地址而是通過其計算機名訪問 OPC 服務器,那么在 Tofino 安全模塊中需要設置額外的防火墻規(guī)則,以便允許域名解析通訊通過防火墻。
在范例系統(tǒng)中,必須在 OPC 服務器的 Firewall 標簽頁中配置 talker 規(guī)則,允許 OPC 客戶端和 OPC 服務器之間的 NetBIOS 名字服務和 NetBIOS 數據報服務,如圖 6 所示。
在對等網絡配置中,為了相互定位, OPC 客戶端和服務器還必須能發(fā)送和接受廣播 NetBIOS 通訊。在基于域的網絡中,這些機器必須能夠發(fā)送和接受往返于域控制器的 NetBIOS 通信。根據網絡的設計和使用的具體的通信協(xié)議,可能需要額外的 broadband , talker 和 / 或 global 規(guī)則。
對等網絡下的廣播規(guī)則設置如圖 7 所示。廣播規(guī)則在 Firewall 標簽頁中設置。
總結
Tofino OP C Classic enforcer 為使用 OPC Classic 通信服務的 OPC 客戶端和服務器提供了有效的防火墻保護。 OPC enforcer 配置簡單,其特有的 “ 測試 ” 模式讓您在真正部署之前有機會對組態(tài)規(guī)則進行測試。