我正在尝试学习如何使用思科 ASA 防火墙,但我真的不知道自己在做什么。我正尝试设置一些出口过滤,目的是只允许最少量的流量流出网络,即使它源自内部接口。换句话说,我正尝试设置 dmz_in 和 inside_in ACL,就好像内部接口不太值得信赖一样。
我还没有完全掌握所有的概念,所以我遇到了一些问题。
假设我们使用三个接口:内部、外部和 DMZ。
假设我有一台服务器 (XYZ1),它必须响应 PING、HTTP、SSH、FTP、MySQL 和 SMTP。我的 ACL 如下所示:
access-list outside_in extended permit icmp any host X.Y.Z.1 echo-reply
access-list outside_in extended permit tcp any host X.Y.Z.1 eq www
access-list outside_in extended permit tcp any host X.Y.Z.1 eq ssh
access-list outside_in extended permit tcp any host X.Y.Z.1 eq ftp
access-list outside_in extended permit tcp any host X.Y.Z.1 eq ftp-data established
access-list outside_in extended permit tcp any host X.Y.Z.1 eq 3306
access-list outside_in extended permit tcp any host X.Y.Z.1 eq smtp
我这样应用它:
access-group outside_in in interface outside
我的问题是,我可以做什么来进行出口过滤?我只想允许最少量的流量出去。我是否只需“反转”规则(即 smtp 规则变为
access-list inside_out extended permit tcp host X.Y.Z.1 any eq smtp
)然后就此打住,还是我可以进一步筛选我的选项?我可以安全地阻止什么?
此外,在进行出口过滤时,将“反向”规则应用于外部接口是否足够,还是我还应该考虑制作 dmz_in 和 inside_in acl?
我经常听到“出口过滤”这个词,但我真的不知道自己在做什么。任何指向好的资源和阅读的指示也会很有帮助,我发现的大多数都假设我知道的比我实际知道的多得多。
答案1
在介绍具体内容之前,先简单介绍一下。每个接口都有两个 ACL:一个入口 ACL(名为 interface_in)和一个出口 ACL(名为 interface_out)。命名的诀窍是避免以“内部”和“外部”的角度来思考;而是以“进入/离开此接口的流量”的角度来思考。
这在应用给定规则方面提供了很大的灵活性,但也可能成为不必要的复杂性的巨大来源。
那么,回到你的例子。如果你想要阻止端口 25 (smtp) 上来自内部主机并发往互联网主机的连接,你有两个选择:
access-list inside_in extended deny tcp host X.Y.Z.1 any eq smtp
和
access-list outside_out extended deny tcp host X.Y.Z.1 any eq smtp
如果您只有两个接口,这些命令的效果相同。当您有更多接口时,情况会变得复杂;例如,DMZ 接口。
第一个命令(在 inside_in ACL 上)将仅阻止从内部到外部的流量,而不会阻止从 dmz 到外部的流量。第二个命令(在 outside_out ACL 上)将阻止两者。
因此,这些是应用出口规则的选项。为了您的理智,我的建议是只使用两个选项中的一个(如果需要,请复制一些规则);如果您强迫自己检查 5 个不同的 ACL 来排除一个流量流的故障,那么您就是在自找麻烦。