导语:TCP/IP由网络层的IP协议和传输层的TCP协议组成。常见的漏洞类型包括ARP病毒攻击、基于RIP的攻击、DNS欺骗、TCP 连接欺骗。面对这些漏洞我们要采取什么样的安全措施去预防和解决呢?
摘要:TCP/IP由网络层的IP协议和传输层的TCP协议组成。常见的漏洞类型包括ARP病毒攻击、基于RIP的攻击、DNS欺骗、TCP 连接欺骗。面对这些漏洞我们要采取什么样的安全措施去预防和解决呢?
TCP/IP是TransmissionControlProtocol/InternetProtocol的简写 ,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是 lnternet 最基本的协议、Interact国际互联网络的基础。
TCP/IP由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP协议采用了4层的层级结构,分别是网络接入层、网络层、传输层和应用层。每一层都呼叫它的下一层所提供的网络来完成自己的需求。
简单来讲,TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
而IP协议规定需要给因特网的每一台电脑规定一个地址,这个地址就是IP地址。IP地址通过软件实现网络物理地址“统一”的方法。这种方法使用统一的地址格式,在统一管理下将地址分配给主机。
由于TCP/IP协议是一个开放性的协议导致其在TCP/IP 协议栈中,绝大多数协议没有提供必要的安全机制,存在一定的漏洞安全问题。
TCP/IP 协议常见漏洞类型
ARP 病毒攻击
ARP病毒攻击的工作原理是通过伪造通信双方一端的IP地址或 MAC 地址,让另一端误以为该主机为正确主机从而达到欺骗目的。
当网络中源主机A想和目的主机 B 进行通信,A会先广播ARP请求报文,期望B能收到并返回给A自己的 MAC 地址。但由于报文采用的是广播形式,因此攻击者 C在收到A的请求报文时会将自己的IP地址伪造成B的IP地址,这在 ARP请求报文中可以很容易获得,接着攻击者C向发送带有 B 的IP地址,C的 MAC地址的返回消息,让A误以为C就是合法的目的主机 B,从而攻击者C就达到了盗取信息的目的。
基于RIP的攻击
RIP 是一种基于距离(跳数)的路由选择协议,它的作用是计算数据包在网络中路由的最佳路径,因为RIP基于跳数且规定了最大跳数不可以超过15,因此它只适用于中小型的网络。基于RIP的攻击实际上是攻击网络中路由器的路由表。因为 RIP 是基于 UDP 协议进行传输,而 UDP 是一种不可靠,不需要建立连接的传输层协议。因此运行着 RIP 协议的路由器会无条件的接受任何来自网路中的报文,包括一些非法的路由表更新报文。
路由器在接受这些报文时会在没有执行路由表更新命令的情况下改变自身的路由表。从而导致该路由器的路由表紊乱,甚至可能影响该路由器的邻接路由器,继而导致整个网络瘫痪,带来严重的后果。
DNS欺骗
DNS(Domain name resolution)又称域名解析协议,它用来将域名和 IP 地址进行相互转换,
从而让用户在上网的时候可以直接输入域名而不是冗长繁琐的 IP 地址。
在 DNS 欺骗中,攻击者通常会先攻击 DNS 服务器并取而代之,并改变原先 DNS 服务器中的 IP 地址和域名的映射关系。
当用户访问相应的域名时返回的实际上是一个错误的网页,而攻击者可以通过这个网页向用户植入病毒或直接展开攻击。DNS欺骗的手段分为两种,一种是篡改本地主机的 Hosts 文件,Hosts文件实现的就是 DNS 服务器的功能。
例如将Hosts 文件中的一个域名对应的 IP 地址改成本机的回环地址(127.0.0.1),这样用户在访问这个域名时就无法到达想要的网页。另一种是DNS劫持,即劫持用户使用的DNS服务器,通常来说黑客会将自己已经建立好的攻击网站的IP地址映射到用户经常访问的网站的域名,而该攻击网站和原网站看上去相差无几,这样用户即使被攻击也毫不知情。
TCP 连接欺骗
虽然TCP协议是一种可靠的链路层协议,但是由于每台主机的IP地址在每次上网的时候都可能发生改变,因此攻击者可以通过这个漏洞扰乱两台主机的TCP连接。TCP连接欺骗中,攻击者C会一直对主机A进行攻击(例如 Dos 攻击)使其瘫痪,从而阻止A与B进行通信,然后自己再伪造成主机 A与B 建立 TCP连接。过程如下:
C→B:SYN=1,seq=a
B→A:SYN=1,ACK=1,seq=b,ack=a+1
C→B:ACK=1,seq=a+1,ack=b+1
攻击者C首先向B发送连接请求报文,同步位SYN置为1,序列号 seq为a。B收到请求报文后,向A发出确认报文,确认号 ack为 a+1,序号seq 为 b,由于A处于瘫痪中因此不会发送响应报文。C 通过网络嗅探工具得到B向A发送的 ack 和seq,对B发送确认报文,将ACK 置为1,序号 seq为 a+1,确认号 ack为 b+1。这样B和攻击者C之间就直接建立了TCP连接,并可以直接向B发送指令,而B还认为指令是由合法主机A发送过来的,将执行这些命令。从而导致C可以任意地向B发送攻击命令,致使B瘫痪。
那么面对TCP/IP协议常见漏洞我们要如何预防呢?
首先从架构角度来说:IPSec与TLS最常用的两种安全架构,可以利IPSec、TLS安全架构在不同的协议层来保护数据传输的安全性。
一、IPSec
IPSec 是一组用来在网络层提高数据包传输安全的协议族统称,它通过在原有的IP报文中加入一些特定的检测头来达到安全确认的目的。
IPSec有两种工作模式,分别是传输模式和隧道模式,前者适用于端到端(End to End),即两台主机之间的 IPSec 通信,后者适用于站点到站点(Site to Site),即两个网关之间的 IPSec 通信,IPSec 由 AH 协议、ESP协议和一些复杂的安全验证算法组成,这些基本的算法为IPSec中的协议服务。我们主要介绍AH和ESP两个协议:
(1)AH协议提供的安全服务
AH 的工作模式是在每一个数据包中的 IP 报头后添加一个 AH 头,这个 AH 头有自己独特的字段用于提供安全服务,AH 可以保证数据的完整性不被篡改,但不能防止数据被盗窃。AH 使用的 IP 协议号是 51,当IP报文的协议号部分为51 时,代表IP头后面是一个 AH 报头。
AH提供的安全服务主要有数据源认证,加入一个双方协商好的密文,来对对方身份以及数据的有效性进行验证;第二个是数据完整性校验,因为AH协议需要防止数据被非法篡改,因此该协议会通过引入一个单向Hash函数来创建一个散列值或者摘要信息,将该散列值与文本结合向接收方传输,同时接受方用同样的单向Hash函数对接受内容进行解密,验证结果是否一致,以此来保护数据的完整性。
第三个是防报文重放攻击,所谓重放攻击就是攻击者虽然不知道加密过的数据包里面到底是什么,但是可以通过截取这个数据包再发给接受方从而使接收方无法判别哪个才是正确的发送者,而AH协议会校验序列号字段中的数值是否重复过,若重复,则直接丢弃。
(2)ESP 协议提供的安全服务
ESP与 AH不同的是 ESP会先把数据段加密,然后再存放到IP报文中,从而达到防止窃听的目的。ESP 除了在 IP 报头的后面会加上一个 ESP报头以外,还会在报文最后加上一个 ESP 报尾,该报尾用来提供加密服务。这样攻击者即使获取了该数据包,在没解开 ESP 加密的情况下也无法获知其中的信息。
ESP 提供的安全服务和 AH 有所重合,ESP使用序列号字段来防止重放攻击,ESP 通常使用HMAC-MD5 或 HMAC-SHA-1算法对加密后的载荷进行 Hash 计算来完成认证和保证数据完整性的功能。但因为ESP会把数据加密之后再传输,因此会提供保密性服务,在传输机密性数据的时候 ESP 有很大优势。
此外,在 NAT 模式下,由于AH会对IP地址也做Hash运算,因此在地址转换之后 AH 的 Hash 值会被破坏,而ESP的IP协议号是50,在进行NAT转换时没有相应的 TCP或UDP端口号的概念。为了使 ESP 能够满足 NAT环境下的地址转换,这时就需要引进一个新的方法,即在ESP报文和 IP 报头之间加入一个新的UDP报头。
二、TLS协议
TLS 协议工作在传输层,由于TCP和UDP都有可被利用的漏洞,因此它是为了解决传输层链路安全问题而出现的。
TLS 分为两种协议,分别是 TLS 记录协议和 TLS 握手协议。TLS 记录协议根据 TLS 握手协议协商的参数,对上层所交付的数据进行各种操作,从而使数据通过密文的形式传输,而接收方则通过解密的方式来接受数据。
通过这种方式就可以大大加强数据传输的安全性。另一种协议是 TLS 握手协议,他让客户端和服务端进行协商,确定一组用于数据传输加密的密钥串,相互认证对方,这样当攻击者没有通过密钥认证时,就无法与另一端进行数据通信。
首先,客户端向服务端发送 ClientHello 消息,其中含有一个客户端生成的随机数,我们假设为R1和可供选择的版本号清单等信息。
第二步,根据客户端发来的Client Hello,服务端回复 Server Hello 消息,其中会根据客户端发来的清单数据确定两端通信将会使用的版本号,密码套件,压缩方式等等协议需要的重要信息,并产生一个服务端随机数 R2,当服务器认证时,服务器会发给客户端自己的证书。
第三步,当要求客户端认证时,客户端会先发送自己的证书,同时根据之前客户端和服务器端产生的随机数公用一种算法计算出密钥。最后相互发送了 Finished 消息后就代表握手结束,可以开始传输数据。
同时也可以根据每种漏洞不同的特点进行有针对性的防御,但是一些防御方法并不全面。
一、ARP病毒攻击的常见防御方法
目前有很多针对ARP病毒攻击的防御方法,我们来看一下常见的防御方法。
(1)提高系统安全性
定期更新操作系统补丁,及时升级杀毒软件病毒库,并开启杀毒软件的实时监控功能,防止系统被非法入侵或感染ARP病毒,但是这种防御方法只能防止本机感染ARP病毒,并不能有效防御ARP欺骗。
(2)部署ARP防火墙
ARP防火墙在一定程度上可以用来帮助缓解ARP攻击,协助保护局域网内主机安全。ARP防火墙除了下文即将介绍的绑定MAC地址功能外,最主要的防御方法就是主动防御。
主动防御是指ARP防火墙按照一定频率强制对外发送正确的ARP数据包,这ARP防火墙在一定程度上可以用来帮助缓解ARP攻击,协助保护局域网内主机安全。ARP防火墙除了绑定MAC地址功能外,最主要的防御方法就是主动防御。
主动防御是指ARP防火墙按照一定频率强制对外发送正确的ARP数据包,这显然会对网络造成额外的负担。如果发送频率过高时,会在局域网内造成ARP风暴。而且攻击者只要提高攻击速度,使其大于ARP防火墙的主动防御速度,主动防御就会失效。
(3)在交换机或主机端绑定MAC地址
在交换机端绑定每台主机的IP/MAC对应关系,为每台主机添加一条静态ARP缓存条目。当交换机收到来自主机的数据包时,将数据包的IP地址和MAC地址与ARP缓存条目进行比对,如果相同则放行数据包,否则该数据包将被丢弃。同理,在主机端也可以绑定网关的IP/MAC对应关系,为网关添加一条静态ARP缓存条目。这种防御方法虽然可以抵御一定程度的ARP攻击,但会牺牲 Internet的移动性和自动配置性,增加了网络管理员的负担,不适用于主机变动颊繁的局域网。
二、基于RIP的攻击的常见预防方法
(1) 将路由器的某些接口配置为被动接口。配置为被动接后,该接口停止向该接口所在的网络广播路由更新消息。但是,允许继续在该接口接收路由更新广播消息。
(2) 配置ACL访问控制列表。只允许相应源IP地址的路由更新报文进入。
(3) 在RIPV2中使用验证机制。RIPV1天生就有不安全因素。因为它没有使用认证机制并使用不可靠的UDP协议进行传输。
RIPv2的分组格式中包含了一个选项可以设置16个字符的明文密码字符串(表示可很容的被嗅探到)或者MD5签字。虽然RIP信息包可以很容易的伪造,但在RIPv2中你使用了MD5签字将会使欺骗的操作难度大大提高。
(4)采用路由器之间数据链路层PPP的验证。采用PPP的PAP验证或Chap验证实现数据链路层的安全线路连接。
三、DNS欺骗常见预防方法
(1)进行IP地址和MAC地址的绑定
① 预防ARP欺骗攻击。因为DNS攻击的欺骗行为要以ARP欺骗作为开端,所以如果能有效防范或避免ARP欺骗,也就使得DNS欺骗攻击无从下手。例如可以通过将GatewayRouter的IpAddress和MACAddress静态绑定在一起,就可以防范ARP攻击欺骗。
②DNS信息绑定。DNS欺骗攻击是利用变更或者伪装DNS Server的IP Address,因此也可以使用MACAddress和IP Address静态绑定来防御DNS欺骗的发生。
由于每个Nctwork Card 的MAC Address具有唯一性质,所以可以把DNS Server的 MAC Address与其IPAddress绑定,然后此绑定信息存储在客户机网卡的Eprom中。当客户机每次向DNS Server 发出查询串请后,就会检测DNS Server响应的应答数据包中的MACAddress是否与Eprom存储器的 MAC Address相同,要是不同,则很有可能该网络中的 DNS Server受到DNS欺骗攻击。
这种方法有一定的不足,因为如果局域网内部的客户主机也保存了DNS Server 的 MAC Address,仍然可以用 MACAddress进行伪装欺骗攻击 。
(2)使用Digital Password 进行辨别
在不同子网的文件数据传输中,为预防窃取或篡改信息事件的发生,可以使用任务数字签名(TSIG)技术即在主从Donain Name Server中使用相同的Password和数学模型算法,在数据通信过程中进行辨别和确认。
因为有Password进行校验的机制,从而使主从 Server的身份地位极难伪装,加强了Domain Name信息传递的安全性。
在不同子网的文件数据传输中,为预防窃取或篡改信息事件的发生,可以使用任务数字签名(TSIG)技术即在主从Donain Name Server中使用相同的Password和数学模型算法,在数据通信过程中进行辨别和确认。因为有Password进行校验的机制,从而使主从 Server的身份地位极难伪装,加强了Domain Name信息传递的安全性。
安全性和可靠性更好的 Domain Name Service是使用域名系统的安全协议(Domain Name System Security,DNSSEC)),用Digital Signature的方式对搜索中的信息源进行分辨,对 DATA的完整性实施校验。
因为在设立 Domain时就会产生Password,同时要求上层的Domain Name也必须进行相关的Domain Password Signature,显然这种方法很复杂,所以InterNIC域名管理截至目前尚未使用。然而就技术层次上讲,DNSSEC应该是现今最完善的Domain Name设立和解析的办法,对防范Domain Name欺骗攻击等安全事件是非常有效的。
(3)直接使用IP地址访问
对个别信息安全等级要求十分严格的WEB站点尽量不要使用DNS进行解析。由于DNS欺骗攻击中不少是针对窃取客户的私密数据面来的,而多数用户访问的站点并不涉及这些隐私信息,因此当访问具有严格保密信息的站点时,可以直接使用IP地址而无需通过DNS解析,这样所有的DNS欺骗攻击可能造成的危害就可以避免了。
除此,应该做好 DNS Server的安全配置项目和升级DNS软件,合理限定 DNS Server进行响应的IP地址区间,关闭DNS Server的递归查询项目等。
(4)对DNS数据包进行监测
在DNS欺骗攻击中, Client会接收到至少两个 DNS的数据响应包,一个是真实的数据包,另一个是攻击数据包。欺骗攻击数据包为了抢在真实应答包之前回复给Client,它的信息数据结构与真实的数据包相比十分简单,只有应答域,而不包括授权域和附加域。
因此,可以通过监测DNS响应包,遵循相应的原则和模型算法对这两种响应包进行分辨,从而避免虚假数据包的攻击。
四、TCP连接欺骗的常见防御方法
(1)利用网络拓扑结构
IP协议本身支持包过滤,当一个数据包从广域网进入局域网时,受害者可以查询源IP地址字段是否属于局域网内部地址段。如果是,则丢弃这个数据包。
这种防御方法的前提是受害者仪信任局域网内主机。如果受害者不仅信任局域网内主机,还通过其他协议授权。域网的主机对其进行访问,那么就无法利用该方法防御来自广域网的攻击者。
(2)限制仅利用IP地址进行认证的协议
比如Unix系统的Rlogin协议,它仅仅利用IP地址进行身份认证。只要主机的IP地址包含在信任列表中,Rlogin协议就允许远程登录到另一主机,而不需输入密码。这样,攻击者可以利用Rlogin协议轻松地登录到受害者主机。我们可以限制这些仅利用IP地址进行认证的协议,或对IP地址进行一定配置或验证,通过风险画像、IP代理检测验明这些IP地址是否存在风险,提高这些协议的安全性。
(3)使用加密算法或认证算法
对协议进行加密或认证可以组织攻击者篡改或伪造TCP连接中的数据。而就目前的加密技术或认证技术而言,双方需要共享一个密钥或者协商出一对射私密钥对。这就涉及到通信双方必须采用同种加密或认证手段,但是,加密算法或认证算法往往涉及到复杂的数学计算,很消耗系统资源,会使通信效率明显下降。
如若转载,请注明原文地址