简介
本文档介绍使用Wireshark分析从安全网络设备(SWA)捕获的数据包的方法。
先决条件
要求
Cisco建议您了解这些主题
- 思科SWA管理
-
显式和透明代理部署方法
- 数据包捕获
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
在联系Cisco技术支持时,您需要提供有关SWA出站和入站网络活动的详细信息,可以通过运行数据包捕获来监控此活动,从而收集流量以供调试或验证之用。
显式代理部署
显式代理要求将客户端配置为直接将其流量发送到代理服务器,通常通过其网络配置(PAC文件或DHCP选项)或浏览器设置中的特定代理设置。这样,代理服务器便可以在将请求转发到目标之前管理和过滤请求。
注意:在显式部署中,离开客户端计算机的数据包的目标IP地址是代理服务器IP地址。
以下是使用显式代理部署时的网络逻辑流:
显式代理数据包流
透明代理部署
透明代理拦截网络流量,无需在客户端进行任何配置更改。流量自动重定向到代理服务器,使其无需客户端显式感知即可过滤和监控请求。
注意:在透明部署中,离开客户端计算机的数据包的目标IP地址是目标服务器IP地址。
以下是使用透明代理部署时的网络逻辑流:
透明代理数据包流
有关SWA显式透明数据包流的详细信息,请参阅了解安全Web设备中的数据包流
AsyncOS版本7.x及更高版本上的数据包捕获
要从图形用户界面(GUI)开始数据包捕获,请导航到右上角的Help and Support菜单,选择Packet Capture,然后单击Start Capture。要停止数据包捕获过程,请单击Stop Capture。
注意:即使在SWA GUI会话到期或注销后,在GUI中启动的捕获仍会跨会话保存。
要从命令行界面(CLI)开始数据包捕获,请输入Packetcapture > Start命令。要停止数据包捕获过程,请输入Packetcapture > Stop命令,然后SWA在会话结束时停止数据包捕获。
SWA数据包捕获配置指南
有关如何在SWA中执行数据包捕获的详细信息。
在内容安全设备上配置数据包捕获
SWA用户指南 — 数据包捕获部分
SWA上的数据包捕获过滤器
SWA GUI和CLI(Packetcapture命令)中的默认捕获使用标准tcpdump过滤器语法。本节提供有关tcpdump捕获过滤器的信息并提供一些示例。
以下是一些最常用的过滤器:
- ip :所有IP协议流量的过滤器。
- tcp:所有TCP协议流量的过滤器。
- 主机:特定IP地址源或目标的过滤器。
tcpdump中经常使用两个逻辑条件:
- 和:仅当满足所有指定条件时才捕获数据包(
使用&&
)。
- 或者:如果满足至少一个条件,则捕获数据包(使用
||
)。
注意:这些逻辑条件区分大小写。
以下是SWA中的示例过滤器,用于在透明或显式部署中按IP地址收集数据包:
源 IP:192.168.1.1
目标 IP:10.20.3.15
host 192.168.1.1 || host 10.20.3.15
此过滤器捕获10.20.3.15和SWA之间的流量,以及SWA和192.168.1.1之间的流量。
提示:无需在过滤器中添加SWA IP地址。
故障排除
当客户端尝试访问网站时,整个通信过程可分为两部分:
- 客户端与SWA通信。
- SWA与目的服务器通信。
提示:在捕获数据包之前,请验证客户端IP地址在通向SWA的路径中是否保持不变。由于在流量到达SWA之前配置了网络地址转换(NAT)规则,或SWA和客户端计算机之间存在下游代理,导致IP地址发生更改。
使用Wireshark过滤器分析显式连接
用于显式连接的Wireshark过滤器
对于数据包捕获的第一阶段通信:源IP应为客户端IP地址,目的IP地址为SWA IP(SWA的入站接口通常为P1接口)。
可以在Wireshark中使用以下过滤器:
按客户端IP过滤:
ip.addr ==
对于通信的第二阶段,源IP是SWA IP地址(外部接口通常是P2接口),目标IP地址是Web服务器的IP地址。
按服务器IP过滤:
ip.addr ==
在显式部署中,客户端将其请求作为HTTP Connect发送到代理,以按HTTP Connect进行过滤:
http.request.method == "CONNECT"
按HTTP请求方法过滤:
http.request.method==GET
或
http.request.uri contains ""
在过滤客户端Hello的HTTPS请求中:
ssl.handshake.type==1
如果您希望看到两端相互通信,最佳操作是使用TCP数据流过滤器。
提示:要查找TCP数据流编号,请右键单击当前过滤器中的任何数据包,或者右键单击所需数据包,然后选择Follow,然后选择TCP Stream。您可以在过滤栏中看到TCP数据流编号。
要隔离第一阶段和第二阶段TCP数据流编号,请使用过滤器:
tcp.stream eq || tcp.stream eq
将<first_phase_stream_number>和<second_phase_stream_number>替换为相应的流编号。
使用Wireshark过滤器分析透明连接
在涉及Web Cache Communication Protocol(WCCP)重定向或基于策略的路由(PBR)的透明请求中,当客户端流量定向到SWA时,SWA使用目标服务器IP地址而不是自己的IP地址进行响应。因此,在透明请求中,数据包捕获显示目标服务器IP地址,但使用SWA MAC地址作为目标MAC地址(在客户端到SWA的流量中),并且如果未启用IP欺骗,则源IP是具有SWA MAC地址的客户端IP地址,数据包从SWA传出。
用于透明连接的Wireshark过滤器
与透明请求的情况一样,Wireshark会过滤与显式连接相同的内容,但会留意到SWA不能使用其实际IP地址与客户端通信,而是将自身伪装为实际目标服务器。
按客户端IP过滤:
ip.addr ==
按服务器IP过滤:
ip.addr ==
警告:如果SWA中未启用IP欺骗,则从SWA到Web服务器的数据包的源IP地址是客户端IP地址。
按HTTP请求方法过滤:
http.request.method==GET
或
http.request.uri contains ""
在过滤客户端Hello的HTTPS请求中:
ssl.handshake.type==1
如果您希望看到两端相互通信,最佳操作是使用TCP数据流过滤器。
提示:要查找TCP数据流编号,请右键单击当前过滤器中的任何数据包,或者右键单击所需的数据包,选择Follow,然后选择TCP Stream。您可以在过滤栏中看到TCP数据流编号
要隔离第一阶段和第二阶段TCP数据流编号,请使用过滤器:
tcp.stream eq || tcp.stream eq
将<first_phase_stream_number>和<second_phase_stream_number>替换为相应的流编号。
Wireshark过滤器类似于显式连接。
如何确认客户端Web请求是显式连接还是透明连接
在显式请求中:客户端在知道代理服务器的情况下访问URL,因此客户端向代理IP地址和代理端口发送HTTP连接请求。
默认情况下,SWA侦听代理服务的TCP端口3128和80。在显式部署数据包捕获中,您可以看到客户端和SWA之间的流量发往这些代理端口号。
在透明请求中:客户端访问URL时,客户端不知道代理IP,并且SWA不会使用自己的IP地址进行通信。相反,SWA伪造了目标服务器IP地址。
相反,在透明模式下,流量看起来好像在客户端和目的服务器(例如,Cisco的网站)之间流动,但目的服务器的MAC地址是SWA的MAC地址。要确认SWA MAC地址,请使用CLI命令:etherconfig > MEDIA。
修改Wireshark视图
要在使用代理对Web请求进行故障排除时更好地概述Wireshark中的数据包,最好在数据包视图中使用服务器名称指示(SNI)和TCP流ID。
将SNI列添加到Wireshark视图
步骤1.使用Wireshark打开数据包捕获文件。
步骤2.右键单击Wireshark中的列名。
步骤3.选择列首选项。
步骤4.单击+符号(添加新列)。
步骤5.为该列输入Name(例如,SNI)。
步骤6.在类型部分,选择自定义。
步骤7.在字段部分中,输入tls.handshake.extensions_server_name。
步骤8.单击OK保存更改。
或者,您可以使用以下步骤:
步骤1.在Wireshark上应用过滤器:ssl.handshake.type.==,用于隔离SSL/TLS握手中的客户端Hello消息。
步骤2.展开协议详细信息:单击Transport Layer Security >展开Handshake Protocol:Client Hello > Expand Extension:Server name >展开Server Name Indication Extension(SNI)。
步骤3.将服务器名称添加为列。右键单击服务器名称(或特定服务器名称),然后选择Apply as Column。
将流编号列添加到Wireshark视图
步骤1.使用Wireshark打开数据包捕获文件。
步骤2.右键单击Wireshark中的列名。
步骤3.选择列首选项。
步骤4.单击+(添加新列)。
步骤5.输入该列的Name(例如,Stream)。
步骤6.在类型部分,选择自定义。
步骤7.在Field部分中,输入tcp.stream。
步骤8.单击OK保存更改。
或者,您可以使用以下步骤:
步骤1.查找HTTP/TCP数据包:确保查看的数据包包含HTTP/TCP协议。
步骤2.选择或点击数据包和一个左下窗格传输控制协议。向下滚动以获取(流索引:数字)。
步骤3.右键单击流索引:编号并应用为列。
相关信息