ALG 概述
应用层网关 (ALG) 使网关能够分析应用层有效负载,并做出是允许还是拒绝流向应用服务器的流量的决策。ALG 支持传输协议 (FTP) 等应用程序和各种 IP 协议,这些协议使用应用程序层有效负载来通信应用程序打开数据连接的动态传输控制协议 (TCP) 或用户数据报协议 (UDP) 端口。
ALG 概述
应用层网关 (ALG) 是一种软件组件,旨在管理运行 Junos OS 的瞻博网络设备上的会话初始化协议 (SIP) 或 FTP 等特定协议。ALG 模块负责在交换机上处理应用层感知数据包。
ALG 功能可由在安全策略中配置的服务或应用程序触发:
服务是一个对象,用于识别使用应用程序服务的第 4 层信息(例如,标准 TCP 和 UDP 端口号)(如 Telnet、FTP 和 SMTP)的应用程序协议。
应用程序指定映射到第 4 层服务的第 7 层应用程序。
预定义服务已映射到第 7 层应用程序。但是,对于自定义服务,您必须将服务显式链接到应用程序,特别是在希望策略应用 ALG 时。
发往知名端口的数据包的 ALG 由服务类型触发。ALG 会拦截并分析指定的流量,分配资源,并定义动态策略,以允许流量安全地通过设备:
当数据包到达设备时,流模块将根据策略中设置的安全规则转发数据包。
如果发现允许该数据包的策略,则会分配关联的服务类型或应用程序类型,并为此类型的流量创建一个会话。
如果找到该数据包的会话,则无需策略规则匹配。如果该特定服务或应用程序类型需要受支持的 ALG 处理,将触发 ALG 模块。
ALG 还会检查数据包的有效负载中的嵌入式 IP 地址和端口信息,并在必要时执行网络地址转换 (NAT) 处理。仅当数据包准备好处理时,才会分配消息缓冲区。数据包完成 ALG 处理后,缓冲区将被释放,包括修改有效负载、执行 NAT、为客户端和服务器之间的新连接打开一个针孔,以及在客户端和位于瞻博网络设备对等端的客户端和服务器之间传输数据
jbuf 的最大大小为 9 Kb。如果消息缓冲区大小超过 9 Kb,则整个消息无法传输到 ALG 数据包处理方。这会导致会话中的后续数据包绕过 ALG 处理,从而导致事务失败。ALG 消息缓冲区优化得到增强,可降低高内存消耗。
ALG 还为 IP 地址和端口号打开一道门,允许对控制和数据会话进行数据交换。控制会话和数据会话可以耦合在一起,以具有相同的超时值,也可以相互独立。
机箱群集支持 ALG。
另请参阅
了解自定义 ALG 服务
默认情况下,ALG 绑定到预定义的服务。例如,FTP ALG 绑定到 junos-ftp,RTSP ALG 绑定到 junos-rtsp,等等。
预定义服务已映射到第 7 层应用程序。但是,对于自定义服务,您必须将服务显式链接到应用程序,特别是在希望策略应用 ALG 时。
将预定义的服务应用于策略时,与该服务匹配的流量将被发送到其相应的 ALG,以便进一步处理。但是,在某些情况下,您可能需要定义自定义服务,以实现以下目标:
利用 ALG 处理器处理客户指定的协议、目标端口等特殊流量。
当流量与与 ALG 绑定的预定义服务匹配时,允许流量,但绕过 ALG 处理。
将更多应用程序添加到当前的 ALG 应用集。
以下示例要求您在配置层次结构中的各个级别上导航。有关如何操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
以 MS-RPC ALG 为例,自定义服务的三个用法如下:
Utilize the ALG handler to process special traffic:
[edit] user@host# set applications application customer-msrpc application-protocol ms-rpc user@host# set applications application customer-msrpc protocol tcp user@host# set applications application customer-msrpc destination-port 6000
带有 TCP 目标端口 6000 的流量将被发送到 MS-RPC ALG 进行进一步处理。
Permit traffic but bypass ALG processing:
[edit] user@host# set applications application customer-ignore application-protocol ignore user@host# set applications application customer-ignore protocol tcp user@host# set applications application customer-ignore destination-port 135
使用 TCP 目标端口 135 的流量将忽略所有 ALG。
Add more applications to an ALG’s application set— 要添加 MS-RPC 或 Sun RPC 服务等未在设备上预定义的应用程序:
[edit] user@host# set applications application customer-msrpc application-protocol ms-rpc user@host# set applications application customer-msrpc term t1 protocol tcp user@host# set applications application customer-msrpc term t1 uuid e3514235-4b06-11d1-ab04-00c04fc2dcd2
将带有 TCP、uuid e3514235-4b06-11d1-ab04-00c04fc2dcd2 的 MS-RPC 数据流量与其他预定义的 junos-ms-rpc** 应用程序一起应用于策略时,将被允许。
另请参阅
了解用于路由、NAT 和 NAT-PT 的 IPv6 DNS ALG
域名系统 (DNS) 是 ALG 的一部分,用于处理 DNS 流量,监控 DNS 查询和回复数据包,并在 DNS 标志指示数据包为回复消息时关闭会话。
DNS ALG 在 Junos OS 10.0 及更早版本的路由模式下支持 IPv4。在 Junos OS 10.4 版中,此功能在 DNS ALG 上实施 IPv6 支持,用于路由、网络地址转换 (NAT) 和网络地址转换协议转换 (NAT-PT)。
当 DNS ALG 从 DNS 客户端收到 DNS 查询时,对 DNS 数据包执行安全检查。当 DNS ALG 从 DNS 服务器收到 DNS 回复时,将执行类似的安全检查,然后关闭 DNS 流量的会话。
NAT 模式下的 IPv6 DNS ALG 流量
IPv6 NAT 提供 IPv4 和 IPv6 寻址网络设备之间的地址转换。它还提供 IPv6 主机之间的地址转换。IPv6 主机之间的 NAT 执行方式与 IPv4 NAT 类似,其用途也与 IPv4 NAT 类似。
当 DNS 流量在 NAT 模式下工作时,当 DNS 客户端使用专用网络时,DNS ALG 将 DNS 回复中的公共地址转换为专用地址,并在 DNS 客户端位于公共网络上时将专用地址转换为公共地址。
在 Junos OS 10.4 版中,IPv6 NAT 支持:
源 NAT 转换
目标 NAT 映射
静态 NAT 映射
IPv6 DNS ALG NAT 仅支持静态 NAT 映射。
NAT-PT 模式下的 IPv6 DNS ALG 流量
IPv6 NAT-PT 提供 IPv4 和 IPv6 寻址网络设备之间的地址分配和协议转换。转换过程基于无状态 IP/ICMP 转换 (SIIT) 方法;但是,每个通信的状态和上下文都会在会话生存期保留。IPv6 NAT-PT 支持互联网控制消息协议 (ICMP)、传输控制协议 (TCP) 和用户数据报协议 (UDP) 数据包。
IPv6 NAT-PT 支持以下类型的 NAT-PT:
传统 NAT-PT
双向 NAT-PT
基于 DNS 的机制将 IPv6 地址动态映射到仅支持 IPv4 的服务器。NAT-PT 使用 DNS ALG 透明地进行转换。
例如,使用内部 IPv6 网络的公司需要能够与没有 IPv6 地址的外部 IPv4 服务器通信。
要支持动态地址绑定,应使用 DNS 进行名称解析。IPv4 主机在其本地配置的 IPv4 DNS 服务器中查找 IPv6 节点的名称,然后使用 NAT-PT 通过设备将查询传递到 IPv6 DNS 服务器。
当 DNS 流量在 NAT-PT 模式下工作时,当 DNS 客户端在 IPv6 网络中且服务器在 IPv4 网络中时,DNS ALG 将转换 DNS 回复数据包中的 IP 地址,反之亦然。
在 NAT-PT 模式下,DNS ALG 仅支持 IPV4 到 IPV6 地址转换。要在 DNS ALG 中支持 NAT-PT 模式,NAT 模块应支持 NAT-PT。
当 DNS ALG 从 DNS 客户端收到 DNS 查询时,DNS ALG 会对 DNS 数据包执行以下安全和健全性检查:
实施最大 DNS 消息长度(默认为 512 字节,最大长度为 8KB)
实施 255 字节的域名长度和 63 字节的标签长度
如果 DNS 消息中遇到压缩指针,验证指针引用的域名的完整性
检查是否存在压缩指针环路
当 DNS ALG 从 DNS 服务器收到 DNS 回复时,也会执行类似的健全性检查,之后,此 DNS 流量的会话就会关闭。
另请参阅
了解 FTP ALG 中的 IPv6 支持
文件传输协议 (FTP) 是 ALG 中处理 FTP 流量的一部分。FTP 中的端口/PASV 请求和相应的 200/227 响应用于通告主机侦听的 FTP 数据连接的 TCP 端口。
EPRT/EPSV/229 命令用于这些请求和响应。FTP ALG 已支持 EPRT/EPSV/229,但仅适用于 IPv4 地址。
在 Junos OS 10.4 版中,EPRT/EPSV/229 命令已更新为同时支持 IPv4 和 IPv6 地址。
FTP ALG 使用预分配的伪装来存储其会话 Cookie。当 FTP ALG 同时支持 IPv4 和 IPv6 地址时,会话 Cookie 结构将放大 256 位(32 个字节)以存储 IPv6 地址。
对 IPv6 的 FTP ALG 支持
FTP ALG 监控 FTP 控制通道上的命令和响应,以确保语法正确性,并打开相应的针孔以允许建立数据通道连接。在 Junos OS 10.4 版中,FTP ALG 仅支持 IPv4 路由、IPv6 路由和 NAT 模式。在 Junos OS 11.2 及更高版本中,FTP ALG 还支持 IPv6 NAT 和 NAT-PT 模式。
EPRT 模式
EPRT 命令允许为数据连接指定扩展地址。扩展地址必须包含网络协议以及网络和传输地址。
EPRT 的格式为:
EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
<net-prt>:由 IANA 定义的地址家族编号
<net-addr>:网络地址特定于协议的字符串
<tcp 端口>:TCP 端口号
以下是适用于 IPv6 的 EPRT 命令示例:
EPRT |2|1080:8:800:200C:417A|5282|
在此模式下,FTP ALG 仅关注 EPRT 命令;它从 EPRT 命令提取 IPv6 地址和端口并打开针孔。
EPSV 模式
EPSV 命令请求服务器侦听数据端口并等待连接。对此命令的响应仅包含侦听连接的 TCP 端口号。
下面将举一个响应字符串示例:
Entering Extended Passive Mode (|||6446|)
使用扩展地址进入被动模式的响应代码必须为 229。您应该提取 229 个有效负载中的 TCP 端口,并使用它打开针孔。
另请参阅
了解 ALG 的 TAP 模式支持
终端接入点 (TAP) 模式是一个备用设备,用于检查通过交换机的镜像流量。TAP 模式不依赖于 ALG 启用或禁用状态。ALG 配置与非 TAP 模式保持相同。
将 SRX 系列设备配置为在 TAP 模式下运行时,设备将生成安全日志信息,以显示有关检测到的威胁、应用程序使用情况和用户详细信息的信息。将设备配置为在 TAP 模式下运行时,设备仅从配置的 TAP 接口接收数据包。除配置的 TAP 接口外,其他接口均配置为用作管理接口或连接到外部服务器的正常接口。SRX 系列设备将根据传入的流量生成安全报告或日志。
ALG 支持有效负载 NAT 等应用程序,并动态允许其数据流量。
在 TAP 模式下操作设备时,您只能配置一个 TAP 接口。
在 TAP 模式下启用和禁用 ALG
本主题介绍如何在 TAP 模式下启用或禁用 ALG 状态。
开始之前:
阅读了解 ALG 的 TAP 模式支持 ,了解对 TAP 模式的 ALG 支持情况。
SRX300、SRX320、SRX340、SRX345、SRX380 和 SRX550M 设备的默认 ALG 状态如下所示:
ALG Status: DNS : Enabled FTP : Enabled H323 : Enabled MGCP : Enabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Enabled SCCP : Enabled SIP : Enabled SQL : Disabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled TWAMP : Disabled
SRX4100 设备的默认 ALG 状态如下所示:
ALG Status: DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Disabled SQL : Disabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled TWAMP : Disabled
要启用默认情况下禁用的 ALG,请使用以下命令。
[edit] user@host# set security alg alg-name
要将已启用的 ALG 更改为默认状态,请使用以下命令。
[edit] user@host# delete security alg alg-name
要禁用默认情况下启用的 ALG,请使用以下命令。
[edit] user@host# set security alg alg-name disable
要将禁用的 ALG 更改为默认状态,请使用以下命令。
[edit] user@host# delete security alg alg-name disable
要启用 IKE ALG,请使用以下命令。
[edit] user@host# set security alg ike-esp-nat enable
要将已启用的 IKE ALG 更改为默认状态,请使用以下命令。
[edit] user@host# delete security alg ike-esp-nat enable