今天遇到一个问题,同事问怎么来防止LVS环境下的arp欺骗,对于LVS不是太熟悉,于是到whitehat群 中请教,然后自己又看了下关于LVS的资料,做了个简单的分析,记录下。
From:
首先了解下LVS,LVS是Linux服务器集群系统(Linux Virtual Server)的简称,其官方网址为: , 其中LVS主要采用了三种IP负载均衡技术,即:
VS/NAT 通过NAT实现虚拟服务器(Virtual Server via Network Address Translation);
VS/TUN 通过IP隧道实现虚拟服务器(Virtual Server via IP Tunneling);
VS/DR 通过直接路由实现虚拟服务器(Virtual Server via Direct Routing
具体的介绍可以到官网查看,我们这里只分析下它们的架构:
上图是官网给出的架构图,VS/NAT主要有一台调度服务器和下面的一个内网组成,中间通过交换机连接。
其数据流为:用户->调度服务器->Switch/Hub->到达real服务器->Switch/Hub–>调 度服务器->用户。
a.调度服务器同一交换环境下的服务器来ARP欺骗调度服务器VIP。如果ARP欺骗的话,通过调度服务器同一交换机下的服务器来欺骗调度服务器这 个IP,是可以完成的,它们在同一交换环境下的。
b.如果采用调度服务器IP来欺骗同一交换环境下的其他IP,因为入侵进去的话,实际登陆的可能是调度服务器后面的内网里的某一台服务器,如果这个 session断开的话,可能就无法找到是哪一台服务器了,这是其一;当然了,由于是负载均衡吗,我们可以把内网所有的主机都控制了,然后再来实施ARP 欺骗,很显然,由于此IP在内网,我们很难欺骗调度服务器VIP相同网段的其他IP。
预防:那么直接在交换机上设置VIP和mac的绑定理论上应该就可以防止对VIP的ARP欺骗了。
2.VS/TUN
通过上图,可以看出,VS/TUN的架构为一台调度服务器,下面是目标服务器。
数据流为:用户->调度服务器->目标服务器->直接返回给用户.
ARP欺骗攻击
a.通过了解TUN方式的VS可以知道调度服务器实际上和后台的目标服务器是同处一个交换环境下面的,那么我们就可以使用VIP同一交换环境下的 IP对调度服务器VIP进行攻击,由于VS的real服务器和调度服务器一个交换环境下,那么也可以对任一台进行ARP欺骗攻击,前提是得知道他们的真实 IP地址,而不是VIP地址。
b.通过VS来ARP欺骗VIP同一交换环境下的其他IP,调度服务器给我们随机分配一台目标服务器,由于目标服务器和调度服务器是在一个交换环境 下,那么就可以成功的对其实施ARP欺骗攻击,当然了,也要知道调度服务器分配的真实IP地址了。
预防:理论上可以通过在交换机上设置IP地址和MAC绑定的方法来防止ARP欺骗。
3.VS/DR
上图为DR方式的VS,调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过高速的交换机或者HUB相连。VIP地址为调度器 和服务器组共享,调度 器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只 是用于处理目标地址为VIP的网络请求。
数据流:用户->调度服务器->目标服务器->用户。
ARP欺骗攻击:
a.通过VIP环境下的IP来欺骗VIP,由于在同一交换环境下,欺骗是可以成功的。
b.那么通过VIP来ARP欺骗同网段的其他IP呢,获得的权限可能是调度器分配的目标服务器任意一台,由于他们都处于同一交换环境,但是,目标服 务器只响应调度服务器的ARP请求,其本身无法发送ARP广播,在这里的话,就无法通过目标服务器来达到ARP欺骗其他服务器的目的了,实际上类似于给目 标服务器设置了一个接受ARP的白名单,将自己保护起来了。
预防:理论上只需要绑定VIP对应的调度器MAC就可以预防ARP欺骗。
以上仅仅是凭自己对LVS的理解来分析的,真实的LVS环境没有接触过,也不知道是否真如上面所说,欢迎各位看官批评指正。
By:Neeao 2010-01-28 16:55