安全 : Cisco PIX 500 系列安全设备

PIX 和 traceroute 命令

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2014 年 9 月 22 日) | 反馈


目录


简介

本文档介绍如何通过 PIX 允许和调试 traceroute 命令。可以叫作在PC的tracerttrace或在Cisco IOS�软件的traceroute的traceroute命令(或者在UNIX的traceroute)可以用于排除故障连接。traceroute 命令的运行方式可能因源设备(执行跟踪的盒)的操作系统而异。有关操作系统以及 traceroute 命令如何运行的详细信息,请参阅在操作系统上使用 traceroute 命令

本文档中的示例说明了如何通过 PIX 允许以下命令:

  • Microsoft traceroute 命令(依赖于 Internet Control Message Protocol [ICMP])

  • Cisco IOS或UNIX traceroute命令依赖于用户数据报协议(UDP)和ICMP的组合

注意: PIX 从软件版本 7.2(1) 及更高版本开始支持启动 traceroute 命令。有关更多信息,请参阅在 PIX 中使用 traceroute 命令部分。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

网络图

/image/gif/paws/25708/pixtrace_01.gif

通过 PIX 向外的 traceroute 命令

为了进行地址转换,必须存在静态语句或全局语句。此示例中是从 172.18.124.41 转换到 209.165.202.246。因此,静态语句为:

static (inside, outside) 209.165.202.246 172.18.124.41

除静态语句或全局语句之外,还添加了管道或访问控制列表 (ACL)。

Microsoft

默认情况下允许出站 ICMP。在PIX版本4.2.2或更新版本中,入站ICMP的回应如 "unreachable","time-exceeded",和"echo-reply"必须通过管道或ACL明确批准:

conduit permit icmp host 209.165.200.246 any unreachable
conduit permit icmp host 209.165.200.246 any time-exceeded
conduit permit icmp host 209.165.200.246 any echo-reply

在 PIX 版本 5.0.1 或更高版本中,可以使用 ACL 来代替管道(而非与管道结合使用)以便执行相同功能:

access-group 101 in interface outside
access-list 101 permit icmp any host 209.165.200.246 unreachable
access-list 101 permit icmp any host 209.165.200.246 time-exceeded
access-list 101 permit icmp any host 209.165.200.246 echo-reply

这样,当内部用户对外部主机执行 pingtrace route 时,将仅允许这些返回消息通过防火墙。其他类型的 ICMP 状态消息可能是恶意的,防火墙会阻止其他所有 ICMP 消息。

在 PIX 7.x 中,另一个选项是配置 ICMP 检查。这将允许受信任的 IP 地址通过防火墙,并且只允许应答返回该受信任的地址。这样,所有内部接口能 ping 通外部,并且防火墙允许应答返回。这还提供了可以监控通过防火墙的 ICMP 数据流的优点。

例如:

policy-map global_policy
    class inspection_default
    inspect icmp

有关 inspect icmp 命令的详细信息,请参阅命令参考。

Cisco IOS 或 UNIX

默认情况下允许出站 ICMP 和 UDP,也允许对出站 UDP 的响应。"在PIX版本4.2.2和以后版本中,入站 ICMP 的""time exceeded""和""unreachable""的响应必须通过管道或ACL明确允许:"

conduit permit icmp host 209.165.200.246 any unreachable
conduit permit icmp host 209.165.200.246 any time-exceeded

在 PIX 版本 5.0.1 或更高版本中,可以使用 ACL 来代替管道(而非与管道结合使用)以便执行相同功能:

access-group 101 in interface outside
access-list 101 permit icmp any host 209.165.200.246 unreachable
access-list 101 permit icmp any host 209.165.200.246 time-exceeded

用户视图

以下输出是通过 PIX 的出站 traceroute 命令的示例。请注意,您将看不到 PIX 的内部接口,但可以看到跟踪设备和目标之间的每个路由器的“附近接口”。

goss-c1-2513#trace 209.165.202.130

Type escape sequence to abort.
Tracing the route to 209.165.202.130

  1 172.18.124.40 0 msec 0 msec 4 msec
  2 209.165.200.241 12 msec 8 msec 96 msec
  3 209.165.202.130 104 msec 8 msec * 

在 PIX 7.0 中,如果启用 NAT,您将无法查看 PIX 接口的 IP 地址和中间跃点的实际 IP 地址。但是,在 PIX 7.0 中,NAT 并不是必需的,可以使用 no nat-control 命令将其禁用。如果删除 NAT 规则,则只要实际 IP 地址是可路由的 IP 地址,您就能够查看该 IP 地址。

通过 PIX 入站的 traceroute 命令

为了使用traceroute命令到达PIX内部的设备,必须静态映射到内部设备。在此示例中,静态映射为:

static (inside, outside) 209.165.202.246 172.18.124.41

除静态语句或全局语句之外,还添加了管道或 ACL。

Microsoft

在 PIX 版本 4.2.2 和更高版本中,必须明确允许入站 ICMP“echo”:

conduit permit icmp host 209.165.200.246 any echo

在 PIX 版本 5.0.1 或更高版本中,可以使用 ACL 来代替管道(而非与管道结合使用)以便执行相同功能:

access-group 101 in interface outside
access-list 101 permit icmp any host 209.165.200.246 echo

Cisco IOS 或 UNIX

必须允许入站 UDP。由于源端口和目标端口是随机的,因此允许设备的所有 UDP:

conduit permit udp host 209.165.200.246 any

在 PIX 版本 5.0.1 或更高版本中,可以使用 ACL 来代替管道(而非与管道结合使用)以便执行相同功能:

access-group 101 in interface outside
access-list 101 permit udp host 209.165.200.246 any

用户视图

以下输出是通过 PIX 的入站 traceroute 命令的示例。有二个全局地址条目是因为从PIX到内部设备还有两跳。然而,PIX并不泄漏内部设备实际IP 地址(静态映射),在列表中您也看不到PIX的IP地址。

goss-e4-2513a#trace 209.165.200.246

Type escape sequence to abort.
Tracing the route to 209.165.200.246

  1 209.165.202.129 4 msec 4 msec 8 msec
  2 209.165.200.246 4 msec 0 msec 4 msec
  3 209.165.200.246 8 msec 4 msec *

使用 traceroute 命令访问 PIX 接口

出站或入站 traceroute 命令的路由列表中未显示 PIX。但是,您能否发出 traceroute 命令以访问 PIX 接口?

/image/gif/paws/25708/pixtrace_02.gif

以上图为例,您可以看到不可能存在使 traceroute 在 A 和 C 间运行所需的 UDP 和 ICMP 数据流,因为您不能将 UDP 或 ICMP 数据流从外部发送到 PIX 内部接口的专用地址,并且为内部接口设置静态地址是无效的。由于PIX外部接口无法从内部响应UDP或ICMP,因而不可能进行从D到B的Traceroute。所以,不能从A到C或者从D到B发送traceroute命令

对 PIX 自身的以下 Microsoft traceroute 将会尝试运行。

  • 您能够发出从 D 到 C 的 traceroute 命令

  • 您能够发出从 A 到 B 的 traceroute 命令

对 PIX 自身的以下 Cisco IOS 或 UNIX traceroute 不会尝试运行。

  • 您不能够发出从 D 到 C 的 traceroute 命令

  • 您不能够发出从 A 到 B 的 traceroute 命令

PIX 版本 5.2 中引入了 icmp 命令。此命令允许您修改指定到 PIX 本地接口的 ICMP 数据流的 PIX 行为。您现在能够启用/禁用 PIX 收到的 ICMP 请求。

请配置以下命令,以便阻止 PIX 响应主机 A 的 ping 尝试:

icmp deny host A echo outside 
icmp permit any outside 

第二个命令 (icmp permit any outside) 是必需的,因为在使用 icmp 命令时,默认为拒绝任何 ICMP 类型。

在 PIX 中使用 traceroute 命令

PIX 软件版本 7.1 及早期版本不支持启动 traceroute 命令,但在版本 7.2(1) 及更高版本中开始支持此命令。

traceroute 命令用于搜索数据包在传输到它们的目标时实际采用的路由。设备(例如 PIX、路由器或 PC)向远程主机的无效端口地址发送 User Datagram Protocol (UDP) 数据报序列。

发送了三个数据报,每一个数据报都具有一个值设置为 1 的存活时间 (TTL) 字段。TTL 值为 1 会导致数据报到达路径中的第一个路由器后就立即超时。然后,该路由器会以一条 ICMP 超时消息 (TEM) 进行响应,指示该数据报已过期。

现在将发送另外三条 UDP 消息,每条 UDP 消息的 TTL 值设置为 2,这导致第二台路由器返回 ICMP TEM。此过程将持续,直到数据包实际到达另一个目标。由于这些数据报尝试访问目标主机上的无效端口,因此将会返回 ICMP 端口无法访问消息,指示一个无法访问的端口。此事件会对 traceroute 程序发出它已完成的信号。

以下示例显示了指定目标 IP 地址后生成的 traceroute 输出:

 

PIX#traceroute 192.168.200.225

Tracing the route to 192.168.200.225

 1  10.83.194.1 0 msec 10 msec 0 msec

 2  10.83.193.65 0 msec 0 msec 0 msec

 3  10.88.193.101 0 msec 10 msec 0 msec

 4  10.88.193.97 0 msec 0 msec 10 msec

 5  10.88.239.9 0 msec 10 msec 0 msec

 6  10.88.238.65 10 msec 10 msec 0 msec

 7 172.16.7.221 70 msec 70 msec 80 msec  

 8 192.168.200.225 70 msec 70 msec 70 msec

请参阅 PIX 软件版本 7.2 命令参考,以便了解有关 traceroute 命令的更多信息。

故障排除

  • 您能否对 PIX 任意一端的设备发出 traceroute 命令

  • 您能否将PIX连接到外部设备并将PIX连接到内部设备?

  • 您能从外部设备ping到PIX和从内部设备ping到PIX吗?

  • PC 和 Cisco IOS 或 UNIX 盒中的 traceroute 是否发生故障?

  • traceroute 在哪里发生故障?

  • 介于中间的设备是否具有可能会阻止数据流的 ACL?

  • 是所有数据流发生故障,还是仅 traceroute 数据流发生故障?

  • 是否存在为入站 traceroute 设置的静态设备映射?

  • 内部设备是否具有到 PIX 的路由?

在向高负载的 PIX 添加 debug 命令时,要格外小心。然而,可以根据通过 PIX 的流量启用调试功能:

debug icmp trace

此外,您也可以为一个或多个接口启用数据包调试:

debug packet inside src 172.18.124.41 dst 209.165.202.130 proto udp both
debug packet outside src 209.165.202.130 dst any proto udp both

以下输出显示了入站 traceroute 的部分调试:

172.18.124.41   ==>     209.165.202.130
       ttl = 0x1       proto=0x11      chksum = 0xf23d
      -- UDP --
Inbound  ICMP time exceeded (code 0) 209.165.200.241 > 209.165.200.243 > 
   172.18.124.41
172.18.124.41   ==>     209.165.202.130
       ttl = 0x2       proto=0x11      chksum = 0xf138
    -- UDP --
Inbound  ICMP unreachable (code 3) 209.165.202.130 > 209.165.200.243 > 
   172.18.124.41

以下输出显示了出站 traceroute 的部分调试:

209.165.202.130 ==>     209.165.200.246
        ttl = 0x2       proto=0x11      chksum = 0x7f29
        -- UDP --
153: Outbound ICMP unreachable (code 3) 172.18.124.41 > 209.165.200.246 > 
   209.165.202.130

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 25708