OSI堆栈安全:第3层——ICMP的作用

日期: 2008-12-07 作者:Michael Gregg翻译:曾少宁 来源:TechTarget中国 英文

OSI模式的第3层是网络层。数据链路层提供节点间的连接,而网络层则负责路由转发及实现路由表协议。其中最主要的就是互联网协议(IP)。网络层上还提供其他的服务,如互联网控制消息协议(ICMP),这是本文所要探讨的。

ICMP是专门用作逻辑错误和诊断的信使。RFC792对它作了详细的阐述。任何IP网络设备都有发送、接收或运作ICMP消息的功能。虽然ICMP的设计者没有考虑今天出现的安全性问题,但是他们已经设计了一些能使ICMP更有效运作的基本准则。

1. 为了确保ICMP消息不会淹没IP网络,ICMP没有任何特别的优先级,它总是一种常规流量。 2. ICMP消息作为其他ICMP……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

OSI模式的第3层是网络层。数据链路层提供节点间的连接,而网络层则负责路由转发及实现路由表协议。其中最主要的就是互联网协议(IP)。网络层上还提供其他的服务,如互联网控制消息协议(ICMP),这是本文所要探讨的。

ICMP是专门用作逻辑错误和诊断的信使。RFC792对它作了详细的阐述。任何IP网络设备都有发送、接收或运作ICMP消息的功能。虽然ICMP的设计者没有考虑今天出现的安全性问题,但是他们已经设计了一些能使ICMP更有效运作的基本准则。

1. 为了确保ICMP消息不会淹没IP网络,ICMP没有任何特别的优先级,它总是一种常规流量。

2. ICMP消息作为其他ICMP消息的响应而发送。这个设计机制是为了防止出现一个错误消息不断地重复制造出另一个错误消息。否则,它就真的是个大问题了。

3. ICMP不能作为多播或广播流量的响应而发送。

知道了这些ICMP基本准则后,我们再来关注下ICMP报头的格式。设计好的ICMP的报头就包含了一个类型域和代码域。通常ICMP包含以下类型:

0  Echo Reply (Ping)

3  Destination Unreachable

4  Source Quench

5  Redirect Message

6  Alternate Host Address

8  Echo Request (Ping)

9  Router Advertisement

10  Router Solicitation

11  Time Exceeded

类型域和代码域可以一起用于确定ICMP消息的发送原因。例如,类型3表示一个目标不能到达。在类型3消息中有16位唯一码。该代码标识了目标为什么不能到达。其中可能包括网络问题(代码0)、路由阻挡数据包(代码13),或者甚至是应用不在目标计算机(代码3)。最常见的ICMP信息类型是8/0,它是一个呼叫请求/回答(ping)。

现在有很多基于ICMP开发的网络工具。Traceroute就是其中的一个。Traceroute以连续地发送有序编号的IP TTL数据包来寻找ICMP TTL溢出的返回消息。通过它的这个设计,你能发现ICMP是一个非常有用的网络工具。但是,它也是最常用的和最滥用的协议之一。现在,让我们来看看一些关于ICMP滥用的情况。

ICMP滥用

之前介绍过使用ping作为基本的连接工具。但它也被黑客广泛地用来在攻击前进行连接验证。你是无法攻击一个没有连接上和没有启动的系统——而ping则是帮你发现系统是否正在运行的好办法。由于这样的问题太多了,以致目前很多网络都阻挡了ping。虽然这样做是一个好的开始,但是它并没有完全解决问题。比如,隐藏工具Loki就是一个例子。

1996年Phrak的地铁杂志上发布了Loki,它是一个概念验证工具。如果安装在内部电脑上,Loki可以使用ICMP回叫网络外的黑客。管理员看到的只是发出的新ping流量,而黑客则事实上已经建立了隐秘的通道。ICMP协议从而正被用于消息传送。但是,只要在防火墙上同时阻挡进出的ICMP就可以解决这个问题。

与ICMP相关的另一个潜在问题是它在拒绝服务(DoS)攻击中的使用。Smurf就是一个例子。Smurf使用ping数据包来滥用ICMP。它会发送坏ICMP数据包。它能修改目标地址以将数据包发送到网络节点的广播地址。而源地址则已经被重新指定为被攻击者地址。在大型的网络上,很多系统都会响应广播ping。这样攻击的结果是导致被攻击者被ping响应流所淹没,以致合法的访问被阻断。在2002年发生了一个类似的、针对核心DNS服务器的攻击案例。管理员可以在Cisco路由器上添加以下命令来防止他们的网络响应Smurf流量:no ip directed-broadcast.

ICMP还可以用于辅助进行端口扫描和OS识别,这也叫做指纹识别。它是攻击过程中一个必要的步骤。毕竟,在不知道目标系统运行状态的情况下,攻击是无法成功的。例如,黑客可能只有一个针对Windows XP的攻击,因此它对于Windows 2003系统就没有用了。指纹识别是用于识别OS的。当进行指纹识别时,黑客会使用一个扫描工具来向目标系统发送一系列正常的、特有的以及异常的ICMP查询。接着,扫描工具会观察响应并将它们与数据库进行比较。

ICMP是设计用于更可信网络的。有了ICMP的所有功能,如果它可以在网络上自由的进出,那么它将会是非常实用的。但是,事实上并不是这样的。如果你的目的是为了使网络更加的安全,那么要尽可能地在重要的网络访问端口阻截和禁用ICMP。你的选择将会丢弃或拒绝流量。但是,这些都由你自己来决定。从安全的角度考虑,丢弃数据包可以减少信息的泄露并使黑客更加难以收集到信息。而拒绝数据包会使服务能发现操作失败并快速地中止,而这使使网络更加容易受到攻击了。基于这些原因,作者建议选择丢弃ICMP数据。

关于作者:

Michael Gregg在IT和网络安全方面已经有15年的工作经验。他是风险评估和安全咨询公司Superior Solutions Inc的创始人和CTO。他已经开发了高水平的安全级别,并且著作了6本书,最近的一本是Hack the Stack: The Eight Layers of an Insecure Network。

作者

Michael Gregg
Michael Gregg

暂无

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐

  • 分层安全防御的关键:网络层VS端口

    网络安全到底取决于网络层还是端口?网络层可提供处境意识,端口能够看到加密前的数据,孰优孰劣?本文就它们各自的优势给出说明。

  • 思科新网络管理策略:Cisco Prime(上)

    越来越多的人对思科产品感到不满,但思科公司最近推出了新网络管理软件,将弥补以前产品的不足,它有什么特别之处?

  • 图解Tracert命令的运行过程

    Tracert命令作为一个路由跟踪、诊断实用程序,在DOS和Unix系统下都有此命令,是网管必备的TCP/IP工具之一,经常被用于测试网络的连通性,确定故障位置。

  • 企业网管:你不是一个人在战斗

    以理论为基础,一个不争的事实摆在了我们面前:“一个人的力量是有限的”。即使一个优秀的管理员也不可能将网络管理设计,企业信息系统分析、企业目的等全部掌控。