簡介
本文檔介紹如何配合使用grep命令使用正規表示式(regex)來搜尋日誌。
必要條件
本文中的資訊係根據以下軟體和硬體版本:
- 思科網路安全裝置(WSA)
- 思科電子郵件安全裝置(ESA)
- 思科安全管理裝置(SMA)
帶Regex的Grep
使用Regex與grep命令一起使用時,它可以用來搜尋裝置上的可用日誌,例如訪問日誌、代理日誌等。您可以使用grep CLI命令根據網站、URL的任何部分和使用者名稱搜尋日誌。
下面是一些常見情況,您可以將regex與grep命令一起使用以協助進行故障排除。
場景1:在訪問日誌中查詢特定網站
最常見的情況是,您嘗試在WSA的訪問日誌中查詢對網站發出的請求。
以下是範例:
透過安全外殼(SSH)連線到裝置。得到提示後,輸入grep命令以列出可用的日誌。
CLI> grep
輸入您要grep的日誌編號。
[]> 1 (Choose the # for access logs here)
輸入正規表示式以grep。
[]> website\.com
案例2:嘗試尋找特定的副檔名或頂層網域
您可以使用grep命令在URL或頂級域(.com、.org)中查詢特定副檔名(.doc、.pptx)。
以下是範例:
若要尋找所有以.crl結尾的URL,請使用以下regex:
\.crl$
要查詢包含副檔名.pptx的所有URL,請使用以下regex:
\.pptx
案例3:嘗試尋找網站的特定區塊
搜尋特定網站時,還可以搜尋特定HTTP響應。
以下是範例:
如果要搜尋domain.com的所有TCP_DENIED/403消息,請使用以下正規表示式:
tcp_denied/403.*domain\.com
案例4:在存取日誌中尋找電腦名稱
使用NTLMSSP身份驗證方案時,可能會遇到使用者代理(Microsoft NCSI是最常見的)在身份驗證時錯誤傳送電腦憑據而不是使用者憑據的例項。要跟蹤導致此問題的URL/使用者代理,請使用帶有grep的regex以隔離進行身份驗證時發出的請求。
如果沒有使用的電腦名稱,請使用grep並查詢在使用此正規表示式進行身份驗證時用作使用者名稱的所有電腦名稱:
\$@
一旦您擁有發生此情況的行,grep將指定與此正規表示式一起使用的特定電腦名稱:
machinename\$
顯示的第一個條目應該是使用者使用電腦名稱(而不是使用者名稱)進行身份驗證時所發出的請求。
案例5:在存取日誌中尋找特定期間
預設情況下,訪問日誌訂閱不包含顯示可讀日期/時間的欄位。如果您想要檢查特定期間的存取記錄,請完成以下步驟:
- 從站點(例如Online Conversion)查詢UNIX時間戳。
- 獲取時間戳後,在訪問日誌中搜尋特定時間。
以下是範例:
Unix時間戳1325419200相當於01/01/2012 12:00:00。
您可以使用此正規表示式條目來搜尋2012年1月1日12:00附近的訪問日誌:
13254192
案例6:搜尋嚴重或警告訊息
您可以使用規則運算式,在任何可用的記錄(例如代理主機記錄或系統記錄)中搜尋嚴重或警告訊息。
以下是範例:
要在代理日誌中搜尋警告消息,請輸入此正規表示式:
CLI> grep
輸入您要grep的日誌編號。
[]> 17 (Choose the # for proxy logs here)
輸入正規表示式以grep。
[]> warning