我们有一个安装了 IPS 模块的 Cisco ASA 5510 防火墙。
我们有一个客户,我们必须通过 VPN 连接到他们的网络才能通过 FTP 交换文件。我们在本地工作站上使用 Cisco VPN 客户端(版本 5.0.01.0600),这些工作站位于防火墙后面并受 IPS 约束。
VPN 客户端成功连接到远程站点。但是,当我们开始 FTP 文件传输时,我们只能上传 150K 到 200K 的数据,然后一切都停止了。一分钟后,VPN 会话被丢弃。
我想我已经通过使用以下命令暂时禁用 ASA 上的 IPS 服务策略,将其隔离为 IPS 问题:
访问列表 IPS 第 1 行扩展许可 ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 不活动
发出此命令后,我建立了到远程站点的 VPN,并成功传输了整个文件。
在仍然连接到 VPN 和 FTP 会话时,我发出了启用 IPS 的命令:
访问列表 IPS 第 1 行扩展许可 ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
再次尝试文件传输并再次成功,因此我关闭了 FTP 会话并重新打开它,同时保持相同的 VPN 会话打开。此文件传输也成功。这告诉我 FTP 程序没有被过滤或导致问题。此外,我们每天使用 FTP 与许多站点交换文件,没有问题。
然后,我断开了在访问列表处于非活动状态时建立的原始 VPN 会话,并重新连接了 VPN 会话,现在访问列表处于活动状态。开始 FTP 传输后,文件在 150K 后停止。
对我来说,这似乎是 IPS 被阻止,或者以某种方式干扰了远程站点的初始 VPN 设置。
这仅在上周应用了最新的 IPS 签名更新(sig 版本 407.0)后才开始发生。我们之前的 sig 版本是 95 天,因为系统不会自动更新。
关于可能导致此问题的任何想法?
尝试在发送端设置 MTU(实际上双方可能都需要它)。可能有一个设备没有生成或没有正确传递路径 MTU 发现数据包。如果将两端的 mtu 降低到 1350 可以修复它,那么请检查您是否有阻止 ICMP 的 ACL。
407 签名中没有与 FTP 相关的任何内容。通常,当您遇到此类 FTP 问题时,启动然后停止,通常与主动与被动 ftp 相关。你用的是什么ftp客户端?尝试在您的 FTP 客户端上将其从主动更改为被动,看看是否有帮助。
在活动 FTP 中,您要通过 FTP 访问的地方会在与传入请求不同的端口上启动数据传输……这就是为什么它通常被防火墙阻止的原因。
在被动 FTP 中,您启动到不同端口的数据传输并且它可以工作,因为大多数防火墙允许所有出站事件发生。
编辑添加: 签名是累积的。虽然 407 更新没有显示任何与 FTP 相关的内容,但从 95 天前到现在的所有其他更新都可能有一些内容。我不会研究每一个更新来为你找出答案;)
我还不得不问,因为您对此有其他问题...除了将流量转移到 IPS 模块之外,您是否在此 5510 上使用默认检查?如果你是,你真的不需要。
它完全开始传输的事实表明它在建立 FTP 会话的数据部分时没有问题,这排除了 ACL 阻止连接进出的可能性。VPN 会话本身在大文件传输期间丢失似乎表明 IPS 对连接采取了行动(尽管您认为它只会终止 FTP 会话,但这些操作是可配置的,所以谁知道呢?)如果您认为它是如果您的 IPS 丢弃了 VPN 会话,则您应该查看日志和 IPS 警报(如果是您的 IPS 丢弃了它)。您的 IPS 是在混杂模式(基本上是 IDS 模式)还是内联模式下运行?据我所知,如果它处于混杂模式,它不能丢弃流量,因为它只接收流量的副本。由于到目前为止它一直没有对您进行任何更改(签名更新除外),我会问客户他们是否更改了任何内容,不允许超过一定大小的大文件传输;特别是因为你说你 FTP 到其他站点没有问题。如果只是与这一位客户有关,您可以打赌问题出在他们身上。
MTU 或窗口缩放可能是原因
我会说忘记使用被动或主动 FTP。我讨厌 FTPS 和 FTP 的双端口性质。相反,下载WinSSHD 服务器并在单个端口上运行 SFTP 服务器:端口 22 。这样你只处理一个针孔。
使用Tunnelier客户端连接到它。
如果 ftp 传输是 PASV,您需要启用数据包检查,并在防火墙处启用适当的 ACL。
首先备份您运行的配置!
这是我对我们的 cisco ASA 5505 进行数据包检查的程序
任何访问列表都可以有多个条目,您的 vpn 客户端将被分配一个子网
IPS 的 acl 第一行应拒绝检查进出 vpn 客户端子网的流量 acl 的第二行应为其他流量启用 IPS 可能值得排除其他流量,例如 isakmp、gre、esp、ah 等,否则检查需要查看更多您的配置
刚刚有了另一个想法:
有 2 种 Cisco VPN:IPSec over UDP 和 IPSec over TCP。很可能您使用的 TCP 版本会导致 NAT 场景中的数据包丢失。VPN 的 UDP 版本更稳定,因为 TCP 标头的包装方式不同。使用 TCP 版本可能会遇到 NAT 转换问题。它很难解释,但我会尝试编辑客户端协议 VPN 类型...将其更改为 IPSec over UDP。
基本上,此线程上的其他答案建议更改 MTU 设置以尝试破解/解决 NAT 中可能出现的 TCP 上的 IPSec 问题。那不是办法。方法是使用 IPSec over UDP,然后 MTU 无关紧要。