ICMP
协议分析与问题
1、 打开” icmp数据包”文件夹中的ping.pkt,填表:
序号
|
Type
|
code
|
Checksum
|
Identifier
|
Sequence
|
消息种类
|
消息描述
|
1#
|
8
|
0
|
0x 3a 5c
|
0x0200
|
4352(0x1100)
|
Query(Request)
|
abcdefghijklmnopqrstuvwabcdefghi
|
2#
|
0
|
0
|
0x 425c
|
0x0200
|
4352(0x1100)
|
Query(Relay)
|
abcdefghijklmnopqrstuvwabcdefghi
|
以上ICMP报文的Data字段最大值是( 32 ),Windows系统中的默认值是( 32 )
2、打开” icmp数据包”文件夹中的icmplab.pkt,回答问题:
1)何种类型的ICMP数据被发送?Code号是多少?
答:type为3的ICMP数据被发送,code号是3,端口不可达。
2)发送这个ICMP数据包的主机IP地址是什么?
答:IP: 10.2.0 .2
3)为什么发送这个ICMP数据包
答:因为本来 10.1.0 .1要发送的IP数据包里的目的地址是10.2.0.2,但因为它不知道怎样达到,所以返回一个ICMP差错报文。
3、打开” icmp数据包”文件夹中的icmp.cap,观察了解不同类型的报文,其中总共有哪些类型的icmp数据包?分别有什么作用?
type
|
code
|
消息种类
|
作用
|
8
|
0
|
Query(Request)
|
回应请求,测试目的主机或路由器的可达性
|
0
|
0
|
Query(Relay)
|
回应的应答,测试目的主机或路由器的可达性
|
11
|
0
|
Error
|
因“传输期间生存时间为
0
”返回
ICMP
差错报文
|
3
|
3
|
Error
|
因“端口不可达”返回
ICMP
差错报文
|
13
|
5
|
Query(Relay)
|
时间戳请求,获取其他设备的当前时间
|
14
|
0
|
Query(Relay)
|
时间戳应答,获取其他设备的当前时间
|
17
|
0
|
Query(Relay)
|
因获取不了地址掩码返回
ICMP
差错报文
|
4、ICMP有哪些安全问题?如何防范基于ICMP的***?
Ping of death(
死亡之ping)
|
现在所有的标准
TCP/IP
实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些***,包括:从
windows 98
之后的
windows NT(service pack 3
版本之后
)
,
Solaris
和
Mac OS
都具有抵抗一般
ping of death
***的能力。此外,对防火墙进行配置,阻断
ICMP
以及任何未知协议,都讲防止此类***。
|
ICMP Flood(ICMP
洪水)
|
用户或管理人员可以通过在运行菜单中输入
regedit.exe
调出注册表,打开
HKEY_LOCAL_Machine/System/CurrentControlSt/Services?TCPIP/Paramters
键值并在其右窗口中创建
DWORD
键值命名为
EnableICMPRedirects
键值数为
0
,此时即可禁止计算机响应
ICMP
得定向报文,以达保护目的,而还有一种方法是通过修改注册表禁止响应
ICMP
路由通告报文,来守护此类***,依次打开注册表如下键值
HKEY_LOCAL_Machine/System/CurrentControlSt/Services?TCPIP/Paramters/Interfaces
在右侧窗体中创建
DWORD
值命名为
PerformRouterDiscovery
其键值为
0
即可停止响应。
|
Smurf
***
|
防止网络遭受
Smurf
***
-------------------
首先
,千万不能让网络里的人发起这样的***。在
Smurf
***中,有大量的源欺骗的
IP
数据包离开了第一个网络。通过在路由器上使用输出过滤,可以滤掉这样的包,从而阻止从网络中发起的
Smurf
***。
在路由器上增加这类过滤规则的命令是:
Access-list 100 permit IP {
网络号
} {
网络子网掩码
} any
Access-list 100 deny IP any any
在局域网的边界路由器上使用这一访问列表的过滤规则,就可以阻止网络上的任何人向局域网外发送这种源欺骗的
IP
数据包。
其次
,停止网络做为中间代理。如果没有必须要向外发送广播数据包的情况,就可以在路由器的每个接口上设置禁止直接广播,命令如下:
no ip directed-broadcast
还有,如果网络比较大,具有多个路由器,那么可以在边界路由器上使用以下命令:
ip verify unicast reverse-path
让路由器对具有相反路径的
ICMP
欺骗数据包进行校验,丢弃那些没有路径存在的包。最好是运行
Cisco
快速转发(
Cisco Express Forwarding
,
CEF
),或者其它相应的软件。这是因为在路由器的
CEF
表中,列出了该数据包所到达网络接口的所有路由项,如果没有该数据包源
IP
地址的路由,路由器将丢弃该数据包。例如,路由器接收到一个源
IP
地址为
1.2.3 .4
的数据包,如果
CEF
路由表中没有为
IP
地址
1.2.3.4
提供任何路由(即反向数据包传输时所需的路由),则路由器会丢弃它。
遭受
Smurf
***时的防护
---------------------
如果主机不幸成为了
Smurf
***的目标,在这儿可以找到很多种方法来限制这种拒绝服务***造成的影响。在最近新进修改的
Cisco IOS
操作系统中,被访问列表所拒绝的数据包直接就被丢弃(其丢弃速度几乎接近于硬件速度)。不过每秒钟每个列表行有两个数据包例外,这就是向中间代理回送
ICMP
不可达消息的数据包。因此,如果不想做为别人
Ping
的目标,那么在边界路由器上就直接可以阻塞掉。
激活这个列表的命令是:
ip icmp rate-limit unreachable
如果必须允许 Ping 命令,可以通过使用命令访问速率( Committed Access Rate , CAR )来限制 ICMP 的流量。以下列出了其它 Cisco IOS 的例子:
config t
Access-list 100 permit icmp any {
网络号
} {
网络子网掩码
} echo-reply
Access-list 100 permit icmp any {
网络号
} {
网络子网掩码
} echo
Interface e1
Rate-limit input access-group 100 512000 8000 8000 conform action transmit exceed action drop
这个例子限制
ICMP
的传输速率不能超过
512Kbps
,突发速率不能超过
8000bits
。所有多出的包将被丢弃。可以有多个速率限制命令同时添加到一个接口上,可以对不同的数据包进行不同的速率限制。
|
ICMP
重定向
|
TCP/IP
协议实现中关于主机接收ICMP重定向报文主要有下面几条限制:
ICMP
重定向***实现比较难
|