簡介
本文檔介紹適用於Cisco安全防火牆的First Responder程式的使用和實施。
必要條件
需求
本文件沒有特定需求。
採用元件
本檔案是根據思科安全防火牆產品撰寫的。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
First Responder計畫由TAC建立,旨在使為未決案例提供診斷資料更加輕鬆快捷。此程式有兩個主要組成部分:
自動化電子郵件
此電子郵件在案例開始時發出,並附上有關如何收集和上傳診斷資料以進行TAC分析的說明。有多種技術可以利用此系統,並且每封電子郵件都對映到建立案例時選擇的技術和子技術。
指令碼/指令
First Responder計畫的每項實施都有其獨特的處理資料收集和交付的方式。安全防火牆實施利用TAC編寫的firepower.py Python指令碼來完成此操作。自動電子郵件進程會生成一個單行命令,該命令是此特定情況所特有的,可以複製該命令並將其貼上到Secure Firewall裝置的CLI中運行。
此電子郵件的原因
為第一個響應程式啟用某些技術。這意味著,每次針對這些啟用的技術之一提交案例時,都會發出第一響應方電子郵件。如果您收到第一響應者電子郵件,並且認為資料請求不相關,請隨意忽略該通訊。
對於安全防火牆使用案例,第一個響應程式僅限於Firepower威脅防禦(FTD)軟體。如果運行自適應安全裝置(ASA)代碼庫,請忽略此電子郵件。由於這兩個產品運行在相同的硬體上,通常可以觀察到,ASA案例是在Secure Firewall技術空間中建立的,這會生成第一響應方電子郵件。
自動化電子郵件
以下是此程式所傳送的自動電子郵件範例:
From: first-responder@cisco.com <first-responder@cisco.com>
Sent: Thursday, September 1, 2022 12:11 PM
To: John Doe <john.doe@cisco.com>
Cc: attach@cisco.com
Subject: SR 666666666 - First Responder Automated E-mail
Dear John,
In an effort to resolve your case faster it may be necessary to collect some diagnostic data from your environment.
Based on the problem statement you provided, below are a few pieces of data that would help speed the resolution and the steps to collect them:
*** Troubleshoot File ***
* Connect to the device using SSH
* Issue the command expert, skip this step for FMC version 6.4.x and earlier
* Issue the command sudo su
* When prompted for the password, enter your password.
* For FMC 6.4 or FTD 6.7 and later issue the command
curl -s -S https://cxd.cisco.com/public/ctfr/firepower.py | python - -c 666666666 -t aBcDeFgHiJkLmNoP -fr --auto-upload &
* For FMC 6.3 or FTD 6.6 and earlier issue the command
curl -k -s -S https://cxd.cisco.com/public/ctfr/firepower.py | python - -c 666666666 -t aBcDeFgHiJkLmNoP -fr --auto-upload &
For more information on what this command does, or to understand why you are receiving this e-mail - please refer to
<LINK_TO_THIS_ARTICLE>
For 6.3 and earlier versions we recommend confirming cxd.cisco.com resolves to <CURRENT_CXD_IP1> or
<CURRENT_CXD_IP2>. Furthermore, we recommend validating the SHA checksum of the file by running
url -s -k https://cxd.cisco.com/public/ctfr/firepower.py | shasum which should output <CURRENT_SHA>.
If you are unable to upload troubleshooting files (or would prefer not to), please let us know what
hardware and software version ou are running if you have not already.
Sincerely, First Responder Team
第一響應者程式的自動電子郵件被分為兩個部分,稱為引入塊和資料請求塊。
簡介區塊
簡介塊是包含在每個第一響應方電子郵件中的靜態字串。此導言句僅用於為資料請求塊提供上下文。以下是簡介區塊的範例:
Dear <NAME>,
In an effort to resolve your case faster it may be necessary to collect some diagnostic data from your environment.
Based on the problem statement you provided, below are a few pieces of data that would help speed the resolution
and the steps to collect them:
資料要求區塊
資料請求塊是第一響應方程式的核心。每個資料塊都是為特定技術收集資料而預先定義的一組步驟。如背景資訊部分中所述,每個資料請求塊對映到特定技術。這是選擇用於提交支援請求的相同技術。 通常,自動電子郵件包含一個資料請求塊。然而,如果所選技術對應了一個以上的資料要求區塊,則電子郵件中會包含多個資料要求。以下是具有多個資料請求的資料請求塊的示例格式:
*** <REQUEST NAME 1> ***
<REQUEST 1 STEPS>
*** <REQUEST NAME 2> ***
<REQUEST 2 STEPS>
例如,對於Secure Firewall,當請求與Firepower威脅防禦(FTD)相關的遠端訪問VPN (RA-VPN)問題提供幫助時,通常會包含多個資料請求塊,因為VPN技術還配置了對映資料請求塊,用於幫助收集DART捆綁包。
產生的命令
具體來說,對於Secure Firewall使用案例,系統將為每個案例生成一個唯一的一行命令,作為自動電子郵件的一部分。以下是一行指令結構的明細:
- curl命令用於下載最新版本的firepower.py指令碼。
- -k 標誌是curl的一個選項,用於在連線期間忽略證書錯誤。
- -s 標誌是在silent模式下使curl運行的選項。這用於抑制正常捲曲輸出,因為它有噪音。
- -S 標誌是curl顯示錯誤的選項。這用於強制curl即使在啟用silent選項的情況下仍顯示輸出錯誤。
- 承載最新版本firepower.py指令碼的URL。此路徑會指示curl指令將要執行的最新程式檔主體拉出。
- 這是Linux管道,它將curl命令(python指令碼的內容)的輸出傳遞到下一步中的執行語句。
- 在此步驟中,使用附加-呼叫裝置上的python二進位制。這指示python來源來自stdin(因為指令碼的內容從curl管道傳輸)。
- -c 標誌是firepower.py指令碼的一個輸入引數,它指示必須將資料上載到的案例號。此選項後的666666666值是示例案件編號。
- -t 標誌是firepower.py指令碼的一個輸入引數,它指示針對此特定情況生成的唯一令牌(口令)。此選項後面的aBcDeFgHiJkLmNoP值即為此案例的範例語彙基元。
- 增加了-fr標誌以指示必須更改檔案的名稱,以便在前面加上字串SFFR-以指示該檔案是由第一個響應程式指令碼生成的。
- —auto-upload標誌是firepower.py指令碼的一個特殊引數,它指示指令碼在自動化模式下運行。您可以在指令碼特定段落中找到更多相關資訊。
- & 命令在後台運行整個命令,允許使用者在指令碼執行時繼續與其外殼互動。
注意:對於6.4之前的任何FMC版本和6.7之前的任何FTD版本,-k標誌都是必需的,因為CXD使用的根證書在FMC版本6.4和FTD版本6.7之前不受Firepower裝置的信任,這會導致證書驗證失敗。
Firepower.py指令碼
該指令碼的主要目標是從安全防火牆裝置生成並上傳診斷捆綁包,稱為故障排除。要生成此故障排除檔案,firepower.py指令碼只需呼叫負責生成此捆綁包的內建sf_troubleshoot.pl指令碼。此指令碼與從GUI生成故障排除時呼叫的指令碼相同。除了故障排除檔案之外,指令碼還能夠收集未包括在故障排除捆綁包中的其他診斷資料。目前,可以收集到的唯一額外資料是核心檔案,但將來需要時可以擴展這些資料。該指令碼可以在自動化或互動模式下運行:
自動化
此模式處於啟用狀態,並在您運行指令碼時使用—auto-upload選項。此選項會停用互動式提示、啟用核心檔案收集,並自動將資料上傳至案例。自動電子郵件產生的一行指令包括—auto-upload選項。
互動
這是指令碼的預設運行模式。在此模式下,使用者會收到提示,確認是否收集其他診斷資料(如核心檔案)。無論執行模式為何,有意義的輸出都會列印至熒幕,並記錄至記錄檔,以指示指令碼的執行進度。指令碼本身透過內聯代碼註釋進行了詳盡的記錄,可以從https://cxd.cisco.com/public/ctfr/firepower.py下載/檢視。
指令碼的預期輸出
下面是成功執行指令碼的示例:
root@ftd:/home/admin# curl -k -s -S https://cxd.cisco.com/public/ctfr/firepower.py | python - -c 666666666 -t aBcDeFgHiJkLmNoP -fr --auto-upload &
[1] 26422
root@ftd:/home/admin#
`/var/common/first_responder_notify` successfully uploaded to 666666666
Running sf_troubleshoot.pl command to create a troubleshoot file...
Troubleshoot file successfully generated at /ngfw/var/common/results-08-30-2022--135014.tar.gz
Attempting to upload troubleshoot to case...
############################################################################################################################ 100.0%
`/ngfw/var/common/results-08-30-2022--135014.tar.gz` successfully uploaded to 666666666
Found the following core files:
(0 B) - /ngfw/var/common/core_FAKE1.gz
(0 B) - /ngfw/var/common/core_FAKE2.gz
(0 B) - /ngfw/var/common/core_FAKE3.gz
Successfully created /ngfw/var/common/cores_666666666-1661867858.tar.gz
Attempting core file upload...
############################################################################################################################# 100.0%
`/ngfw/var/common/cores_6666666660-1661867858.tar.gz` successfully uploaded to 666666666
FINISHED!
請注意,此輸出示例包括核心檔案上傳。如果您的裝置上不存在任何核心檔案,則會 "No core files found. Skipping core file processing" 出現此消息。
常見問題
以下是您可以遇到的一些常見問題(按流程/執行的順序):
電子郵件安全性/ URL重新寫入
通常,會發現終端使用者具有某種級別的電子郵件安全性,可以重寫URL。這會更改作為自動電子郵件一部分生成的單行命令。這會導致執行失敗,因為用於提取指令碼的URL已被重新寫入並且無效。以下是預期的一行指令的範例:
curl -s -S https://cxd.cisco.com/public/ctfr/firepower.py | python - -c 666666666 -t aBcDeFgHiJkLmNoP -fr --auto-upload &
解決步驟
如果電子郵件中命令中的URL不是https://cxd.cisco.com/public/ctfr/firepower.py,則該URL很可能在傳輸過程中被重寫。若要修正此問題,請在執行指令之前先取代URL。
DNS故障
當裝置無法解析URL以下載指令碼時,經常會發生此curl錯誤:
curl: (6) Could not resolve host: cxd.cisco.com
解決步驟
若要修正此問題,請檢查裝置上的DNS設定,以確保裝置能夠正確解析URL以繼續進行。
無法開啟/建立記錄檔
指令碼會首先嘗試做的就是建立(或打開,如果已經存在)名為first-responder.log的日誌檔案(如果它已存在),該檔案位於當前工作目錄中。如果此操作失敗,則會顯示指示簡單許可權問題的錯誤:
Permission denied while trying to create log file. Are you running this as root?
作為此操作的一部分,所有其他錯誤都會被辨識並列印到螢幕上,格式如下:
Something unexpected happened while trying to create the log file. Here is the error:
----------
<EXCEPTION BODY>
----------
解決步驟
若要修正此錯誤,只要以管理使用者(例如admin或root)身分執行命令檔即可。
無法開啟/寫入通知檔案
作為指令碼執行的一部分,將在系統上建立名為first_responder_notify的0位元組檔案。接著將此檔案上傳到案件,作為此程式自動化的一部分。此檔案會寫入「/var/common」目錄。如果執行指令碼的使用者沒有足夠的許可權將檔案寫入此目錄,指令碼會顯示錯誤:
Failed to create file -> `/var/common/first_responder_notify`. Permission denied. Are you running as root?
解決步驟
若要修正此錯誤,只要以管理使用者(例如admin或root)身分執行命令檔即可。
注意:如果遇到與許可權無關的錯誤,螢幕上將顯示全部捕獲錯誤 "Unexpected error while trying to open file -> `/var/common/first_responder_notify`. Please check first-responder.log file for full error"。您可以在first-responder.log中找到完整的異常主體。
無法鎖定sf_troubleshoot.pid檔案
若要確保一次只執行一個疑難排解產生程式,疑難排解產生程式檔會先嘗試鎖定/var/sf/run/sf_troubleshoot.pid檔案,再繼續進行。如果指令碼無法鎖定檔案,則會顯示錯誤:
Failed to run the `sf_troubleshoot.pl` command - existing sf_troubleshoot process detected. Please wait for existing process to complete.
解決步驟
大多數情況下,此錯誤表示獨立的故障排除生成任務已在進行中。有時,這是使用者意外連續兩次執行一行命令的結果。若要修正此問題,請等候目前的疑難排解產生工作完成,稍後再試一次。
注意:如果sf_troubleshoot.pl指令碼本身發生錯誤,則此錯誤將顯示在螢幕「Unexpected PROCESS error while trying to run `sf_troubleshoot.pl` command. Please check first-responder.log file for full error"」上。您可以在first-responder.log中找到完整的異常主體。
上傳問題
指令碼中有一個通用上載函式,負責在整個指令碼執行過程中所有檔案上載。此函式只是python包裝函式,可執行捲曲上傳指令以將檔案傳送至案件。因此,在執行期間遇到的任何錯誤都會以curl錯誤代碼的形式返回。如果上傳失敗,則此錯誤會顯示在熒幕上:
[FAILURE] Failed to upload `/var/common/first_responder_notify` to 666666666. Please check the first-responder.log file for the full error
檢查first-responder.log檔案,檢視完整錯誤。通常,first-responder.log檔案如下所示:
08/29/2022 06:51:57 PM - WARNING - Upload Failed with the following error:
----------
Command '['curl', '-k', '--progress-bar', 'https://666666666:aBcDeFgHiJkLmNoP@cxd.cisco.com/home/',
'--upload-file', '/var/common/first_responder_notify']' returned non-zero exit status 6
----------
解決步驟
在這種情況下,curl返回退出狀態6,這意味著Could not resolve host。當您嘗試解析主機名cxd.cisco.com 時,這是一個簡單的DNS故障。請參閱捲曲文檔以解碼任何未知的退出狀態。
相關資訊