路由器 : Cisco PIX 500 系列安全设备

ASA/PIX/FWSM:处理ICMP Ping和Traceroute

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


目录


简介

PIX 防火墙上的 Internet 控制消息协议 (ICMP) ping 和 traceroute 是基于 PIX 和 ASA 代码的版本以不同方式进行处理的。

默认情况下会拒绝通过 PIX/ASA 入站的 ICMP。会允许出站 ICMP,但默认情况下,会拒绝传入的应答。

注意: 本文档中的使防火墙显示在 ASA/PIX 的 Traceroute 中部分适用于 ASA 版本 8.0(3) 及更高版本。由于 bug CSCsk76401仅限注册用户),8.0(3) 之前的版本不支持此部分中介绍的配置。

先决条件

要求

本文档没有任何特定的前提条件。

使用的组件

本文档中的信息基于以下软件和硬件版本:

  • PIX 软件版本 4.1(6) 及更高版本

  • 运行支持 ICMP Ping 的 7.x 及更高版本的 Cisco ASA 5500 系列安全设备

  • 运行支持 ASA 中的 Traceroute 的 8.0(3) 及更高版本的 Cisco ASA 5500 系列安全设备

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

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

网络图

http://www.cisco.com/c/dam/en/us/support/docs/security/pix-500-series-security-appliances/15246-31a.gif

注意: 此配置中使用的 IP 编址方案在 Internet 上不可合法路由。这些地址是在实验室环境中使用的 RFC 1918 地址。

通过 PIX 发送 Ping

PIX/ASA 软件版本 7.x

入站 Ping

默认情况下,会拒绝从 PIX 的外部或安全性较低的其他接口发起的 Ping。可以通过使用静态列表和访问控制列表或只通过使用访问控制列表来允许 ping。在本示例中,将使 PIX 内部的一个服务器可被外部 ping 访问。在内部地址 (10.1.1.5) 和外部地址 (192.168.1.5) 之间会创建一个静态转换。

pix(config)#static (inside,outside) 192.168.1.5 10.1.1.5 netmask 255.255.255.255
pix(config)#access-list 101 permit icmp any host 192.168.1.5 echo
pix(config)#access-group 101 in interface outside

出站 Ping

在 PIX 7.x 中有两个选择可以允许内部的用户 ping 外部的主机。第一个选项是为每个类型的 echo 消息设置一个特定规则。

例如:

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

当内部用户 ping 外部主机时,此选项只允许这些返回消息通过防火墙。其他类型的 ICMP 状态消息可能是恶意的,防火墙会阻止其他所有 ICMP 消息。

另一个选项是配置 icmp 检查。这将允许受信任的 IP 地址通过防火墙,并且只允许应答返回该受信任的地址。这样,所有内部接口上的主机都可以 ping 外部的主机,并且防火墙允许应答返回。这还提供了可以监控通过防火墙的 ICMP 数据流的优点。在本示例中,icmp 检查被添加到默认全局检查策略中。

例如:

policy-map global_policy
    class inspection_default
     inspect icmp

Ping 其他接口

management-access 命令使用户只有在使用全通道 IPSec VPN 或 SSL VPN 客户端(AnyConnect 2.x 客户端 SVC 1.x)或通过站点到站点 IPSec 通道连接到 PIX/ASA 时,才可以从外部连接到 management-access 接口。

除非已在全局配置模式下配置了 management-access,否则无法从外部访问 PIX 的内部接口,反之亦然。启用了 management-access 之后,必须为所需的主机配置 Telnet、SSH 或 HTTP 访问。

pix(config)#management-access inside
pix(config)#show running-config management-access
management-access inside

注意: 对于ASA, ICMP类型的127以下硬编码不可能被关闭的检查。当开/关时, icmp命令的Inspect没有在此检查的影响。

注意: 发送在参考已经未横断ASA的数据包的ASA间的一种方式的目的地不可达消息将被标记并且被终止。此防护能力不可能被关闭。

PIX 软件版本 5.0.1 到 6.3.3

默认情况下会拒绝通过 PIX 入站的 ICMP;会允许出站 ICMP,但默认情况下,会拒绝传入的应答。

注意: 版本 6.3.3 是在发布时可获得的最新代码版本。有关更高版本,请参阅发行版本注释以了解任何可能的更改。

入站 Ping

可以使用 conduit 语句或 access-list 语句(具体取决于您在 PIX 上使用哪一个)来允许入站 ICMP。不要 将 conduit 语句和 access-list 语句混合在一起使用。

此示例显示如何允许所有外部设备向内部设备 10.1.1.5(静态转换到 192.168.1.5)发出的 ICMP:

static (inside,outside) 192.168.1.5 10.1.1.5 netmask 255.255.255.255 0 0

!--- and either


conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 echo

!--- or


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

出站 Ping

可以使用 conduit statement 语句或 access-list 语句(具体取决于您在 PIX 上使用哪一个)来允许对出站 ICMP 做出的响应。不要 将 conduit 语句和 access-list 语句混合在一起使用。

本示例显示如何允许从所有外部设备对由内部设备 10.1.1.5(静态转换到 192.168.1.5)发起的 ICMP 请求做出的响应:

static (inside,outside) 192.168.1.5 10.1.1.5 netmask 255.255.255.255 0 0

!--- and either


conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 echo-reply
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 source-quench
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 unreachable
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 time-exceeded

!--- or 


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

PIX 软件版本 4.2(2) 到 5.0.1

默认情况下会拒绝通过 PIX 入站的 ICMP。会允许出站 ICMP,但默认情况下,会拒绝传入的应答。

入站 Ping

可以使用 conduit 语句来允许入站 ICMP。

此示例显示如何允许所有外部设备向内部设备 10.1.1.5(静态转换到 192.168.1.5)发出的 ICMP:

static (inside,outside) 192.168.1.5 10.1.1.5 netmask 255.255.255.255 0 0
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 echo

出站 Ping

可以使用 conduit 语句来允许对出站 ICMP 做出的响应。

本示例显示如何允许从所有外部设备对由内部设备 10.1.1.5(静态转换到 192.168.1.5)发起的 ICMP 请求做出的响应:

static (inside,outside) 192.168.1.5 10.1.1.5 netmask 255.255.255.255 0 0
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 echo-reply
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 source-quench
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 unreachable
conduit permit icmp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0 time-exceeded

PIX 软件版本 4.1(6) 到 4.2(2)

默认情况下会拒绝通过 PIX 入站的 ICMP。默认情况下允许出站 ICMP。

入站 Ping

可以使用 conduit 语句来允许入站 ICMP。

此示例显示如何允许所有外部设备向内部设备 10.1.1.5(静态转换到 192.168.1.5)发出的 ICMP:

static (inside), outside) 192.168.1.5 10.1.1.5
conduit 192.168.1.5 8 icmp 0.0.0.0 0.0.0.0


!--- The 8 is for echo request; these are from RFC 792.

有关详细信息,请参阅本文档的 ICMP 消息类型 (RFC 792) 部分。

出站 Ping

默认情况下允许出站 ICMP 和响应。

发送ping对PIX接口

在PIX软件版本4.1(6)到5.2.1,对PIX接口的ICMP流量允许。不能将 PIX 配置为不响应。在任何版本中,都无法 ping 通 PIX 的“远端”上的接口。根据本文档中的网络图:

  • 您无法从 10.1.1.5 ping 通 10.1.1.1。

  • 您无法从外部 ping 通 192.168.1.1。

  • 您无法从 10.1.1.5 ping 通 192.168.1.1。

  • 您无法从外部 ping 通 10.1.1.1。

在 PIX 软件版本 5.2.1 中,ICMP 仍然是默认允许的,但可以使用 icmp 命令禁止从 PIX 自己的接口做出 PIX ping 响应(即,一个“隐藏 PIX”)。

icmp permit|deny [host] src_addr [src_mask] [type] int_name

在本示例中,PIX 无法发送回声应答以回应请求:

icmp deny any echo outside

与使用访问列表一样,如果缺少 permit 语句,也会隐式拒绝其他所有 ICMP 数据流。

以下命令允许紧邻 PIX 外部的网络发出的 ping:

icmp permit 192.168.1.0 255.255.255.0 echo outside

与使用访问列表一样,如果缺少 permit 语句,也会隐式拒绝其他所有 ICMP 数据流。

通过 PIX 入站的 traceroute 命令

问题:PIX 防火墙在入站 traceroute 的输出中隐藏了所有内部网络。

解决方法:

PIX 不支持 traceroute 命令。从外部发出 traceroute 时,PIX 既不显示其自己的接口 IP 地址,也不显示内部网络的 IP 地址。会为每个内部跳显示目标地址多次。

Traceroute 仅与静态网络地址转换 (NAT) 一起使用,而不与端口地址转换 (PAT) IP 地址一起使用。例如,Internet 上的一个客户端(具有地址 209.165.202.130),执行到 PIX 内部的一个 web 服务器(具有公用地址 209.165.201.25 和专用地址 10.1.3.25)的 traceroute。在 PIX 和内部 web 服务器之间有两个路由器。在客户端计算机上的 traceroute 输出显示如下:

Target IP address: 209.165.201.25 Source address: 209.165.202.130

 Tracing the route to 209.165.201.25 
  1 209.165.202.128 4 msec 3 msec 4 msec 
  2 209.165.201.25 3 msec 5 msec 0 msec 
  3 209.165.201.25 4 msec 6 msec 3 msec 
  4 209.165.201.25 3 msec 2 msec 2 msec 

在 PIX 版本 6.3 及更高版本中,如果发出 fixup protocol icmp error 命令,则可以撤消此行为。启用了此功能后,PIX 将基于静态 NAT 配置为发送 Internet 控制消息协议 (ICMP) 错误信息的中间跳创建 xlate。PIX 会用转换后的 IP 地址重写数据包。

在 PIX 7.0 中启用了 NAT 后,将无法看到 PIX 接口的 IP 地址和中间跳的实际 IP 地址。但是,在 PIX 7.0 中,NAT 并不是必需的,可以使用 no nat-control 命令禁用它。如果删除了 NAT 规则,将可以看到实际 IP 地址(如果它可以路由)。

从外部网络配置 PIX/ASA 以显示其内部网络:

ciscoasa#config t 
ciscoasa(config)#access-list internal-out permit icmp any any echo-reply 
ciscoasa(config)#access-list internal-out permit icmp any any time-exceeded 
ciscoasa(config)#access-list internal-out permit icmp any any unreachable 
ciscoasa(config)#policy-map global_policy 
ciscoasa(config-pmap)#class inspection_default 
ciscoasa(config-pmap-c)#
inspect icmp
 
ciscoasa(config-pmap-c)#
inspect icmp error
 
ciscoasa(config-pmap-c)#end 
ciscoasa(config)#service-policy global_policy global
ciscoasa(config)#access-group internal-out in interface outside

有关详细信息,请参阅 PIX 和 traceroute 命令通过 PIX 入站的 traceroute 命令部分。

使防火墙显示在 ASA/PIX 的 Traceroute 中

ciscoasa(config)#class-map class-default
ciscoasa(config)#match any


!--- This class-map exists by default.


ciscoasa(config)#policy-map global_policy


!--- This Policy-map exists by default.


ciscoasa(config-pmap)#class class-default


!--- Add another class-map to this policy.


ciscoasa(config-pmap-c)#set connection decrement-ttl


!--- Decrement the IP TTL field for packets traversing the firewall.
!--- By default, the TTL is not decrement hiding (somewhat) the firewall.


ciscoasa(config-pmap-c)#exit
ciscoasa(config-pmap)#exit
ciscoasa(config)#service-policy global_policy global


!--- This service-policy exists by default.

WARNING: Policy map global_policy is already configured as a service policy

ciscoasa(config)#icmp unreachable rate-limit 10 burst-size 5


!--- Adjust ICMP unreachable replies:
!--- The default is rate-limit 1 burst-size 1.
!--- The default will result in timeouts for the ASA hop:


ciscoasa(config)#access-list outside-in-acl remark Allow ICMP Type 11 for Windows tracert
ciscoasa(config)#access-list outside-in-acl extended permit icmp any any time-exceeded


!--- The access-list is for the far end of the ICMP traffic (in this case
!---the outside interface) needs to be modified in order to allow ICMP type 11 replies
!--- time-exceeded):

ciscoasa(config)#access-group outside-in-acl in interface outside


!--- Apply access-list to the outside interface.

ciscoasa(config)#

示例

拓扑

http://www.cisco.com/c/dam/en/us/support/docs/security/pix-500-series-security-appliances/15246-31b.gif

注意: 此配置中使用的 IP 编址方案在 Internet 上不能合法路由。这些地址是在实验室环境中使用的 RFC 1918 地址。

在应用策略更改之前,请执行以下命令:

C:\>tracert -d www.yahoo.com.

Tracing route to www.yahoo-ht3.akadns.net [192.168.93.52]
over a maximum of 30 hops:

  1     1 ms    <1 ms    <1 ms  172.16.2.1

!--- First shown hop is Router 1
     
  2     6 ms     6 ms     5 ms  192.168.100.101
(etc...)

在应用策略更改之后,请执行以下命令:

C:\>tracert -d www.yahoo.com.

Tracing route to www.yahoo-ht3.akadns.net [192.168.93.52]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  172.16.2.254
  
!--- First shown hop is ASA

  2    <1 ms    <1 ms    <1 ms  172.16.2.1

!---  Router 1 is now second hop

  3     6 ms     6 ms     6 ms  192.168.100.101
 (etc...)

错误消息 - 313005

错误消息

%PIX|ASA-4-313005: No matching connection for ICMP error message: 
icmp_msg_info on interface_name interface. Original IP payload: 
embedded_frame_info icmp_msg_info = icmp src src_interface_name:src_address dst 
dest_interface_name:dest_address (type icmp_type, code icmp_code) 
embedded_frame_info = prot src source_address/source_port dst 
dest_address/dest_port

说明

ICMP 错误数据包将被安全设备丢弃,因为该 ICMP 错误消息与安全设备中已建立的任何会话都不相关。

建议操作

如果原因是受到攻击,您可以使用 ACL 拒绝该主机。

ICMP 消息类型 (RFC 792)

留言编号 消息
0 回声应答
3 目标不可达
4 源抑制
5 重定向
8 响应
11 超时
12 参数问题
13 时间戳
14 时间戳应答
15 信息请求
16 信息应答

开立服务请求时要收集的信息

如果您在完成上述故障排除步骤后还需要帮助,并且希望通过 Cisco TAC 开立服务请求,请确保包括以下信息,以用于排除 PIX 防火墙故障。
  • 问题说明和相关拓扑详细信息
  • 在开立服务请求之前执行的故障排除
  • show tech-support 命令的输出
  • 运行 logging buffered debugging 命令show log 命令的输出,或演示问题的控制台捕获信息(如果可用)
请将收集到的数据以未压缩的纯文本格式 (.txt) 附加到服务请求中。通过使用服务请求查询工具仅限注册用户)上载信息,可以将信息附加到服务请求中。如果无法访问服务请求查询工具,可以将信息以电子邮件附件的形式发送到 attach@cisco.com,并在邮件的主题行中注明服务请求号。


相关信息


Document ID: 15246