ASA 检查清晰度

网络工程 思科 思科-ASA 防火墙
2022-02-16 21:11:51

我想确保我得到这个,因为它让我有点生气。

class-map ftp 

 match port tcp eq 21 

class-map http 

 match port tcp eq 21 [it should be 80] 

policy-map test 

 class ftp 

  inspect ftp 

 class http 

   inspect http 

思科网站上的这个例子,他们说“发往端口 21 的流量被错误地配置为 FTP 和 HTTP 检查”。那么这是否意味着防火墙为 HTTP 创建了一个动态 ACL,但它如何在目标端口为 21 的情况下工作?这真的让我很困惑。

我还假设“检查”命令的目的是在防火墙中创建一个动态 ACL 或一个例外,以将所有流量返回到网络?

再一次,我知道这是 Cisco 站点的错误配置,目的是为了显示错误配置在检查命令方面的样子,他们说“发往端口 21 的流量被错误地配置为 FTP 和 HTTP 检查”

如果在端口 21 上接收到 FTP 数据包,这将触发两个类映射,那么 ASA 是否会为端口 21 和 80 上的 scr 和 dst 地址创建动态 ACL?这对我来说似乎是合乎逻辑的,但我不确定。

干杯

1个回答

首先,这里没有动态 ACL,状态检查也不是一个因素。(但是,请阅读最后一段以了解 FTP 的特殊之处。)无论inspect您配置了什么命令,防火墙都会执行状态检查。因此,由于这种状态行为,返回流量将始终通过防火墙返回,您可以通过执行show conn.

语句的目的inspect是调用更高的 OSI 层检查。例如,ESMTP 检查将丢弃 SMTP 客户端尝试协商 TLS 的连接。如您所见,这将是第 7 层检查,以查看某些有效负载是否包含某些内容。这就是inspect语句的作用。

与该声明相反inspect,状态检查仅允许已允许流的返回流量通过防火墙返回到与启动它们的端口完全相同的端口上。那只是第4层。

现在,像您发布的那样进入错误配置,当我阅读有关此类事情的文档时,我的记忆有点模糊。如果我没记错的话,ASA 只会inspect为任何给定的流量处理一条语句。因此,由于class ftp首先发生在 中policy-map test,流量将由 FTP 检测而不是 HTTP 检测来检测。

现在,由于 FTP 的设计方式(多个 TCP 流、动态端口),ASA 的 FTP 检查具有额外的特殊行为。它将挖掘 TCP 端口 21 上数据包的有效负载,以查找将打开 FTP 数据通道(将使用 TCP 端口 20)的操作。当这些操作发生时,FTP 负载将包含应使用的 TCP 目标端口号(1024 以上的某个随机数),并且 ASA 将通过添加临时 ACL 来快速响应数据通道的 SYN 数据包以通过防火墙。一旦 SYN 通过防火墙,状态检查就会启动并自动允许返回流量。重申一下,让 SYN 数据包通过是inspect声明,其中让返回流量通过是状态检查的功能。

最后一条评论:您实际上可以通过您的 ASA 防火墙允许 FTP,而无需使用该inspect ftp语句(尽管存在此端口 20 行为),只需构建一个 ACL,该 ACL 允许端口 21 上的客户端和服务器之间以及客户端和服务器之间的流量TCP 端口 20 上的方向。您将有效地完成该inspect语句的意图。但这会受到安全人员的严重反对。与此相反,您无法在没有状态检查的情况下运行防火墙,因为(1)据我所知,无法将其关闭,以及(2)您将从防火墙内部删除所有安全性。