ASA5505 上的 VPN 数据包捕获

ASA5505 上的 VPN 数据包捕获

跟进上一个问题关于如何在 ASA5505 上捕获数据包,我很难区分哪些流量是通过 VPN 传输的,哪些流量是由防火墙本身生成的。

概括一下这个问题,我有一个应用程序通过 VPN 连接到 telnet 服务器,当它在连接空闲一段时间后发送数据时,它会收到重置数据包。我想弄清楚这些重置来自哪里;要么是 VPN 另一端的路由器/telnet 服务器,要么实际上是我这边的 ASA5505,应用服务器位于其后面。我读过关于 ASA 系列由于默认超时时间短而断开连接的文章,希望这就是问题所在。

我已经在应用服务器上捕获了数据包以识别重置。现在我已经在防火墙的内部接口上捕获了数据包,并且重置也在那里。我无法做的是捕获来自 VPN 隧道的数据包以查看它们是否也在那里。我尝试捕获外部接口上的所有数据包,但根本没有任何数据包,所以我猜测 VPN 数据无法通过外部接口捕获。有人知道我如何在数据包从 VPN 隧道出来时立即捕获它们吗?

为了捕获内部的数据包,我在 telnet 服务器上进行了匹配作为源:

capture capture1 interface Inside match tcp 171.28.18.50 255.255.255.255 any

为了尝试捕获外部的数据包,我匹配了任何不是我为监控捕获而建立的 ssh 连接的源/目标:

capture capture2 interface Outside match tcp any neq 22 any neq 22

配置中的超时连接线是:

timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02

更新:根据 Shane Madden 的建议,我捕获了 ESP 数据包,现在已确定重置肯定是由 ASA 生成的。我现在将尝试增加timeout conn

更新:我还没有增加,timeout conn但已经使用 ASDM 中的图表监控了 VPN 连接,似乎当它空闲 30 分钟时,隧道就会关闭。我怀疑当它关闭时 TCP 连接断开,并且在一小时后在连接上发送更多数据时,ASA 会重置。30 分钟是的默认值vpn-idle-timeout。当我运行时,show run | include vpn-idle-timeout我没有得到任何结果,所以希望只需要弄清楚如何设置vpn-idle-timeout变量。

答案1

ESP 数据包应该可以很好地捕获 - 它们在查看是否存在重置方面不会有太大帮助,因为它们仍然是加密的(你的capture外观上的 ACL 或匹配语句是什么样的?)。

尝试将 ESP 数据包时间戳与重置数据包时间戳进行匹配是我能想到的确定 ASA 是否生成重置的最佳方法。

愚蠢的问题:您timeout conn在 ASA 上设置的命令是什么?

答案2

这行代码来自 ASA 的实际配置吗?

timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02

如果是这样,那么答案就是防火墙。TCP 没有实现任何机制来确定连接是否仍然有效(据我所知),因此理论上,即使没有数据流动,客户端和服务器也应该完全满足于维持会话。任何一方都可以实现 TCP keepalive,但这会产生与您所看到相反的影响。任何一方的 TCP keepalive 都会导致防火墙将连接视为活动状态。

TCP 连接的正常终止方式是发起连接的主机向另一端发送 FIN,从发起方的角度来看,这将导致半关闭连接,并且(除非出现任何问题)TCP 连接将继续执行关闭过程。这是一个优雅的过程,不会导致 TCP RST。如果连接的一端崩溃,这将导致半开连接,但同样,双方都无法检测到这种情况(据我所知),因此不会发出任何 RST,除非防火墙发出。除非任一端的软件(telnet 客户端软件或 telnet 服务器软件)被编程为针对长空闲连接发出 RST 或某种类型的终止命令,否则任何一方都不应因长空闲连接而发送 RST。

作为测试(并且为了能够在防火墙的外部接口上进行捕获),您可以考虑建立到另一台不传输 VPN 连接的服务器(如果可用)的 telnet 会话并让其处于空闲状态。您还可以通过建立到不传输 VPN 连接的外部服务器的 FTP 连接并让其处于空闲状态来进行测试。如果您看到相同的 RST 行为,那么我认为可以肯定防火墙是原因。

答案3

您是否考虑过在应用服务器和 telnet 服务器之间的连接上应用 TCP 超时?在您测试之后,我会尝试在最靠近应用服务器的 ASA 接口上应用它。

以下是示例:access-list no_tcp_timeout extended permit ip object appserver object telnetserver

类映射no_tcp_timeout匹配访问列表no_tcp_timeout

策略映射 dmz_policy 类 no_tcp_timeout

服务策略 dmz_policy 接口 dmz

相关内容