今天,给大家讲一下有关于dhcp 的一些小知识, 如dhcp的原理,思科怎么去配置它,以及怎么用dhcp欺骗攻击的原理,最后在讲一下防范dhcp攻击的一些原理及其配置. 好吧,我们现在就开始吧,首先大家应该明白dhcp是用来干什么的吧,dhcp是动态主机分配协议,是用来给局域网中的若干主机分配ip地址的.首先说一下环境吧,如下图所示,两台路由器,一台路由器模拟dhcp服务器一台路由器模拟局域网中的一台主机. 接下来,我先简要的给大家说说这个过程,一开始主机并不知道dhcp 服务器在哪(因为可能有若干个dhcp 服务器),于是通过广播发送discover消息来寻找dhcp服务器,并告诉服务器自己需要分配地址,当服务器收到这个发现消息之后,就会通过广播消息来发送offer消息,offer消息里含有server分配给主机的地一个地址,这是主机并不能获得这个地址,而是需要主机正式的向服务器申请这个地址,于是客户端通过广播消息(书上是单播,但后面我抓到包时时广播)来向主机发送request消息来正式申请地址,接下来服务器就通过广播确认(书上是单播)就把这个地址给了客户端. 这么讲可能有点迷糊,那么接下我通过抓包给大家看看这个过程,先不要管怎么配置,具体配置后面给大家讲. 现在开始抓包吧,如下图所示: 这样我们抓到了关于dhcp的四个消息包,也就是我们上面说的四个包,我们发现中间有个ARP包,为什么会有ARP包呢,原因很简单,当服务器收discover消息后,在给主机提供地址之前,为了防止ip地址的冲突时,需要广播ARP请求消息,告诉这个地址的mac地址是谁,如果有主机回复,则说明这个IP地址和局域网的某台主机重复了,在重新换一个地址.如果没收到回复,则向主机分配这个地址,这下不迷惑了吧. 现在我们一个一个看,首先打开第一个discover消息包. 在这个包中,我们看到了ip包的源ip设置成了0.0.0.0 (代表没有地址,只是用0来填充),目的ip设置成了255.255.255.255(广播地址),还看到了dhcp采用的是udp协议,服务器的端口是67,客户端的端口号是68.(排查关于dhcp的故障时,端口号被过滤是一个故障点),也看到了消息中的client ip adderss是0.0.0.0 (代表没有地址,只是用0来填充) 接下来我们再看服务器向客户端发送的offer消息,如下图: 在这个消息包中,我们看到了源地址12.12.12.1(服务器的地址),目的是广播地址255.255.255.255.源端口和目的端口号换了位,而your (client) ip address字段是 12.12.12.3(也就是服务器给主机提供的可用的一个ip) 接下来再看看主机给服务器发送的request消息包,如图所示: 这个消息中源ip地址0.0.0.0 目的ip地址255.255.255.255,也是通过广播消息来发送的.告诉服务器我要正式请求地址. 接下来看看服务器发给主机的ack消息包,如下图所示: 我们发现也是消息也是通过广播来给主机分配ip 地址.大家该能看明白了.就不讲了,至于option字段就是携带一些设置客户段的一些域名等等. 关于DHCP的原理我就讲这么多,接下来我们思科设备上怎么去配置. 服务器: 1.server(config)#ip dhcp pool pool-name 配置一个地址池 2.Server(dhcp-config)#defaulte-route 12.12.12.1 设置主机的网关 3.Server(dhcp-config)#network 12.12.12.0 /24 设置地址范围 4.Server(dhcp-config)#domain-name wangyadong.com设置域名 5.server(config)#ip dhcp excluded-address 12.12.12.1 12.12.12.1 设置不能被分配得的一些地址范围 6. server#show ip dhcp binding 查看已分配的ip地址 客户端: Client(config-if)ip address dhcp 启用dhcp协议 好的,基本配置就这么些,还有很多配置,比如说租期等等就不讲了 还有一个知识点,那就是dhcp的中继代理,这个在什么情况下用呢,当dhcp服务器不和客户端不再同一网段,由于路由器默认不能转发广播数据包,于是我们就得需要将广播消息封装成单播包发送出去,也就是将数据包中的中的目的IP换成服务器的地址,这样就可以发送出去了,配置就一条命令,接口模式下配置iphelper-address 服务器地址,这条命令需要在收到客户端数据包的接口下配置,才生效. 那么环境如下图所示: 通过在抓包可以知道,当R2 收到主机发送的discover消息后,由于接口配置了中继代理,于是就把消息包的源地址改为34.34.34.1 目的地址改为12.12.12.1 然后发送到服务器,服务器接收到了以后将包的源地址和目的地址调换一下,然后发送给中继,中继再还原数据包发给客户端,就这样客户端就申请到了地址.明白了么,好吧看一下抓包图,R2的下面接口的抓包图如图所示: 然后再看看从R2发出去的接口的地抓包如图所示: 这下应该明白了吧哈哈哈哈. 下来讲一件DHCP的安全性 Dhcp 是不安全的,为什么不安全呢?如果攻击者接入到当前的局域网环境中,那么他就可以假装dhcp来发送offer消息来给主机提供一个地址,把自己设置为网关,这样主机发送数据包到攻击者,然后攻击者就可以利用这些信息来获取对自己有利的消息,这就是存在中间人攻击. 攻击过程骤如下: 1.客户端发送discover消息 2.服务器和和攻击者都接受到这个消息后, 服务器会发送offer消息,那么这样攻击就不成功了,所以攻击者为了让服务器和客户端不能进行通信,于是先向发送大量的请求消息,这样服务器的地址空间被消耗掉,也就不能对客户端响应,这就是通过dos攻击实现的 3.接下来攻击者就可以冒充服务器来向主机发送一些消息,这样主机就得到了假的地址等 4.攻击者可以通过对主机发送的数据包的截取,分析得到一些有用的消息. 这个攻击过程的实验就不掩示了,搭建这样的环境还是比较麻烦的,有兴趣的可以自己去百度一下 ,我用的是kali linux+windows GNS+虚拟机的环境实现的 既然知道dhcp不安全,那么有没有防范方法呢,答案是有的,接下来怎么去防范. 假设如果我们对接入交换机的设备,让他只能发送请求消息,这样就制止了攻击者假装服务器发送消息. 在交换上,我们把接口分为信任接口和非信任接口,信任接口允许发送所有消息,这一般配置交换机与服务器相连的接口上.非信任接口只允许发送discover 和request消息 这项技术叫做DHCP侦听技术,接下了我们就讲讲在思科设备上怎么配置. 1.Switch(config)#ip dhcp snooping 开启dhcp 侦听特性 2.Switch(config-if)#ip dhcp snooping trust 配置为信任接口 3.Switch(config-if)#no ip dhcp snooping trust 配置为非信任接口 4.Switch(config-if)#ip dhcp snooping limit rate 对发送包进行限速,有效地防止了dos攻击 5.Switch(config)#ip dhcp snooping vlan 1 针对某个vlan开启dhcp侦听特性 6.Switch# show ip dhcp snooping 查看dhcp snooping的配置 好了,这个课程就做到这了,有空在写,写文档还是很费时间 |