![79a497b07b403493cca9d72b5beb1f02.png](https://i-blog.csdnimg.cn/blog_migrate/6b380efb332d7efeb5cf9583641e4615.jpeg)
文接Part 1:上次的文章和大家分享了关于终端安全和接入安全的一些技术和安全设计手段,这篇主要针对于接入层及汇聚层的安全设计做一个通透的解答。(上周懒了···文章写完忘记更新了)
DHCP不是你想卖,想卖就能卖:DHCP Snooping
如今的企业网里面,绝大多数终端IP地址分配都是基于DHCP服务器。
但是基于DHCP分配存在一个问题,客户端请求IP地址时,都是通过广播形式发送DHCP Discovery消息给同一广播域内的所有主机。由于是广播包,所有人都能看到此请求,这也是为什么DHCP特别容易遭受网络攻击或者网络欺诈。
一般情况下,上联的汇聚交换机会配置DHCP relay中继,把此DHCP请求转换为单播unicast包,并发送到指定的DHCP服务器。
可是,若有人恶意在此广播域内接入一个未授权的DHCP服务器,比如最常见的场景:公司里有人私自接入了一个家用路由器,这时,DHCP客户端接收的IP可能就是家用路由器下发的网段地址,由于没有路由,就无法实现通信了。因为DHCP的工作机制是,谁先给终端发送DHCP OFFER信息分配IP,终端就相信谁。
很明显,汇聚交换机中继DHCP包以后并等待真正的DHCP服务器回复Offer的时延肯定大于同一个网段内未授权的DHCP服务器,正所谓的近水楼台先得月。所以此未授权的DHCP服务器会先于真正的DHCP给终端分配地址,此时网络欺诈就产生了。
解决此问题的方法,就是采用DHCP Snooping。
在接入交换机上,首先需要清除哪一个接口是去往DHCP服务器的,然后把这些接口定义为信任端口Trust Port。
如果DHCP服务器直连此接入层交换机,那找出此物理端口并定义为trust接口。
如果DHCP服务器时通过其他汇聚或者核心交换机连接到此接入层交换机,则把交换机之间的互联trunk接口定义为trust端口,因为DHCP Offer回复包可能从任何trunk端口传输回此接入层交换机。
对于其他接口,默认就是Untrust端口,即非信任端口。
定义外trust和untrust端口之后,就是DHCP Snooping大显身手的时候了。
首先交换机会监听开启DHCP Snooping的VLAN,若有任何终端请求DHCP Offer,合法的DHCP服务器和未授权的DHCP服务器都会收到此请求,此时:
当非授权DHCP服务器回复DHCP Offer时,由于此端口不是DHCP Snooping Trust端口,则此DHCP回复包被认定为非法,从而被丢弃。
当合法的DHCP服务器回复DHCP Offer时,由于接收到此数据包的接口被定义为Trust端口,此DHCP回复包被送到请求IP地址的终端。
整个流程结束,非授权的DHCP被组织,而合法的DHCP服务器分配了IP地址。
通过以上的描述,可能大家认为DHCP Snooping的作用仅仅是阻止非授权DHCP分配地址?
不,其实DHCP Snooping在下一盘很大的棋。
因为它构建了一个非常重要的数据库:一个包含端口IP—MAC地址绑定的数据库,而这个数据解决了一个传统的分离式问题:
网络IP层只有IP和MAC的绑定信息,就是咱们常说的ARP。而数据链路层只有MAC和端口Port的绑定信息,即二层转发表。
而DHCP Snooping则把三者都连接到一起,从而给其他应用提供了基础支撑。
那么说明应用会用到DHCP Snooping所构建的数据库呢?
没错!就是ARP欺骗!相信所有IT行业的朋友都会对其深恶痛绝,不是ARP欺骗这个攻击方式有多难,相反,就是因为ARP欺骗的实现方式实在太简单了,只要明白ARP的原理,随便找个软件就可以搞欺骗,从而引起的故障范围及其巨大。同一个广播域里面的所有主机都会收到影响。
简单说一下ARP欺骗的原理:
当同属同一个网段的两个主机需要互相通信,或者主机需要发送数据包给路由器网关时,他们只知道对方的IP地址。
课时数据包封装的时候,除了放入对方的IP之外,还需要封装二层信息,即对端的MAC地址。
为了知道对端的MAC地址,发送方就在网段内部广播的一个数据包:问IP地址1.1.1.1的MAC地址是多少,请告诉我一下。
当IP地址为1.1.1.1的主机收到此ARP之后,就给源回复一个ARP response说道,我的MAC地址是AA:AA:AA:AA:AA:AA。
然后两个主机就可以愉快的通信了。
那么ARP欺骗又是怎么样的呢?
还是上述流程,可此时如果有同属一个网段的主机B主动回复说1.1.1.1的MAC地址是BB:BB:BB:BB:BB:BB。此时ARP的发起端就会信任此回复,然后把所有发往1.1.1.1的数据包都发往此MAC地址。由此可见,ARP其实是一个很傻很天真的协议,说什么信什么。。。
那么如何保护这个傻不唧唧的协议呢?我们可以通过ARP Inspection来帮忙。当然,ARP Inspection能够生效的前提,就是DHCP Snooping给出的三者绑定的数据库。
由于DHCP Snooping数据库内包含了IP地址、MAC地址以及端口。也就是说,此端口发送的任何数据包必定是以此IP地址和MAC地址作为源来发送的。那么IP ARP Inspection就是检查任何ARP request和response包,并查阅DHCP Snooping数据库。若ARP包里面IP、MAC的内容和数据不符,就丢弃此ARP包。
说明一点,DHCP Snooping中,trust端口可以理解,就是用来告知交换机哪个端口是合法的DHCP Offer回复端口,那么ARP Inspection端口的trust是什么意思呢?再确认一个点,ARP Inspection是检查DHCP Snooping数据库,那举个栗子:如果中断发起ARP请求询问网关IP的MAC地址,由于网关的IP一定是固定IP,而不是DHCP获取来的,所以网关的IP和MAC地址信息肯定不在DHCP Snooping数据库里面。此时,当网关的ARP response回到接入层交换机时,如果不配置trust端口,那么ARP Inspection就会丢弃此回复数据包,因为它不合法,数据库里面找不到。那么解决办法就是,告诉接入层交换机,该接口发送的ARP request和response不需要做任何检查,信任他们即可。这就是ARP Inspection的作用。
除了ARP欺骗之外,还有这么一种情况,就是某个主机假借其他主机的IP地址,发送伪造数据包。例如DOS攻击,攻击者伪造某个目标主机的IP地址,给全网发送例如ARP信息,或者ping包等。然后大家都纷纷把此ping回复给真正属于此IP的主机。此时,被攻击的设备就会莫名其妙:我是谁?我在哪?它们为什么给我发那么回复包?我带宽呢?
那么这样的问题应该如何解决呢?同样我们可以借助DHCP Snooping的数据库,IP Source Guard就可以解决这个问题。接入层交换机检查数据库,发现伪造者的接口上并没有绑定此IP,直接将包丢弃了。
DHCP Snooping+ARP Inspection+IP Source Guard可谓是网络接入中的IP安全三剑客。有了他们保驾护航,那么接入层交换机的IP环境就很安全了。
各种各样的网络协议:
不知道大家有没有遇到过这种情况,我想把笔记本连到交换机上抓一些特定流量的数据包,结果还没看到数据包,各种各样的数据包就占满了wireshark窗口。
什么VRRP包、什么OSPF的hello包等等各种各样的包。其实我们可以不在意这些信息,去找自己想要的就好了,但是,安全事故的发生往往就是在不经意间出现的。有一些不怀好意的人,就是冲着这些信息来的,只要拿到这些数据包就可以分析网络情况,并搞破坏。
比如,有VRRP信息就可以人为制造虚拟网关加入到VRRP组内;有OSPF就可以插入一台路由器,加入路由协议,得到全网路由信息的同时并注入虚假路由。
所以,必须在源头上把这些信息掐掉,若做不到隐藏,至少加上MD5验证等,让攻击者无法参与进来。
由于VRRP,OSPF等协议都是汇聚层交换机的管理范畴了,此处我们仅仅讨论接入层交换机相关的功能:
CDP协议:
CDP协议是Cisco私有协议,用于发现Cisco设备,默认情况下CDP是全局开启。
但是在终端接口,我们其实没有必要使用CDP,也无法通过CDP发现什么。为了增强网络安全,针对CDP做如下操作:
1、 上联其他交换机的端口开启CDP。
2、 下联终端的端口关闭CDP。
那么非Cisco设备呢?对于非Cisco厂商,一般会采用LLDP识别其他设备,原理和CDP一样。为此我们也需要人为干预哪些端口参与了LLDP协议。
如果你的企业接入层交换机还运行着其他协议,而这些协议不需要终端参与进来,请根据具体情况来关闭不必要的协议。
汇聚层安全
有人会琢磨,汇聚层不就是很多接入层交换机上联嘛,是在接入层的后方。
既然接入层都做好了完备的安全防护,汇聚层应该不用怎么担心了吧?
其实不然。
因为我们忽略了一个重要的问题,很多企业网的汇聚层,往往是各类终端的 IP 网关。换言之,汇聚层除了连接接入层交换机,更重要的是汇聚层是企 业网 IP 路由的边界。
因此,当讨论企业网安全设计时,一旦出现“边界” 二字,自然少不了各种安全策略。
例如:接入层是企业网的物理边界,也是第二层数据链路层的边界。所以我们关注的是二层相关的安全参数,例如端口安全等。
而作为网络层的边界,汇聚层,则更多的是和 IP 相 关的安全策略部署,例如 HSRP/VRRP 二层网关冗余安全,OSPF 等路由协议安全等。
端口安全
无论是接入层交换机,还是汇聚,还是后续的核心层。基本的端口安全一定要遵守。
此处的端口安全不像接入层那么复杂,简单遵守如 下几点即可:
1. 关闭不需要的端口。
2. 端口描述要正确,下联/上联交换机名称+楼层+ 端口号码。
3. 不要 VLAN 1。再次重申对于 Cisco 用户来 说,VLAN1 就忘记吧。
协议安全
由于绝大部分端口和终端安全策略都部署在了接入层交换机,从业务层面来说,相比接入层交换机, 汇聚层交换机能部署的安全策略不多。主要集中在协议安全。
HSRP/VRRP 安全
HSRP,VRRP 相比大家再熟悉不过了。
冗余网关协议,给终端提供虚拟网关IP地址,主的down掉,备用马上起来顶上。
可是某一天,不知道从哪里冒出来的一个网络设 备,宣称自己是 HSRP、VRRP 的成员,优先级 255。
一瞬间现有合法的 HSRP、VRRP 设备马上俯首称臣,点头哈腰。
网络故障就这么产生了。
怎么办,加验证呗。
通过给 HSRP、VRRP 协议增加MD5验证,这样,下挂的终端设备虽然能够收到 HSRP、VRRP心跳消息,但是由于MD5验证的关系,无法与现有HSRP、VRRP组沟通,从而避免了第三方设备恶意篡位的网络风险。
Passive 和邻居验证:OSPF 的安全之道
OSPF,不用说想必大家都知道他的各种细节。
与VRRP,HSRP类似,OSPF也会定期向参加OSPF的接口发送组播hello消息。
若有人恶意接入一台非授权路由器,并根据现有的企业网OSPF 路由器的Hello包提供的信息,例如Area号码,网段等。然后在个人路由器上伪造相对应的OSPF配置,最后这一台非授权路由器和现有的OSPF路由器形成邻居并大家友好往来,没事给你注入点虚假路由或者现有的路由,但是更优先等。
最后的结果是,此非授权路由器可以通过发布路由的方式间接控制网络流量的走向等,行为及其恶劣。
解决方案:
• 对于参加OSPF的接口,若没有其他邻居在此网段中,务必把接口置于Passive模式。
Passive 模式的OSPF,不发布任何的Hello包。
对于有邻接关系的OSPF接口,开启MD5验证
有了 MD5 验证,就不怕其他非授权路由器参与到 OSPF 路由协议中来,并造成破坏。
通过部署以上两个安全策略以后,我们就不用再担 心路由协议被劫持的问题了。
同时,需要说明的一点是,以上仅仅是以OSPF为例,实际工作中,可能大家会使用其他路由协议, 从IGP的RIP,EIGPR,IS-IS,到EGP的BGP。 无论是哪一个,安全认证均是重要一环。
以上是汇聚层安全与设计思想,第三篇马上更新,敬请期待~