摘要:上篇我们介绍了TCP/IP协议中常见的漏洞类型包括ARP病毒攻击、基于RIP的攻击、DNS欺骗、TCP连接欺骗。面对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连接中的数据。而就目前的加密技术或认证技术而言,双方需要共享一个密钥或者协商出一对射私密钥对。这就涉及到通信双方必须采用同种加密或认证手段,但是,加密算法或认证算法往往涉及到复杂的数学计算,很消耗系统资源,会使通信效率明显下降。