■ 河南 許紅軍
隨著IoT技術的發展,大量IoT設備接入網絡,會產生很多安全問題。MUD技術可以幫助管理員了解接入的什么類型設備,產生什么流量,觸發什么行為,并據此創建適當的控制策略進行管控。
IoT設備一般只擁有單一或較少用途,因此可以允許其擁有該單一的用途而禁止其他功能,并攔截無關的流量和行為。
例如,對于溫度檢測設備來說,就僅僅讓其可以檢測溫度信息,禁止執行別的操作。
IoT設備功能較為單一,不會產生較多的流量,所以其性能是被嚴格約束的,例如只允許其擁有較低的CPU和內存使用率,消耗的電量很低等。所以該設備的任意行為都應該被明確標識。例如IoT廠商應明確告知用戶設備的具體用途等。網絡管理員需要擁有對網絡的使用擁有最終管理權,便于放行或禁止哪些流量。
IoT設備廠商應擺正問題,主動給網絡管理員提供指導服務,明確設備具體功能,便于管理員放行相關的流量。
很多IoT設備雖然具有一些自我保護功能,但不可避免的會存在一些漏洞,這很容易被黑客發現和利用,因此需要一個完整的機制來保護脆弱的IoT設備。不同IoT設備可以通過LLDP/DHCP/802.1X等協議的特定字段來發送設備宣告(Device Advertisement)的URL,例如“https://mud.mfg.xxx.com/lightbulb1001/version2.12”等。該URL鏈接包括設備產生的域名、具體的設備型號和版本,會發送給網絡控制設備。實際上,和IoT設備描述緊密相關的是一個基于YANG模型的JSON文件,其中包含了上述URL地址和描述信息、與該設備相關的訪問控制列表、設備網關地址、訪問的源和目的端口,以及采取的處理動作等信息。IoT設備網關可以是一個由IoT廠商提供的具體設備,也可以是一個互聯網地址。
IoT設備廠商可在其中明確定義設備的流量行為,例如,在“access→list 10 permit host controller.mfg.xxx.com”之類的ACL中,就明確了可以方向的流量。在“access→list 11 deny deny”之類的ACL中明確了哪些流量需要禁止。根據該JSON文件,網絡管理員可以了解該設備會執行哪些訪問行為,并產生哪些網絡流量等信息。在該JSON文件中,會定義一些控制器類型。
例 如,“My Controller”參數會定義在企業內部存在控制器,用來放行對應的流量。“Controller”參數會定義在互聯網上的通用控制器。“Manufacturer”參數中會定義用于在物聯網設備之間通訊的控制器等。
對于Cisco設備來說,當IoT設備上線后,會為其授權TrustSec的標簽。例如,“light”標簽用來定義照明設備,“Camera”用來定義拍攝設備,“Controller”用來定義控制設備等。這樣,可以在上述設備間靈活的控制流量。
MUD是一個IETF標準,用來解決IoT設備的可視化和隔離挑戰。通過MUD可以讓人了解目標設備是由哪個廠商生產的,具體用途,會產生什么流量,如何對其進行控制和隔離等。MUD的架構包括IoT Asset(物聯網設備),Network Device(交換機或WLC),MUD Controller(MUD控制器)和MUD File Server(云端的MUD文件服務器)等組成。
當一個IoT設備首次連接到網絡中時,會發送內嵌在LLDP/DHCP/802.1X請求中的MUD URL,當交換機等網絡設備接收到該URL后,會將其封裝到RADIUS的包中,并傳遞給ISE等3A服務器。
3A服務器會對其進行解包,并提取該MUD URL,并提交給MUD控制器。
注意,MUD控制器實際上是ISE等3A服務器的一個組成部分。
之后ISE就會通過HTTPS協議聯系云端的目標廠商的文件服務器,該文件服務器會返回給ISE一個JSON格式的文件,在其中包含了一些控制策略。ISE會對其進行轉換,使其變成ISE支持的控制規則。接著ISE就會推送這些策略(ACL或TrustSec標簽等)給交換機等網絡設備。
交換機據此可以對IoT設備進行授權,只放行該設備廠商定義好的允許放行的訪問流量。這樣,該IoT設備就可以安全穩定地工作了。
但是目前的MUD1.0實際上是存在一些限制的,例如其可以支持ISE 2.6版本,IOS的版本為16.9.1或者15.2.6、Catalyst 9k,以 及3850 and CDB、IE4000等交換設備。MUD 1.0還需要手工指定控制策略,無法實現更加高級的自動化控制。隨著MUD版本的演進,其逐漸會擁有更加自動化的功能。
在本例中,當某個IoT設備第一次上線后,會向與其連接的交換機發送MUD URL信息,交換機接收后會將其封裝到Radius包中,通過HTTPS協議發送給ISE設備。
首先登錄到ISE管理界面,點擊工具欄中的“Administration→Settings”項,在左側 選擇“Profiling”項,在右側的“Enable profile for MUD”欄中選 擇“Enabled”項,激活MUD設備識別功能。點擊工具欄中的“Administration→Network Devices”選項,然后點擊“Add”按鈕,創建名為“MudDev”的網絡設備,在“IP Address”欄中輸入該IoT設備的IP(例如“192.168.1.200”)。
在“Device Type”欄中選擇“IoT”項,當然,事先需要在ISE中創建名為“IoT”的設備類型,其實就是交換機設備。該選擇“RADIUS Authentication Settings”項,在“*Shared Secret”欄中輸入密鑰,點擊“Save”按鈕提交修改。這樣,ISE才可以接收指定IoT設備的信息。點擊工具欄中的“Policy→Policy Sets”項,在名為“Default”的策略右側點擊“>”按鈕,在打開窗口中選擇“Authentication Policy”項,創建名為“IoT Policy”的規則,凡是屬于“IOT”設備類型的都需要到終端進行檢查。這樣,ISE才可以接收MUD URL 信息。
點擊工具欄中的“Operations→Live Logs”項,查看實時日志信息,在其中按照特定的排序規則(例如只顯示最近60秒日志等),可以看到交換機發送來的MUD URL信息。點擊工具欄中的“Context Visibility→Endpoints”項,在列表中選擇對應終端的MAC地址項目,在其屬性窗口中打開“Attrinutes”面板,在“Endpoint Policy”欄中顯示ISE已經為其指派的策略,在“Identity Group Assignment”欄中顯示設備識別自動產生的組信息。
這說明ISE已經可以動態識別與該IoT設備關聯的JSON文件,例如“https://www.genisyslighting.com/files/MUD/xxxxxx.json”等,并自動為其匹配策略并將創建設備識別組,其中的“xxxxxx”表示具體的文件名稱。點擊工具欄中的“Adminitration→Identity→Groups”項,在左側 選擇“Endpoint Identiry Groups→Profile”項,在列表中選擇ISE為其自動創建的組,在右側可以看到該IoT設備的MAC地址已經保存在該組中了。點擊工具欄中的“Policy→Profiling”項,在其中可以看到ISE針對該IoT設備自動產生的識別策略。
在本例中可以可以看到,ISE針對該IoT設 備創建的組和策略的名稱是相同的,例 如“IOT-MUDgenisyslighting_files_MUD_xxxxxx_json”。
即ISE可以自動執行設備識別,創建對應的策略和組,并將該設備放到該組中。點擊工具欄中的“Policy→Policy Sets”項,在名為“Default”的策略右側點擊“>”按鈕,在打開窗口中打開“Authentication Policy”項,在打開窗口中選擇“Authoration Policy”項,在其中創建所需的授權策略(例如名稱為“IoT_Ahthor”),凡是上述組中的設備,都賦予其一個標簽(例如名稱為“IoT_device”),便于基于該標簽執行訪問控制操作。
中值和均值相結合的方法,在圖像中先假設某點灰度值實際分布滿足正態分布,如果像點灰度值處在一定范圍內,則可進行均值濾波處理;如果像點灰度值沒有處在這個范圍內,則要進行中值濾波。
對于目前的MUD 1.0來說,還無法根據相應的JSON文件來自動產生所需的訪問控制策略,這里需要手工進行操作。
打開“https://www.genisyslighting.com/files/MUD/xxxxxx.json”地址,顯示該JSON文件的具體內容。打開“https://www.json.cn/”地址,可以在線檢測其完整性。查看該JSON文件內容,可以看到其中包含的諸如“from-devicepolicy”,“to-devicepolicy”等控制策略信息。進行分析后,對于內部控制器去往設備的流量來說,其源端口為UDP 9760,目的端口為UDP 30303。從設備之間的流量來說,其源和目的端口都是TCP 9760,這些流量是需要放行的。
在ISE界面工具欄點擊“Work Centers→ TrustSec→Components”項,在左側選擇“Security Groups”,在右側點擊“Add”,分別創建“IoT_Controller”和“IoT_device”兩個標簽。在左側選擇“Security Group ACLS”,在右側點擊“Add”,創建“Controller_to_IoT”的ACL,在“IP Version”欄 中選擇“IPv4”,在“*Security Group ACL content”輸入:
permit udp dst eq 9760
permit udp src eq 30303
deny ip
按照同樣方法創建名為“IoT_to_Controller”的項目,在“IP Version”欄中選 擇“IPv4”,在“*Security Group ACL content”中輸入:
permit udp src eq 9760
permit udp dst eq 30303
deny ip
點擊“Save”,放行從設備到內部控制器間的流量。
同樣,創建名為“IoT_to_IoT”的項目,在“IP Version”欄中選擇“IPv4”,在“*Security Group ACL content”欄中輸入:
permit TCP src eq 9760 dst eq 9760
deny ip
點擊“Save”,放行設備間的流量,其他流量禁止放行。
在工具欄上點擊“Work Centers→TrustSec→TrustSec Policy”項,在左側選擇“Egress Policy→Matrix”項,在右側顯示所有標簽信息。為便于顯示,在窗口右上角的“Show”列表中選擇“Create custom view”項,創建名為“IoT”的過濾器,在“Source Security Groups”欄中選擇上述“IoT_Controller”和“IoT_device”標簽,點擊“>”按鈕,添加到“Show”列表。
同理,在“Destination Security Groups”列表分別選擇“IoT_Controller”和“IoT_device”標簽,點擊“>”按鈕,添加到“Show”列表中。點“Save”創建該過濾器。
這樣,在上述“Show”列表中選擇該過濾器,就僅僅顯示這兩個標簽的流量。在窗口中橫向為“Destination”設備,縱向為“Source”設備,在橫向的“IoT_device”和縱向的“IoT_device”坐標上點擊,在打開窗口中的“Assign Security Group ACLs”中分別選擇“Select an SGACL”和“IoT_to_IoT”,允許放行設備之間流量,點擊“Save”保存配置信息。
在橫向“IoT_controller”和縱向的“IoT_device”坐標上點擊,在打開窗口中的“Assign Security Group ACLs”中分別選擇“Select an SGACL”和“IoT_to_Controller”項,允許設備到內部控制器之間的流量,點擊“Save”保存。在橫向的“IoT_device”和縱向的“IoT_Controller”坐標上點擊,在打開窗口中的“Assign Security Group ACLs”中分別選擇“Select an SGACL”和“Controller_to_IoT”項,放行內部控制器到設備之間的流量,點擊“Save”保存。
在橫向“IoT_Controller”和縱向的“IoT_Controller”坐標上點擊,在打開窗口中的的“Status”列表中選擇“Disabled”項,禁止在控制器之間放行流量。在工具欄上點擊“Policy→Policy Sets”項,在授權策略窗口中打開“Authorization Policy”列表,在其中添加一條授權策略(例如名為“IoT_Author”),針對上述ISE自動創建的名為“IOT→MUD→genisyslighting_files_MUD_79590001A4_json”的組,賦予其名為“IoT_device”的標簽。
這樣當IoT設備上線后,交換機會得到其發送的MUD URL信息,然后封裝到Radius包中,通過HTTPS協議發送給ISE設備。之后ISE的TrustSEC機制就會發揮作用,從而實現標簽間的訪問控制功能,并向交換機推送授權信息。在ISE管理界面中選擇“Operations→RADIUS→Live Logs”項,在日志中即可查看到相關的授權信息。