教程篇(6.0) 03. 网络地址转换 (NAT) ❀ FortiGate 安全 ❀ Fortinet 网络安全专家 NSE 4

在本课中,你将学习如何配置网络地址转换(NAT),并使用它为通过FortiGate的流量实现源NAT和目标NAT。

  在本次课程中,你将会探索以下主题:

  • NAT介绍
  • 防火墙NAT策略
  • 中央NAT
  • Session helpers
  • 会话
  • 最佳实践和故障排查

在完成这一节之后,你应该能够:

  • 理解NAT和端口地址转换(PAT)
  • 了解NAT可用的不同配置模式

  通过了解NAT和PAT的工作方式以及可用的NAT配置模式,你将有一个良好的开端来规划NAT在你的网络中的实现。

 NAT是使单个设备(如防火墙或路由器)能够充当Internet或公共网络与本地或私有网络之间的代理的过程。

  NAT通常被实施为一个或一个组合,原因如下:

  • 改进的安全性:NAT设备背后的地址实际上是隐藏的。
  • 地址放大:数以百计的计算机可以使用很少的一个公共IP地址。
  • 内部地址稳定性:即使因特网服务提供商(ISP)发生变化,地址也可以保持不变。

  NAT和PAT,也称为NAPT,将内部(通常是私有的)IP地址转换为外部(通常是公共的或因特网的)IP地址。在FortiOS,NAT和流量转发适用于相同的防火墙策略。然而,诊断清楚地显示NAT和转发作为单独的行动。

  • 对于传出连接:可以使用中央源NAT、IP池和中央源NAT表中的NAT选项,称为源NAT。
  • 对于传入连接:可以使用Virtual IP(VIP)和目的NAT,并且被称为目的NAT。

  NAT64和NAT46是用于指允许IPv6寻址的主机与IPv4寻址的主机通信的机制,反之亦然。没有这种机制,网络上的IPv6节点,例如公司LAN,将不能与仅处于IPv4环境中的网站通信,并且IPv4环境将不能连接到IPv6网络。

  NAT66是两个IPv6网络之间的NAT。

 当使用防火墙策略NAT模式时,必须为每个防火墙策略配置源NAT和目的NAT。

  中央NAT配置按虚拟域进行,这意味着源NAT和目的NAT配置自动应用于多个防火墙策略。这是根据你指定的源NAT和目的NAT规则,而不是防火墙策略NAT中的每个防火墙策略。作为最佳范例,当使用中央NAT时,应该配置特定的源NAT和目的NAT规则,以便它们仅匹配配置中期望的防火墙策略。

  防火墙策略NAT和中央NAT都产生相同的结果;然而,一些部署场景最适合于防火墙策略NAT,而一些最适合于中央NAT。

  防火墙策略NAT建议用于包含相对较少的NAT IP地址的部署,并且每个NAT IP地址将具有单独的策略和安全配置文件。对于多个NAT IP地址具有相同的策略和安全配置文件的更复杂的场景,或者在下一代防火墙(NGFW)策略模式下,建议使用中央NAT,其中在第一个分组中可能无法确定适当的策略。

 送分题。

你已经介绍了NAT。接下来,你将了解防火墙策略NAT。

 在完成这一节之后,你应该能够:

  • 配置防火墙策略以执行源NAT和目的NAT(VIP)
  • 用IP池应用源NAT
  • 用VIP或虚拟服务器配置目的NAT

  通过展示这些领域的能力,你将能够配置防火墙策略并应用适当的源NAT和目的NAT,并且理解如何将其应用于通过FortiGate的流量。

配置防火墙策略源NAT的方法有两种:

  • 使用出接口地址
  • 使用动态IP地址池

 在防火墙策略上启用NAT时,源NAT选项使用出口接口地址。这是多对一的NAT。换句话说,使用PAT,使用原始源地址和源端口组合以及分配的源端口跟踪连接。这是与overload IP池类型相同的行为,稍后你将了解。

  可选项,你可以选择一个固定端口,在这种情况下,源端口转换被禁用。对于固定端口,如果两个或多个连接对于单个IP地址需要相同的源端口,则只能建立一个连接。

  在上图所示的示例中,创建了从内部到wan1(IP地址203.0.113.10)的防火墙策略,并且用户从源10.10.10.10:1025发起针对192.168.10.10:80的流量。因为防火墙策略启用了NAT,所以源IP地址通过端口转换被转换为出口接口IP。

IP池是一种机制,它允许离开FortiGate防火墙的会话使用NAT。IP池定义单个IP地址或一系列IP地址,以便在会话期间用作源地址。这些指定的地址将被用来代替分配给FortiGate接口的IP地址。

  IP池通常配置在与接口IP地址相同的范围内。

  当配置将用于NAT的IP池时,存在一个必须考虑的限制。如果IP池中的IP地址与分配给接口的IP地址不同,如果路由配置不当,基于这些IP地址的通信可能会失败。例如,如果分配给接口的IP地址是172.16.100.1/24,则不能为IP池选择10.10.10.1至10.10.10.50,除非配置了适当的路由。

  有四种类型的IP池可以配置在FortiGate防火墙上:

  • Overload
  • 一对一
  • 固定端口范围
  • 端口块分配

 如果使用IP池,则源地址被转换为来自该池的地址,而不是出口接口地址。池中地址的数量越大,可以支持的连接的数量就越多。例如,在需要更多连接的企业网络中,或者在希望一个子网使用特定公共IP而不是另一个子网来基于源IP地址限制访问的网络中。

  默认IP池类型是Overload。在过载IP池类型中,使用多对一或多到少的关系和端口转换。

  在这个例子中,源IP 10.10.10.10将从IP池转换为IP地址(203.0.113.2-203.0.113.5)。

 在一对一池类型中,内部IP地址以先到先得的方式映射到外部地址。

  有一个内部地址到外部地址的单一映射。映射不是固定的,如果没有可用的地址,连接将被拒绝。

  此外,在一对一中,PAT是不需要的。在上面示例中,可以看到入口和出口地址都显示相同的源端口。

固定端口范围IP池类型关联内部IP地址范围和外部IP地址范围,并禁用PAT。它允许内部启动IP或内部端IP范围到外部启动IP或外部端IP范围的固定映射。

  上图示例显示了固定端口范围IP池。内部地址范围为10.0.1.10至10.0.1.11,映射到外部地址范围为10.200.1.7至10.200.1.8。

上图显示的两个CLI输出说明了端口块分配IP池类型和默认Overload IP池类型之间的行为差异。

  使用hping,非法客户端每秒产生许多SYN数据包。在第一个示例中,端口块分配类型将客户端限制为该IP池的64个连接。其他用户不会受到非法客户端的影响。

  在第二个示例中,Overload类型不施加限制,并且非法客户端在会话表中使用更多的连接。其他用户将受到影响。

VIP是目的NAT对象。对于与VIP匹配的会话,目标地址被转换:通常公网地址被转换为服务器的私有网络地址。在防火墙策略的目标字段中选择VIP。

  默认的VIP类型是静态NAT。这是一个一对一的映射,它适用于传入和传出连接;也就是说,启用NAT的传出策略将使用VIP地址而不是出口接口地址。但是,可以使用IP池重写此行为。

  静态NAT VIP仅限于转发某些端口。例如,端口8080上的外部IP的连接映射到端口80上的内部IP。

  在CLI上,可以选择NAT类型作为负载平衡和服务器负载平衡。简单的负载平衡将连接从外部IP地址分配到多个内部地址。服务器负载平衡基于该机制,使用虚拟服务器和真实服务器,并提供会话持久性和服务器可用性检查机制。

  VIP应该是面向外部(入口)接口的可路由的。FortiOS响应ARP对VIP和IP池对象的请求。ARP响应是可配置的。

 在这个例子中,源IP地址192.168.10.10试图通过端口TCP 80访问目的IP地址203.0.113.22。

  与VIP 203.0.113.22的连接与内部主机10.10.10.10无关。

  因为这是静态NAT,所以10.10.10.10的所有NAT输出连接将使用数据包的目的地字段中的VIP地址,而不是出口接口的地址。

在FortiOS,VIP和防火墙地址对象是完全不同的,它们是分开存储的,没有重叠。默认情况下,防火墙地址对象与VIP不匹配。在本示例中,作为第一策略中的目的地的所有地址对象不包括任何VIP,因此发送到Web_server VIP的流量将跳过第一策略并匹配第二Allow_access。为了让第一个策略与VIP匹配,你需要在 CLI上编辑策略并set match-vip enable,这允许地址对象与VIP地址匹配,或者将第一个策略的目的地址更改为所讨论的VIP,允许流量下降到下一个策略;但是,当你使用VIP防火墙策略时,可能会有一些例外。

  当VIP被配置时,对于传入(广域网到LAN)连接,它将首先与VIP表匹配。

  在本示例中,从WAN到LAN的防火墙策略配置有特定的源,并且动作是Deny。第二防火墙策略允许访问VIP(目的地址)。尽管拒绝防火墙策略位于列表的顶部,但是第二防火墙策略仍然允许被拒绝的源访问VIP。

  为了阻止来自拒绝源的流量,必须在拒绝防火墙策略中启用match-vip,该策略跳过VIP ID检查。或者,你可以将目标地址配置为拒绝策略中的VIP,而不是all。

 送分题。

现在您了解防火墙策略NAT。接下来,你将学习中央NAT。

在完成本节之后,你应该知道如何配置中心NAT。

  通过展示配置中央NAT来执行源NAT和目的NAT的能力,你将能够在更细粒度的级别上使用NAT来控制IP地址、协议和端口转换。

默认情况下,中央NAT被禁用,只能在CLI上启用。在启用了中央NAT之后,可以在GUI上配置这两个选项:

  • Central SNAT
  • DNAT & Virtual IPs

  如果尝试启用中央NAT会发生什么,但防火墙策略中仍然有IP池或VIP配置吗?

  CLI将不允许这样做,并且将提供一个引用VIP或IP池的防火墙策略ID的消息。你必须从现有防火墙策略中移除VIP或IP池引用,以便启用中央NAT。

  中央源NAT是强制性的新的NGFW模式在策略为基础的。这就意味着源NAT仅仅依据在Policy & Objects > Central 源NAT下的NAT设置来运行。

 你可以基于中央源NAT策略中的源接口和目标接口,对通过防火墙策略的流量进行更细粒度的控制。现在可以在中央源NAT策略中定义匹配标准,基于:

  • 源接口
  • 目的接口
  • 源地址
  • 目的地址
  • 协议
  • 源端口号

  从FortiOS v6.0开始,所有防火墙策略都需要一个匹配的中央源NAT策略。如果没有匹配的源NAT策略,流量将被丢弃。

  如果中央源NAT策略标准与基于多个防火墙策略的流量匹配,则中央源NAT策略将应用于这些防火墙策略。

  类似于防火墙策略,中央源NAT策略从上到下进行处理,如果找到匹配,则根据中央源NAT策略转换源地址和源端口。

在本示例中,中央源NAT策略将源IP地址转换为定义的IP池地址(203.0.113.5)。然而,只有当流量与中央源NAT策略中定义的所有变量相匹配时,才进行转换,也就是说,通过FortiGate内部的源接口从源IP地址到目的地IP地址(192.168.10.10)的流量必须通过目的地间发送到目的地IP地址(192.168.10.10)。 面对WAN1,协议必须是TCP。为了便于说明,目的地仅使用一个IP地址,并且IP池类型被设置为使用单个IP地址复用。

  防火墙策略是从内部创建到Wan1的。在FortiOS v6.0防火墙策略中没有可用的NAT选项,并且必须匹配源NAT策略才能传递流量。如果没有匹配的中央源NAT策略,流量将被丢弃。

  如果用户尝试到目的地IP地址192.168.10.10的任何基于TCP的会话(例如http、https),则源IP地址将被转换为IP池地址或在中央NAT策略中定义的地址。

  如果用户试图发送任何基于ICMP或UDP的流量到192.168.10.10,源地址是否被翻译成在中央NAT策略中定义的IP池呢?

  由于中央源NAT策略不匹配,FortiGate会自动删除流量。如果用户尝试以TCP为基础的流量到另一目的IP地址192.168.10.20?源地址是否转换为中央源NAT策略中定义的IP池?

  同样,192.168.10.20的目的IP地址与中央NAT策略不匹配,因此FortiGate会降低流量。

传统FortiGate中,VIP在防火墙策略中被选择为目的地地址。

  在FortiGate上,你可以配置目的NAT和VIP用于目的NAT。一旦配置了VIP,FortiGate就自动在内核中创建一个规则,允许目的NAT出现。不需要额外的配置。

  是否丢失了为特定VIP和服务定义防火墙策略的粒度?

  没有。如果你有几个WAN-to-Internal策略和多个VIP,并且希望为特定的VIP允许特定的服务,那么可以使用VIP的映射IP的目的地地址定义每个防火墙策略,并选择适当的服务以允许或拒绝。

  注意,如果配置了中央源NAT和中央目的NAT(VIP),则输出(内部到WAN)流量将基于中央源NAT和目的NAT(VIP)配置将NAT源到目的NAT或VIP地址。

在本示例中,创建了目的NAT和VIP规则,以将外部IP地址203.0.113.22映射到内部IP地址10.10.10.10。记住,一旦创建了VIP,就在内核中创建一个规则来允许目的NAT发生。

  从wan1到内部的防火墙策略是使用VIP的目标地址all或映射IP地址/范围(10.10.10.10)创建的。

  源IP地址192.168.10.10试图通过TCP端口80访问目的IP地址203.0.113.22。与VIP 203.0.113.22的连接与内部主机10.10.10 10无关,没有任何额外的配置。

可以通过在配置系统设置下运行设置中央NAT禁用来在CLI上禁用中央NAT。如果使用中央源NAT和目的NAT规则,中央NAT被禁用,防火墙策略会发生什么?

  对于新的防火墙会话,流入的防火墙策略仍然可以使用出口接口IP地址来工作。然而,流入流出防火墙策略将不使用IP池地址,这些地址以前绑定到中央用户NAT策略。如果需要使用IP池,则需要编辑防火墙策略以使用IP池。

  使用目的NAT和VIP的从外到内的防火墙策略将停止工作,因为在中央NAT中,防火墙策略中的目的地址只是地址对象,而不是实际的VIP。如果没有中央NAT进入目的NAT表项,地址对象将导致前向策略检查失败,策略 ID 0将拒绝流量。

  你需要编辑从出到入防火墙策略的出口,并选择VIP作为目的地地址。

 送分题。

现在你了解了中央NAT。接下来,你将学习session helpers。

在完成这一节之后,你应该能够:

  • 理解session helpers是如何工作的
  • 在VoIP中的SIP协议的 session helper

  通过演示理解session helpers 如何工作的能力,你将能够使用session helpers 来分析某些协议包中的数据,并允许这些协议通过FortiGate传递流量。

一些应用层协议并不完全独立于较低层,例如网络或传输层。例如,可以在应用层中重复地址。如果会话助手检测到这样的模式,它可能更改应用程序头部,或者创建所需的辅助连接。

  这方面的一个很好的例子是既有控制信道又有数据或媒体信道的应用程序,例如FTP。防火墙通常允许控制信道并依赖于会话助手来处理动态数据或媒体传输连接。

  当需要更高级的应用程序跟踪和控制时,可以使用应用层网关(ALG)。VoIP配置文件是ALG的一个例子。

在示例中,SIP SDP有效负载中的媒体接收者地址被修改以反映翻译的IP地址。

  请注意,因为防火墙策略是有状态的,所以打开针孔以允许应答流量,即使尚未明确创建防火墙策略来允许传入的流量。这个概念与一些其他协议一起使用,例如用于IPSec的NAT-T。

送分题。

现在你了解session helper。接下来,你将学习会话。

在完成这一节之后,你应该能够:

  • 了解FortiGate会话表
  • 了解会话生存时间(TTL)
  • 分析session diagnose命令输出
  • 了解FortiGate上的TCP、UDP和ICMP状态

  通过展示理解会话表如何跟踪会话信息的能力,你将能更好地使用该信息来理解应用于流量的动作,例如源NAT、目的NAT和路由。

 你可以查看GUI上的All Sessions页,但CLI提供有关会话表中会话的更多信息。

  每个会话的连接的防火墙性能和最大连接数由会话表指示。然而,如果你的FortiGate包含被设计为在不加载 CPU的情况下加速处理的FortiASIC NP芯片,则会话表信息可能不完全准确,因为会话表反映了CPU已知和处理的内容。

在FortiGate上的每个会话可以在有限时间内空闲,这是由生存时间(TTL)定义的。当FortiGate检测到会话在一段时间不活动之后是空闲的,并且到达TTL时,会话从会话表中删除。

  因为会话表的RAM数量有限,可以在FortiGate上使用,所以调整会话TTL可以提高性能。在防火墙对象中有全局缺省计时器、会话状态计时器和定时器。

diagnose sys session命令树提供筛选、清除或显示会话列表的选项。还可以通过运行get system session list命令列出有关会话的简要信息。

  在查看会话表之前,首先建立一个筛选器。若要查看我们的测试连接,可以在dst 102.1.254和port 80上进行筛选。

在这个示例中,你可以看到会话TTL,它反映了FortiGate可以在不接收此会话的任何包的情况下运行多长时间,直到它将从其表中删除会话为止。

  在这里你可以看到适用于流量的路由和NAT操作。还跟踪防火墙策略ID。

  TCP的proto_state取自它的状态机,你将在本课中了解到。

  在本课的早些时候,你了解到会话表包含一个指示连接当前TCP状态的数字。这些是TCP状态机的状态。它们是单位数的值,但proto_state总是显示为两位数字。这是因为FortiGate是一个有状态的防火墙,并跟踪原始方向(客户端状态)和回复方向(服务器端状态)。如果在SYN状态中有很长一段时间内有太多的连接,则表示SYN泛洪,你可以使用DoS策略来减轻这种泛洪。

  该表和流程图将第二位数字值与不同的TCP会话状态相关。例如,当FortiGate接收SYN数据包时,第二个数字是2。一旦接收到SYN/ACK,它就转到3。在三次握手之后,状态值变为1。

  当会话被双方都关闭时,FortiGate在会话表中再保留几秒钟,以允许在FIN/ACK分组之后可能到达的任何无序分组。这是状态值5。

​  虽然UDP是面向消息的无状态协议,但是它本身并不像TCP那样需要确认的双向连接,因此不存在连接状态。然而,FortiGate的会话表使用proto_state=字段来跟踪单向UDP作为状态0,而双向UDP作为状态1。

  当FortiGate接收第一个包时,它创建条目并将状态设置为0。如果目的地回复,FortiGate将状态标志更新为1,以用于会话的剩余部分。

  值得注意的是ICMP,例如ping和traceroute,没有协议状态,它总是显示proto_state=00。

​  送分题。

​  现在你了解会话了。接下来,你将了解NAT的最佳实践和故障排查。

​  在完成这一节之后,你应该能够:

  • 通过回顾流量日志识别常见NAT问题
  • 使用诊断命令监视NAT会话
  • 用于中央NAT的VIP过滤器
  • 使用NAT实现最佳范例

  通过演示使用流量日志、诊断命令、VIP过滤器以及NAT实现的最佳范例的能力,你应该能够监视和排除常见的NAT问题,并在网络中成功地实现NAT。

​  NAT端口耗尽发生时,有这么多的流量穿越边界并被翻译,所有端口都被使用。当发生NAT端口耗尽时,FortiGate通过显示上面显示的日志通知管理员,其严重程度为功能性影响。

  要解决NAT端口耗尽,你需要采取以下操作之一:

  • 创建一个IP池,它有一个以上的外部IP绑定到它(因此它在它们之间负载平衡)。
  • 减少穿越边境的流量。

  要接收像这样的重要日志,必须确保启用必要的日志记录。在FortiGate GUI上,单击“日志和报告 > 日志设置”,以检查默认设置、日志记录到磁盘或内存是否已被激活。

​  通过diagnose system session stat命令中的冲突计数器的增加也突出了NAT端口耗尽。

​  你可以使用diagnose firewall ippool-all list命令,该命令将列出所有配置的NAT IP池及其NAT IP范围和类型。

​  diagnose firewall ippool-all stats显示所有IP池的统计信息。

  状态命令提供以下数据和信息:

  • 每个IP池的NAT会话
  • 每个IP池的总TCP会话
  • 每个IP池的UDP会话总数
  • 每个IP池总计其他(非TCP和非UDP)会话

  可选地,你可以通过使用IP池的名称来过滤特定IP池的输出。

​  服务选项已添加到VIP对象。当服务和端口转发被配置时,只能配置单个映射端口。然而,可以将多个外部端口映射到该单个内部端口。

  这种配置允许复杂的场景,其中多个业务源使用多个服务连接到单个计算机,同时需要源和目的地NAT的组合,并且不需要将多个VIP捆绑到VIP组中。

  不同服务的VIP被认为是不重叠的。

​  在执行NAT时使用以下最佳范例:

  • 避免IP池范围的错误配置:
    • 仔细检查每个IP池的开始和结束IP池。
    • 确保IP池不与分配给FortiGate和主机的地址重叠。
    • 如果内部和外部用户正在访问相同的服务器,则使用拆分DNS,而不是外部VIP。
  • 除非应用程序需要,否则不要为入站业务配置NAT规则。例如,如果有一个匹配的NAT规则用于入站SMTP业务,SMTP服务器可能作为一个开放中继。

​  小测验。

​  你已经完成了这一课。现在,你将复习本课所涵盖的目标。

​  本课程包括以下目标:

  • 理解NAT和PAT
  • 了解NAT的不同配置模式
  • 配置防火墙策略以执行源NAT和目的NAT(VIP)
  • 配置中央NAT
  • 了解session helpers并使用SIP session helpers进行VoIP
  • 理解和解释会话表
  • 分析会话诊断命令输出
  • 理解TCP、UDP和ICMP状态
  • 使用流量日志识别常见NAT问题并使用会话诊断命令监视NAT会话
  • 使用NAT实现最佳范例

 


 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值