资源描述
常见TCP/IP体系协议安全隐患和应对方法(ARP,DHCP,DNS)
一、 ARP安全
由于ARP协议在设计中存在的主动发送ARP报文的漏使得主机可以发送虚假的ARP请求或响应报文,报文中的源IP地址和源MAC地址均可以进行伪造。在局域网中,即可以伪造成某一台主机(如服务器)的IP地址和MAC地址的组合,也可以伪造成网关的IP地址和MAC地址的自合等。这种组合可以根据攻击者的意图进行搭配,而现有的局域网却没有相应的机制和协议来防止这种为造型为。
1、针对主机的ARP欺骗:ARP协议的基础就是信任局域网内的所有主机,这样就容易实现局域网内的ARP欺骗。如果现在主机D要对主机A进行ARP欺骗,冒充自己是主机C。具体实施中,当主机A要与主机C进行通信时,主机D主动告诉主机A自己的IP地址和MAC地址的组合是“192.168.1.3+44-44-44-44-44-44”,这样当主机A要发送给主机C数据时,会将主机D的MAC地址44-44-44-44-44-44添加到数据帧的目的MAC地址中,从而将本来要发给主机C的数据发给了主机D,实现了ARP欺骗。在整个ARP欺骗过程中,主机D称为“中间人”(man in the middle),对这一中间人的存在主机A根本没有意识到。通过以上的ARP欺骗,使主机A与主机C之间断开了联系。
防范措施:具体操作步骤如下:
(1)进入“命令提示符”窗口,在确保网络连接正常的情况下,使用Ping命令Ping网关的IP地址,如“Ping 172.16.2.1”。
(2) 在保证Ping网关IP地址正常的情况下,输入“arp –a”命令,可以获得网关IP地址对应的MAC地址。这时该计算机上网关对应的ARP记录类型(Type)是动态(dynamic)的。
(3)利用“arp -s 网关IP地址 网关MAC地址”将本机中ARP缓存表中网关的记录类型设置为静态(static)。
(4)如果再次输入“arp -a”命令,就会发现ARP缓存表中网关的记录已被设置为静态类型。
可以编写一个批处理文件(如arp.bat),然后将该批处理文件添加到Windows操作系统的“启动”栏中,这样每次开机后系统便会进行自动绑定。
2、针对交换机的ARP欺骗:在进行ARP欺骗时,ARP欺骗者利用工具产生欺骗MAC,并快速填满CAM表。交换机的CAM表被填满后,交换机便以广播方式处理通过交换机的数据帧,这时ARP欺骗者可以利用各种嗅探攻击获取网络信息。CAM表被填满后,流量便以洪泛(Flood)方式发送到所端口,其中交换机上连端口(Trunk端口)上的流量也会发送给所有端口和邻接交换机。这时的交换机其实已成为一台集线器。与集线器不同,由于交换机上有CPU和内存,大量的ARP欺骗流量会给交换机产生流量过载,其结果是下连主机的网络速度变慢,并造成数据包丢失,甚至产生网络瘫痪。
防范措施:
目前,主流的交换机(如Cisco、H3C、3COM等)都提供了端口安全功能(Port Security feature)。通过使用端口安全功能,可以进行如下的控制:
(1)端口上最大可以通过的MAC地址数量
(2)端口上只能使用指定的MAC地址
对于不符合以上规定的MAC地址,进行相应的违背规则的处理。一般有三种方式(针对交换机类型和型号的不同,具体方式可能会有所不同):
(1)Shutdown。即关闭端口。虽然这种方式是最有效的一种保护方式,但会给管理员带来许多不便,因为被关闭的端口一般需要通过手工方式进行重启。
(2)Protect。直接丢弃非法流量,但不报警。
(3)Restrict。丢弃非法流量,但产生报警。
二、 DHCP安全
在通过DHCP提供客户端IP地址等信息分配的网络中存在着一个非常大的安全隐患:当一台运行有DHCP客户端程序的计算机连接到网络中时,即使是一个没有权限使用网络的非法用户也能很容易地从DHCP服务器获得一个IP地址及网关、DNS等信息,成为网络的合法使用者。
由于DHCP客户端在获得DHCP服务器的IP地址等信息时,系统没有提供对合法DHCP服务器的认证,所以DHCP客户端从首先得到DHCP响应(DHCPOFFER)的DHCP服务器处获得IP地址等信息。
防范措施:
1、使用DHCP Snooping信任端口
DHCP Snooping能够过滤来自网络中非法DHCP服务器或其他设备的非信任DHCP响应报文。在交换机上,当某一端口设置为非信任端口时,可以限制客户端特定的IP地址、MAC地址或VLAN ID等报文通过。一旦将交换机的某一端口设置为指向正确DHCP服务器的接入端口,则交换机会自动丢失从其他端口上接收到的DHCP响应报文
2、在DHCP服务器上进行IP与MAC地址的绑定
在通过DHCP服务器进行客户端IP地址等参数分配的网络中,对于一些重要部门的用户,可以通过在DHCP服务器上绑定IP与MAC地址,实现对指定计算机IP地址的安全分配。
三、 DNS安全
1、缓存中毒
DNS缓存中毒利用了DNS缓存机制,在DNS服务器的缓存中存入大量错误的数据记录主动供用户查询。由于缓存中大量错误的记录是攻击者伪造的,而伪造者可能会根据不同的意图伪造不同的记录,例如将查询指向某一个特定的服务器,使所有通过该DNS查询的用户都访问某一个网站的主页;或将所有的邮件指向某一台邮件服务器,拦截利用该DNS进行解析的邮件,等等。
由于DNS服务器之间会进行记录的同步复制,所以在TTL内,缓存中毒的DNS服务器有可能将错误的记录发送给其他的DNS服务器,导致更多的DNS服务器中毒。正如DNS的发明者Paul Mockapetris所说:中毒的缓存就像是“使人们走错方向的假冒路牌”。
2、拒绝服务攻击
DNS服务器在互联网中的关键作用使它很容易成为攻击者进行攻击的目标,加上DNS服务器对大量的攻击没有相应的防御能力,所以攻击过程很容易实现,且造成的后果非常严重。现在使用的DNS采用了树型结构,一旦DNS服务器不能提供服务,其所辖的子域都将无法解析客户端的域名查询请求。
3. 域名劫持
域名劫持通常是指通过采用非法手段获得某一个域名管理员的账户和密码,或者域名管理邮箱,然后将该域名的IP地址指向其他的主机(该主机的IP地址有可能不存在)。域名被劫持后,不仅有关该域名的记录会被改变,甚至该域名的所有权可能会落到其他人的手里。
防范措施:
DNS的安全扩展
1、DNSSEC的基本原理
域名系统安全扩展(DNSSEC)是在原有的域名系统(DNS)上通过公钥技术,对DNS中的信息进行数字签名,从而提供DNS的安全认证和信息完整性检验。具体原理为:
发送方:首先使用Hash函数对要发送的DNS信息进行计算,得到固定长度的“信息摘要”;然后对“信息摘要”用私钥进行加密,此过程实现了对“信息摘要”的数字签名;最后将要发送的DNS信息、该DNS信息的“信息摘要”以及该“信息摘要”的数字签名,一起发送出来。
接收方:首先采用公钥系统中的对应公钥对接收到的“信息摘要”的数字签名进行解密,得到解密后的“信息摘要”;接着用与发送方相同的Hash函数对接收到的DNS信息进行运算,得到运算后的“信息摘要”;最后,对解密后的 “信息摘要”和运算后的“信息摘要”进行比较,如果两者的值相同,就可以确认接收到的DNS信息是完整的,即是由正确的DNS服务器得到的响应。
2、DNSSEC的工作机制
DNSSEC对DNS区域中的几率进行签名和验证建立在对该区域信任的基础上。为了实现对区域密钥的信任,需要由父域对子域进行验证。DNS系统为一树形结构,DNS客户端通过递归方式进行域名的查询,在一个完整的DNS域名查询中,第一个要查询的域名服务器为根域服务器。在DNSSEC系统中,DNS客户端的域名解析器首先保证跟域是可信任的,然后信任由跟域签名的子域,并以此类推。
3、DNSSEC的应用现状
DNSSEC作为对目前DNS的安全扩展,可有效地防范DNS存在的各种攻击,保证客户端收到的DNS记录的真实性和完整性。此外,DNSSEC与原有的DNS具有向下的兼容性,在实现上具有可行性。但是,由于Internet的特殊性,就像从IPv4到IPv6的迁移一样,从DNS到DNSSEC的转换不可能在短期内完成,需要一个渐进的过程。可以先有针对性地建立一些安全区域,如.cn、.net等,然后再向其他区域扩展。当整个Internet部署了DNSSEC后,所有的信任将集中到根域下。
DNS系统的安全设置
1. 选择安全性较高的DNS服务器软件
Internet上大量的DNS服务器软件使用的是基于UNIX/Linux的BIND软件,目前最新版本为BIND 9.x。最新版本的BIND软件支持许多安全特性,如支持DNSSEC,解决了早期版本中存在的一些安全漏洞等。对于在Internet上的DNS服务器建议采用BIND软件,并将其升级为最新版本。
对于Windows NT服务器来说,建议使用高版本的系统
2. 限制端口
DNS在工作时使用UDP 53和TCP 53端口进行通信。其中,DNS服务器会同时监听这两个端口,DNS客户端通过UDP 53端口与DNS服务器之间进行域名解析的请求和应答,而TCP 53端口用于DNS区域之间的数据复制。
展开阅读全文