簡介
本檔案介紹7.7版本新增的Cisco RADKit在FMC中的整合功能。
背景
防火牆管理員面臨的問題
- 由思科開發的遠端自動化開發套件(RADKit)是一個網路範圍的協調器,旨在為使用者提供安全訪問和排除網路裝置故障的可能性。https://radkit.cisco.com/
- 思科安全防火牆管理中心(FMC)管理和操作安全防火牆威脅防禦(FTD)裝置。單個FMC可以管理不同位置的多個裝置。
- 雖然使用者可以單獨安裝RADKit並將其FMC和FTD載入其中,但將RADKit服務構建到FMC中並以自動方式安裝FMC和所有受管裝置(FTD)將給終端使用者帶來更好的體驗。
使用案例
在FMC中整合RADKit後,使用者可以從中受益的一些關鍵功能包括:
- 能夠從RADKit客戶端CLI遠端訪問FMC/FTD。
- 能夠向任何需要的人士(例如,思科TAC工程師)提供對FMC/FTD的受控訪問。
- 利用自動化功能從RADKit客戶端收集資料和診斷問題(可以從RADKit客戶端建立和使用在多個裝置上執行命令的指令碼)。
概覽 — 解決方案
- 從安全防火牆7.7.0開始,遠端自動化開發套件(RADKit)服務整合到FMC中。
- 使用者可以按需啟用或禁用RADKit服務,將其註冊到RADKit雲中,並建立遠端使用者的授權,以在計畫訪問持續時間內從RADKit客戶端訪問特定裝置。
- 此外,還提供為裝置提供sudo訪問許可權的選項,以便進行高級故障排除。
FMC圖中的RADKit服務整合
此圖顯示RADKit如何啟用從使用者(TAC工程師)RADKit使用者端到生產FTD裝置的通訊:

基礎知識:支援的平台,許可
應用程式和管理程式

支援的其他方面

要運行的功能的依存關係
功能說明和演練
功能概述
- RADKit服務整合到FMC中使裝置管理員能夠向遠端使用者(思科TAC工程師)提供對其網路中特定FMC和FTD裝置的訪問許可權,以便進行故障排除和自動化。與螢幕共用相比,RADKit在故障排除方面更加高效,它不需要控制使用者的電腦,是一種更安全的網路工作方式,並且很好地補充了Webex。
- 這樣可改善技術支援體驗,因為裝置管理員無需單獨安裝和配置RADKit服務。此外,這也縮短了Cisco TAC工程師解決支援問題的支援時間。
設定步驟:概觀
1.裝置管理員(FMC管理員使用者):在FMC GUI上啟用和註冊RADKit服務並配置授權。
2. Cisco TAC/思科支援:在其電腦上安裝RADKit Client,從RADKit Client訪問裝置並對其進行故障排除。
FMC管理員使用者:防火牆管理中心演練
遠端診斷選單
- 在Devices ->Troubleshooting下,已為此功能新增了新的「Remote Diagnostics」選單項。
- Administrator、Network Admin和Maintenance使用者在該頁面上有讀/寫許可權。
- 安全分析師、安全分析師(只讀)和安全審批人使用者對頁面具有只讀許可權。

「初始遠端診斷」頁
這是初始的遠程診斷頁面。通過切換「啟用RADKit服務」開關可以啟用RADKit服務:

RADKit服務啟動
啟用RADKit服務後,在RADKit服務啟動之前,將顯示進度條:

已啟用RADKit服務

下一步是點選「使用SSO註冊」按鈕在RADKit雲中註冊。
使用SSO註冊 — 輸入電子郵件地址
註冊流程的第1步包括輸入RADKit雲註冊的使用者電子郵件地址:

使用SSO註冊 — 接受授權請求
將開啟一個新的瀏覽器頁籤(或視窗,取決於瀏覽器設定)。按一下Accept按鈕。

使用SSO註冊 — 身份驗證成功
身份驗證成功後,使用者可關閉瀏覽器頁籤並返回FMC遠程診斷頁面。

RADKit服務已註冊
使用指定的服務ID註冊RADKit服務(在本示例中,ID為8kji-znxg-3gkt)。 可以將ID複製到剪貼簿。將其交給思科TAC工程師,以便他們能夠從RADKit客戶端連線到RADKit服務。
下一步是按一下「Create New Authorization」按鈕建立授權:

建立新授權:步驟 1
- 要建立新授權,第一步是新增支援工程師電子郵件地址。
- 建立新授權有四個步驟。各個步驟的進度顯示在頂部。

建立新授權:步驟 2
- 步驟 1:指定支援工程師可以訪問的裝置。或者,如本例所示,授予對所有裝置的訪問許可權。
- 步驟 2:選中所有或特定裝置的單選按鈕。對於特定裝置,可以選取FMC和/或FTD。注意Device Sudo Access頁籤中某些裝置可以獲得sudo訪問許可權的警告。選中覈取方塊之前,不會啟用Next按鈕。
- Sudo訪問稍後在Device Sudo Access頁籤中按裝置提供(不是在建立授權期間)。

有關領料裝置的附註
- 只能選擇受支援內部版本上的裝置(例如,在初始版本中只能選擇7.7.0裝置)。
- 不能選擇已禁用且無法訪問的裝置。RADKit依賴sftunnel(TCP 8305)訪問裝置。
- 如果存在sftunnel連線問題,則它不起作用,但它仍然顯示在RADKit清單中。
- 如果裝置已關閉,則根本看不到它。
- 如果一個HA配對中存在FMC,則只能新增作用中/主要。
- 建立/編輯授權時,裝置將新增到RADKit清單。從FMC註銷裝置時,裝置會從「清單」中刪除。
建立新授權:步驟 3
- 步驟 3:指定支援工程師訪問裝置的持續時間。
- 選擇「Now」並指定持續時間,或,
- 選擇「Grant perpetual access until revoked」。
- 預設持續時間是1天。可以設定任何持續時間;還有一些預定義的持續時間值。

建立新授權摘要
最後一步是授權摘要。在這裡,使用者可以檢視和編輯配置。

建立新授權已完成
授權建立完成後,將顯示確認螢幕:

當前授權清單,包括撤消
- 當前授權清單顯示在「當前授權」選項卡中。
- Actions(最右側的列)是Revoke access和Edit authorization。

裝置Sudo訪問清單
- 具有sudo訪問設定的裝置清單顯示在Device Sudo Access頁籤中。
- 使用右列中的切換來切換超級使用者訪問。預設情況下為關閉。
- 此外,還可以使用批次啟用/禁用sudo訪問。

確認啟用裝置Sudo訪問
1.通過選擇裝置,然後按一下「啟用」按鈕,可以為所有特定裝置或僅為某些特定裝置啟用Sudo訪問。
2.啟用時,將顯示確認對話方塊,並且需要按一下Confirm。

已啟用Sudo訪問的裝置
- 啟用或禁用裝置的sudo訪問後,頁面右側的Sudo Status列會更新。
- 支援工程師能夠在設備上運行sudo su;這是無密碼的。支援工程師不需要具有根密碼。

其他附註
- 只有FMC使用者有權訪問的域中的裝置才可見,並且可以授權進行遠端訪問。
- 如果FMC在HA中:
- RADKit服務只能在主用/主用上啟用。
- 當前無法將輔助FMC新增為要從RADKit客戶端訪問的裝置。
- 一次只能授權一名支援工程師。
- 如果您需要另一位支援工程師來訪問,請為其他工程師建立另一個授權。服務ID將相同。
FMC REST API
RADKit服務REST API
為了支援RADKit Service上的建立和讀取操作,引入了以下新的URL:
- GET:/api/fmc_troubleshoot/v1/domain/{domainUUID}/ radkit/services
- GET:/api/fmc_troubleshoot/v1/domain/{domainUUID}/radkit/services/{id}
- POST:/api/fmc_troubleshoot/v1/domain/{domainUUID}/radkit/services
- 在FMC上建立RADKit服務(啟用/禁用該服務)。
RADKit服務型號
RADKit服務模型包括:
- 類型
- id
- 狀態
- isRegistered
- serviceId
- 版本

思科支援:RADKit客戶端使用情況
支援端:安裝RADKit客戶端
- 要訪問FMC/FTD,支援人員需要安裝RADKit客戶端。
- 該客戶端在Windows、Mac和Linux作業系統上運行。
- 支援人員可以從多個使用者訪問多個裝置。每個RADKit授權都有自己的設備「清單」。
- 對於支援部門想要訪問的每個使用者裝置清單,需要RADKit服務ID。
- 對於單個清單,FMC及其託管FTD都可以從RADKit客戶端訪問,這由使用者在授權訪問時指定。
獲取並安裝RADKit客戶端
RADKit客戶端可以本地從https://radkit.cisco.com/downloads/release/安裝,然後使用以下命令從終端啟動:radkit-client
安裝程式可用於Windows、MacOS和Linux。

RADKit客戶端螢幕截圖,包含登入命令(下一部分中的詳細資訊)。
RADKit客戶端登入命令
- 在FMC中使用使用者在授權期間輸入的電子郵件地址。
- RADKit客戶端登入並連線到指定的服務ID命令。在此示例中,RADKit服務ID 8abc-znxg-3abc必須與防火牆管理員在FMC中看到的內容匹配。
>>> client = sso_login("user@cisco.com")
A browser window was opened to continue the authentication process. Please follow the instructions there.
Authentication result received.
>>> service = client.service("8abc-znxg-3abc")
15:09:03.639Z INFO | internal | Connection to forwarder successful [forwarder_base_url='wss://prod.radkit-cloud.cisco.com/forwarder-4/' uri='wss://prod.radkit-cloud.cisco.com/forwarder-4/websocket/']
15:09:03.727Z INFO | internal | Forwarder client created. [forwarder_base_url='wss://prod.radkit-cloud.cisco.com/forwarder-4/']
15:09:04.244Z INFO | internal | Connection to forwarder successful [forwarder_base_url='wss://prod.radkit-cloud.cisco.com/forwarder-1/' uri='wss://prod.radkit-cloud.cisco.com/forwarder-1/websocket/']
15:09:04.332Z INFO | internal | Forwarder client created. [forwarder_base_url='wss://prod.radkit-cloud.cisco.com/forwarder-1/']
RADKit客戶端服務清單命令
用於列出遠端使用者(Cisco TAC工程師)有權訪問的清單的命令:
>>> service.inventory
<radkit_client.sync.device.DeviceDict object at 0x1154969a0>
name host device_type Terminal Netconf SNMP Swagger HTTP description failed
----------------------- --------- ------------- ---------- --------- ------ --------- ------ ------------- --------
172-16-0-100-1724078669 127.0.0.3 FTD True False False False False 172.16.0.100 False
172-16-0-102-1724078669 127.0.0.2 FTD True False False False False 172.16.0.102 False
firepower-1724078669 127.0.0.1 FMC True False False False False firepower False
Untouched inventory from service 8kji-znxg-3gkt.
清單中的裝置有一個filter命令(下一部分)。 使用左欄中的名稱啟動與裝置的互動式會話(命令在即將進行的部分)。
提示:如果清單已過期,可以使用以下命令進行更新:
>>> service.update_inventory()
RADKit客戶端:篩選裝置
用於篩選清單中裝置的命令:
>>> ftds = service.inventory.filter(attr='name',pattern='172-16-0’)
>>> ftds
<radkit_client.sync.device.DeviceDict object at 0x111a93130>
name host device_type Terminal Netconf SNMP Swagger HTTP description failed
----------------------- --------- ------------- ---------- --------- ------ --------- ------ ------------- --------
172-16-0-100-1724078669 127.0.0.3 FTD True False False False False 172.16.0.100 False
172-16-0-102-1724078669 127.0.0.2 FTD True False False False False 172.16.0.102 False
2 device(s) from service 8kji-znxg-3gkt.
RADKit客戶端裝置互動式會話命令
使用從以前的「service.inventory」命令獲取的名稱「firepower-1724078669」,為裝置(在本例中為FMC)啟動互動式會話:
>>> service.inventory["firepower-1724078669"].interactive()
08:56:10.829Z INFO | internal | Starting interactive session (will be closed when detached)
08:56:11.253Z INFO | internal | Session log initialized [filepath='/Users/use/.radkit/session_logs/client/20240820-115610830612-firepower-1724078669.log']
Attaching to firepower-1724078669 ...
Type: ~. to terminate.
~? for other shortcuts.
When using nested SSH sessions, add an extra ~ per level of nesting.
Warning: all sessions are logged. Never type passwords or other secrets, except at an echo-less password prompt.
Copyright 2004-2024, Cisco and/or its affiliates. All rights reserved.
Cisco is a registered trademark of Cisco Systems, Inc.
All other trademarks are property of their respective owners.
Cisco Firepower Extensible Operating System (FX-OS) v82.17.0 (build 170)
Cisco Secure Firewall Management Center for VMware v7.7.0 (build 1376)
RADKit客戶端對裝置執行命令
在裝置上執行命令!
>>> result = ftds.exec(['show version', 'show interface'])
>>>
>>> result.status
<RequestStatus.SUCCESS: 'SUCCESS'>
>>>
>>> result.result['172-16-0-100-1724078669']['show version'].data | print
> show version
-------------------[ firepower ]--------------------
Model : Cisco Secure Firewall Threat Defense for VMware (75) Version 7.7.0 (Build 1376)
UUID : 989b0f82-5e2c-11ef-838b-b695bab41ffa
LSP version : lsp-rel-20240815-1151
VDB version : 392
----------------------------------------------------
從裝置獲取其他詳細資訊
考慮此清單:
>>> service.inventory
[READY] <radkit_client.sync.device.DeviceDict object at 0x192cdb77110>
name host device_type Terminal Netconf SNMP Swagger HTTP description failed
----------------------------- --------- ------------- ---------- --------- ------ --------- ------ ------------------ --------
10-62-184-69-1743156301 127.0.0.4 FTD True False None False False 10.62.184.69 False
fmc1700-1-1742391113 127.0.0.1 FMC True False None False False FMC1700-1 False
ftd3120-3-1743154081 127.0.0.2 FTD True False None False False FTD3120-3 False
ftd3120-4-1743152281 127.0.0.3 FTD True False None False False FTD3120-4 False
若要從FTD裝置取得「show version」詳細資訊:
>>> command = "show version"
>>> ftds = service.inventory.filter("device_type","FTD").exec(command).wait()
>>>
>>> # Print the results
>>> for key in ftds.result.keys():
... print(key)
... ftds.result.get(key).data | print
... <- Press Enter twice
ftd3120-3-1743154081
> show version
-------------------[ FTD3100-3 ]--------------------
Model : Cisco Secure Firewall 3120 Threat Defense (80) Version 7.7.0 (Build 89)
UUID : 123a456a-cccc-bbbb-aaaa-a123456abcde
LSP version : lsp-rel-20250327-1959
VDB version : 404
----------------------------------------------------
>
10-62-184-69-1743156301
> show version
----------------[ KSEC-FPR1010-10 ]-----------------
Model : Cisco Firepower 1010 Threat Defense (78) Version 7.7.0 (Build 89)
UUID : 123a456a-cccc-bbbb-aaaa-a123456abcde
LSP version : lsp-rel-20250327-1959
VDB version : 404
----------------------------------------------------
>
ftd3120-4-1743152281
> show version
-------------------[ FTD3100-4 ]--------------------
Model : Cisco Secure Firewall 3120 Threat Defense (80) Version 7.7.0 (Build 89)
UUID : 123a456a-cccc-bbbb-aaaa-a123456abcde
LSP version : lsp-rel-20250327-1959
VDB version : 404
----------------------------------------------------
>
替代方法:
>>> # Get the FTDs. This returns a DeviceDict object:
... ftds = service.inventory.filter("device_type","FTD")
>>> # Access the dictionary of devices from the _async_object attribute
... devices_obj = ftds.__dict__['_async_object']
>>> # Extract the 'name' from each AsyncDevice object
... names = [device.name() for device in devices_obj.values()]
>>> # Get the 'show version' output from all FTD devices:
... command = "show version"
... show_ver_ftds = []
... for name in names:
... ftd = service.inventory[name]
... req = ftd.exec(command)
... req.wait(30) # depending on the number of devices you might need to increase the timeout value
... show_ver_ftds.append(req.result.data)
>>> # Print the inventory device name + 'show version' output from each device:
... for name, show_version in zip(names, show_ver_ftds):
... print(f"Inventory name: {name}")
... print(show_version[2:-2]) # Remove the leading '> ' and trailing ' \n>'
... print("\n")
Inventory name: ftd3120-3-1743154081
show version
-------------------[ FTD3100-3 ]--------------------
Model : Cisco Secure Firewall 3120 Threat Defense (80) Version 7.7.0 (Build 89)
UUID : 123a456a-cccc-bbbb-aaaa-a123456abcde
LSP version : lsp-rel-20250327-1959
VDB version : 404
----------------------------------------------------
Inventory name: ftd3120-4-1743152281
show version
-------------------[ FTD3100-4 ]--------------------
Model : Cisco Secure Firewall 3120 Threat Defense (80) Version 7.7.0 (Build 89)
UUID : 123a456a-cccc-bbbb-aaaa-a123456abcde
LSP version : lsp-rel-20250327-1959
VDB version : 404
----------------------------------------------------
Inventory name: 10-62-184-69-1743156301
show version
----------------[ KSEC-FPR1010-10 ]-----------------
Model : Cisco Firepower 1010 Threat Defense (78) Version 7.7.0 (Build 89)
UUID : 123a456a-cccc-bbbb-aaaa-a123456abcde
LSP version : lsp-rel-20250327-1959
VDB version : 404
----------------------------------------------------
從裝置獲取檔案
- 通過RADKit客戶端,Cisco TAC工程師可以通過SSH連線到裝置並執行各種操作,包括生成故障排除檔案。
思科支援:RADKit控制檯
使用RADKit網路控制檯
- 或者,Cisco TAC支援工程師可以使用RADKit網路控制檯來使用RADKit客戶端。網路控制檯是RADKit客戶端的一部分。
- RADKit網路控制檯是一項功能,可為基本RADKit客戶端功能提供簡單的命令列介面(CLI)。它旨在用於快速連線到RADKit服務例項,建立互動式會話以及下載/上傳檔案,而無任何麻煩和最低限度的培訓。
- 使用命令列啟動Network Console:radkit-network-console
- 有關詳細資訊,請檢視RADKit文檔。
升級和向後相容性
升級到7.7和從7.7或更高版本
- RADKit服務已新增到安全防火牆7.7.0中。
- 升級到7.7.0+版的裝置具有RADKit服務所需的配置。
使用不受支援的FTD的經驗
- FMC和FTD必須具有最低版本7.7.0才能使用此功能(版本低於7.7的FTD無法新增到7.7 FMC RADKit授權中)。
- 不在7.7.0上的註冊FTD不可用於選取以啟用授權。
疑難排解
診斷概述
疑難排解點
1.使用瀏覽器開發工具和FMC日誌檢視FMC中發生的情況。
2.有關FMC上的RADKit服務、RADkit Cloud和RADKit客戶端之間的通訊問題,請檢視RADKit客戶端日誌記錄。
3. RADKit客戶端。

如何疑難排解:瀏覽器的開發工具
- 瀏覽器的Developer Tools, Network頁籤顯示頁面上運行的API呼叫,可用於排除FMC上的問題。可通過按一下右鍵頁面並按一下「檢查」來啟動此功能。
- 在Network頁籤中檢查API呼叫狀態代碼和響應預覽。

RADKit服務Go中介軟體API
Go Middleware for the RADKit integration使用API呼叫,這些呼叫無法通過FMC API資源管理器公開獲得。Go Middleware API日誌位於/var/log/auth-daemon.log。Go Middleware執行的功能包括:
- 使用單點登入過程在RADKit雲中註冊RADKit服務。
- 獲取所有遠端RADKit使用者的授權和相關裝置的清單。
- 使用電子郵件獲取特定遠端RADKit使用者授權和相關裝置。
- 建立遠端RADKit使用者授權,並在指定的時間範圍內授予訪問裝置(所有裝置或選定裝置的清單)的許可權。
- 修改遠端RADKit使用者授權。
- 刪除遠端RADKit使用者授權。
RADKit服務故障排除日誌
- 常規FMC日誌:從FMC ssh會話發出pigtail命令。
- 使用中介軟體API:/var/log/auth-daemon.log
- 包含RADKit和auth-daemon處理資料的日誌:
/var/log/process_stdout.log
/var/log/process_stderr.log
所有這些日誌都包含在FMC/FTD故障排除中。
- 內部RADKit服務日誌:/var/lib/radkit/logs/service/
- 從裝置(FMC和FTD)上的RADKit客戶端執行的操作的日誌:/var/lib/radkit/session_logs/service
要提交到Cisco TAC的日誌
- 錯誤螢幕截圖。
- 問題的描述。
- 複製步驟。
- 包含錯誤的Pigtail和/var/log/auth-daemon.log日誌提取。
監控訪問
在FMC稽核日誌中記錄誰被授予訪問許可權多長時間以及誰被授予訪問許可權。
RADKit會話日誌
從RADKit客戶端在裝置(FMC和FTD)上執行的操作的RADKit會話日誌存在於FMC的/var/lib/radkit/session_logs/service上:
- 日誌來自RADKit服務本身。
- 這些日誌包含在故障排除捆綁包中。
- 也可以從UI訪問日誌(請參見下一節)。
- 有多個作業階段記錄檔;每個會話一個。
RADKit先前會話日誌
通過按一下「Download All Logs」按鈕,可以將從RADKit客戶端執行的裝置操作的RADKit會話日誌作為包含「以前的會話」頁籤中所有日誌的歸檔檔案下載。

故障排除演練的示例問題
疑難排解範例
如果出現「Connect to localhost:2080 [localhost/127.0.0.1] failed(連線到localhost:2080 [localhost/127.0.0.1]失敗)」之類的錯誤:連線被拒絕(連線被拒絕)」,請嘗試從FMC SSH會話重新啟動auth-daemon:
root@firepower:~$ sudo pmtool restartbyid auth-daemon

遙測
已為此功能新增遙測輸出:
"remoteDiagnostics" : {
"isRemoteDiagnosticsEnabled": 0 // 0 = false , 1 = true
}
常見問題
常見問題:登入和註冊
問:如果FMC沒有直接網際網路接入,註冊是否與Proxy配合使用?
A.是,如果代理有權訪問prod.radkit-cloud.cisco.com(用於登記流程)。
問:使用者是否可以將自己的IdP用於此服務?
答:RADKit雲上僅接受Cisco SSO。您可以選擇將您的公司帳戶與思科帳戶關聯,以便可以通過非思科電子郵件註冊RADKit服務。
常見問題:RADKit版本
問: FMC 7.7版中包含哪個版本的RADkit?我們如何知道FMC中包含哪個版本的RADKit?這是否可以在不進行FMC升級的情況下進行更新?
A.
- 7.7.0附帶的RADKit版本為1.6.12。
- RADKit服務的版本顯示在FMC Remote Diagnostics(FMC遠端診斷)頁面的底部:「RADKit服務版本:1.6.12.」

- RADKit與FMC升級包/修補程式捆綁在一起。不支援在FMC中單獨升級RADKit服務。
常見問題:其他
問:是否可以包括非由FMC管理的外部裝置?
答:只有由FMC管理的裝置才能新增到RADKit清單,然後可以通過授權進行訪問。
問:RADKit配置是否作為FMC備份的一部分進行備份?
A.
- 配置不會作為FMC備份的一部分進行備份。
- 它未備份,因為我們預計通常不會提供永久訪問;訪問通常僅持續有限時間。
參考資料
有用的連結: