关于 TCP/IP 协议漏洞的安全措施
摘要:上篇我们介绍了 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 连接中的数据。而就目前的加密技术或认证技术而言,双方需要共享一个密钥或者协商出一对射私密钥对。这就涉及到通信双方必须采用同种加密或认证手段,但是,加密算法或认证算法往往涉及到复杂的数学计算,很消耗系统资源,会使通信效率明显下降。
评论