我有一台运行 v8.4 的 ASA 5505。我的 ISP 为我提供了一个静态 IP,我需要将其用于我的 INSIDE 网络和 DMZ。这成为一个 PAT 问题,因为我需要一些端口终止于 DMZ,一些端口终止于 INSIDE 接口。如果我有多个 IP,这会很简单,但我没有。
我想知道是否有人可以帮助我提供正确的 NAT 语句。8.4 与我习惯的非常不同,所以我不知道如何让这一切正常工作。
答案1
ASA 8.3 及更高版本在配置 NAT 时几乎强制使用对象。虽然这可能会让那些多年来一直不使用对象来管理 PIX/ASA 的人感到困扰,但在过去 6 个月左右的时间里,我实际上已经喜欢上了新的 NAT 范例。静态 PAT——您将在端口中“端口转发”到内部和 dmz 主机,并不像我希望的那样干净利落。
有些人可能不同意我的对象命名方案 - 但要知道它在超过 100 个 ASA 中使用,其中一些有超过 1500 行配置文件 - 并且对于在 CLI 上保持事物的直接性有很大帮助。
上述答案中发布的链接是一个很好的开始。
我强烈建议您先阅读 ASA 8.4 CLI 配置指南 NAT 部分。即使您不理解它,也请先阅读它以了解术语。
http://www.cisco.com/en/US/docs/security/asa/asa84/configuration/guide/nat_overview.html
然后继续观看 Jay Johnston 的视频。当我第一次尝试理解事物时,我发现它非常有帮助。
https://supportforums.cisco.com/docs/DOC-12324
直接回答你的问题。
假设
- 外部接口 IP:1.1.1.2/30
- 内部接口IP:192.168.10.1/24
dmz 接口 IP:192.168.20.1/24
内部和 dmz 子网需要动态 PAT。
特定内部和 dmz 主机需要静态 PAT(端口转发),具体定义如下
- 192.168.10.10 内部需要 TCP/22
- dmz 192.168.20.20 需要 TCP/53、TCP/80、TCP/443 和 UDP/53
首先为您的网络定义网络对象,然后为两个对象配置动态 PAT 的对象 NAT。请注意,我使用的是我的对象命名标准。 如果您运行 show run,您将看到每个对象出现两次“对象网络...”。一次是针对对象定义,然后稍后在仅包含 nat 语句的配置中再次出现。
object network net-192.168.10.0-24
description inside Network
subnet 192.168.10.0 255.255.255.0
nat (inside,outside) dynamic interface
object network net-192.168.20.0-24
description dmz Network
subnet 192.168.20.0 255.255.255.0
nat (dmz,outside) dynamic interface
为您的主机定义网络对象。 这就是 PAT 在 8.3 及更高版本中变得有点棘手的地方。我们为主机本身定义一个对象(用于 ACL 以使其变得简单)。然后我们为每个需要的端口定义另一个网络对象。使用传统的静态 NAT 非常容易和漂亮——使用静态 PAT 可能会变得有点麻烦,但仍然非常具有描述性。
object network hst-192.168.10.10
description My inside Host
host 192.168.10.10
object network hst-192.168.10.10-tcp22
description My inside Host NAT SSH
host 192.168.10.10
nat (inside,outside) static interface service tcp 22 22
object network hst-192.168.20.20
description My dmz Host
host 192.168.20.20
object network hst-192.168.20.20-udp53
description My dmz Host DNS
host 192.168.20.20
nat (dmz,outside) static interface service udp 53 53
object network hst-192.168.20.20-tcp80
description My dmz Host HTTP
host 192.168.20.20
nat (dmz,outside) static interface service tcp 80 80
object network hst-192.168.20.20-tcp443
description My dmz Host HTTPS
host 192.168.20.20
nat (dmz,outside) static interface service tcp 443 443
现在定义用于 ACL 的对象组服务组。
object-group service svcgrp-192.168.10.10-tcp tcp
port-object eq 22
object-group service svcgrp-192.168.20.20-udp udp
port-object eq 53
object-group service svcgrp-192.168.20.20-tcp tcp
port-object eq 80
port-object eq 443
配置了对象和对象组,配置了 NAT(使用网络对象 NAT 动态 PAT 和静态 PAT)——剩下的就是 ACL 方面的事情。
这就是真正的结合点——特别是传统的静态 NAT 场景。 在 ASA 8.3+ 中,UN-NAT(和 NAT)发生在 L3/L4/访问组 ACL 检查之前 - 因此在访问组 ACL 中使用真实 IP - 即使绑定到外部接口。
access-list outside_access_in extended permit tcp any object hst-192.168.10.10 object-group svcgrp-192.168.10.10-tcp
access-list outside_access_in extended permit udp any object hst-192.168.20.20 object-group svcgrp-192.168.20.20-udp
access-list outside_access_in extended permit tcp any object hst-192.168.20.20 object-group svcgrp-192.168.20.20-tcp
不要忘记将您的 ACL 绑定到接口。
access-group outside_access_in in interface outside
请注意,我避免在对象标识符中使用“友好名称”。在 CLI 上调试时,这会成为一件麻烦事。我发现我使用的对象名称非常具有描述性,并且在实际场景中非常方便。
此外,如果静态 NAT 允许使用更多端口,您只需向主机的 svcgrp 对象添加一个端口对象条目即可。但是,如果使用静态 PAT,则必须为静态 PAT 添加一个新的网络对象 - 每个对象只允许一个 nat 语句 -和将端口对象添加到主机的 svcgrp 对象。
已向 Cisco 提交了功能请求,以允许每个网络对象使用多个静态 PAT 语句。这将大大减少静态 PAT 场景中所需的网络对象数量。到目前为止,尚未添加此功能。
·韦弗
答案2
答案3
这是我在 8.4 中用于 NAT 的链接,http://www.cisco.com/en/US/docs/security/asa/asa84/configuration/guide/nat_objects.html#wp1106703
这是一个可以帮助您入门的示例。
假设
外部接口上的 ISP 静态 IP 10.0.0.1
dmz 接口上的 DMZ 主机 IP 192.168.1.2
内部接口上的 INSIDE 主机 IP 192.168.2.2
http 转到 dmz 主机
https 转到内部主机
样本
object service DMZ-HTTP
service tcp eq http
object service INSIDE-HTTPS
service tcp eq https
object network OUTSIDE_INT_10.0.0.1
host 10.0.0.1
object network DMZ_SERVER_192.168.1.2
host 192.168.1.2
object network INSIDE_SERVER_192.168.2.2
host 192.168.2.2
nat (dmz,outside) source static DMZ_SERVER_192.168.1.2 OUTSIDE_INT_10.0.0.1 service DMZ-HTTP DMZ-HTTP
nat (inside,outside) source static INSIDE_SERVER_192.168.2.2 OUTSIDE_INT_10.0.0.1 service INSIDE-HTTPS INSIDE-HTTPS