简介
本文档介绍如何结合使用正则表达式(regex)和grep命令来搜索日志。
先决条件
本文档中的信息基于以下软件和硬件版本:
- 思科网络安全设备(WSA)
- 思科邮件安全设备(ESA)
- 思科安全管理设备(SMA)
带Regex的Grep
当与grep命令一起使用时,Regex可以是一个强大的工具来搜索设备上可用的日志,例如访问日志、代理日志等。您可以使用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并查找在使用此正则表达式进行身份验证时用作用户名的所有计算机名称:
\$@
一旦您拥有发生此情况的行,请对用于此regex的特定计算机名称执行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