Unix类操作系统的TCP/IP堆栈加固之ICMP协议部分


TCP/IP 堆栈负责处理传入和传出 IP 数据包,并将数据包的数据路由到要处理这些数据的应用程序。由于自身的缺陷、网络的开放性以及黑客的攻击是造成互联网络不安全的主要原因。TCP/IP作为Internet使用的标准协议集,是黑客实施网络攻击的重点目标。

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

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

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

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

针对ICMP协议的攻击包括:

目的地不可到达攻击属于拒绝服务攻击 :ICMP 目的地不可到达消息向尝试转发消息的网关提供了一种工具,用来通知发送方:因为在数据报目的地地址中指定的主机不可到达,所以无法传递该消息。

Smurf 攻击属于拒绝服务攻击 :Smurf 攻击是拒绝服务攻击的一种非常可怕的形式,因为它具有放大效应。Smurf 攻击利用 ICMP 回应消息。

1.禁用ICMP回声广播活动

  1. AIX 5  
  2.  
  3. #no -o directed_broadcast=0 
  4.  
  5. FreeBSD 5-7  
  6.  
  7. #sysctl -w net.inet.icmp.bmcastecho=0 
  8.  
  9. HP-UX 10  
  10.  
  11. #ndd -set /dev/ip ip_respond_to_echo_broadcast 0  
  12.  
  13. #ndd -set /dev/ip ip_forward_directed_broadcasts 0  
  14.  
  15. Linux2.4-2.6 #sysctl -w net.ipv4.icmp_echo_ig#nore_broadcasts=1 
  16.  
  17. OpenBSD3-4 已经是缺省设置  
  18.  
  19. Solaris 8-10  
  20.  
  21. #ndd -set /dev/ip ip_respond_to_echo_broadcast 0  
  22.  
  23. #ndd -set /dev/ip ip6_respond_to_echo_multicast 0  
  24.  
  25. #ndd -set /dev/ip ip_forward_directed_broadcasts 0 

否则你的系统可能成为Smurf攻击者的工具。Smurf攻击是以最初发动这种攻击的程序名“Smurf”来命名的。这种攻击方法结合使用了IP欺骗和ICMP回复方法使大量网络传输充斥目标系统,引起目标系统拒绝为正常系统进行服务。

Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。

2.禁用ICMP路由重定向

  1. AIX5  
  2.  
  3. #no -o ipig#noreredirects=1 
  4.  
  5. #no -o ipsendredirects=0 
  6.  
  7. FreeBSD 5-7  
  8.  
  9. #sysctl -w net.inet.ip.redirect=0 
  10.  
  11. #sysctl -w net.inet.ip6.redirect=0 
  12.  
  13. HP-UX 10  
  14.  
  15. #ndd -set /dev/ip ip_send_redirects  
  16.  
  17. 0#ndd -set /dev/ip ip_forward_directed_broadcasts 0  
  18.  
  19. Linux2.4-2.6  
  20.  
  21. #sysctl -w net.ipv4.conf.all.accept_redirects=0 
  22.  
  23. #sysctl -w net.ipv6.conf.all.accept_redirects=0 
  24.  
  25. #sysctl -w net.ipv4.conf.all.send_redirects=0 
  26.  
  27. #sysctl -w net.ipv6.conf.all.send_redirects=0 
  28.  
  29. OpenBSD3-4  
  30.  
  31. #sysctl -w net.inet.icmp.rediraccept=0 
  32.  
  33. #sysctl -w net.inet6.icmp6.rediraccept=0 Solaris 8-10  
  34.  
  35. #ndd -set /dev/ip ip_ig#nore_redirect 1  
  36.  
  37. #ndd -set /dev/ip ip6_ig#nore_redirect 1  
  38.  
  39. #ndd -set /dev/ip ip_send_redirects 0  
  40.  
  41. #ndd -set /dev/ip ip6_send_redirects 0 

否则您的系统可能被攻击者使其路由表错误。

3.禁用ICMP广播探测

  1. AIX5  
  2.  
  3. #no -o icmpaddressmask=0 
  4.  
  5. FreeBSD 5-7  
  6.  
  7. #sysctl -w net.inet.icmp.maskrepl=0 
  8.  
  9. HP-UX 10  
  10.  
  11. #ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0  
  12.  
  13. #ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0  
  14.  
  15. Linux2.4-2.6  
  16.  
  17. #sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 
  18.  
  19. OpenBSD3-4 已经是缺省设置  
  20.  
  21. Solaris8-10  
  22.  
  23. #ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0  
  24.  
  25. #ndd -set /dev/ip ip_respond_to_timestamp_broadcast 

ICMP协议的攻击的内容就向大家介绍完了,希望大家已经掌握,我们还会在以后的文章中继续向大家介绍相关内容的。

  1. UNIX系统安全危机评估
  2. 采取针对性措施保障Unix服务器的安全
  3. 浅析Unix主机系统安全漏洞存在的必然性

相关内容