警惕VLAN1安全陷阱
2018-11-22山东钱卫
■ 山东 钱卫
编者按:在网络部署中,采用VLAN是常用的网段划分及隔离手段,但是由于设备的不同,console中的配置命令使用不同的体系,有时会出现某些故障现象。笔者单位就遇到类似问题,在进行相关梳理和分析后,解决了问题。
在网络部署中,为了做到最大的业务隔离和用户安全,一个最基本的原则,就 是 PUPSPV(每用户每业务每VLAN),也就是让任何一个用户的任何一个业务,都使用不同的VLAN。根据业务的不同,有的使用单层VLAN,有的使用QinQ双层VLAN。
但是由于设备的不同,console中的配置命令使用不同的体系,有的时候,很可能表面上看去已经完美的实现了规划的业务,但是一些隐藏起来的默认设置,会留下非常大的隐患。
现象描述
某段时间,在我单位某几个业务中,突然有大量用户反应网络访问速度剧降,甚至很多用户无法拨号,受影响的用户大约占这几个乡镇用户的30%。同时,这几个乡镇的内网业务全部中断。
图1 在UNI4口下抓包结果
经过现场及乡镇负责同事的排查,确认了逻辑业务均正常,无故障:
1.网线、光缆、光收发等各类材料和设备正常,无松动、死机、过热等情况。
2.在中心机房测试,各类业务正常运行。
3.各个业务使用各自的单层 VLAN或 QinQ VLAN,没有使用非法VLAN的情况。
4.各端口只透传了相应的VLAN,同时受影响VLAN中没有发现倒接路由器的情况。
5.未发现广播风暴。
故障梳理
鉴于业务受影响比较大,且受影响用户的地理分布存在随机性,同一个用户也是时好时坏。因此我们到几个现场进行了实地排障。
在确认了上述5个方面没有问题后,可以确定,在规划的逻辑业务中是不存在问题的,那么故障原因只能存在于规划之外。
首先在用户和中心机房之间的机房中,搭建内网专线环境,经过我们的测试,发现业务时通时不通,但抓包无异常数据。登录交换机,却发现设备的CPU和端口带宽处于峰值;关闭测试环境的上联口,相关指标迅速降下来。
在OLT下面搭建用户测试环境,给ONU的四个端口VLAN分别进行如下配置:UNI1为宽带,UNI2为点播,UNI3为智慧类业务,UNI4不配置。经过多步测试,终于发现了几个异常点:uni1口的业务为test@nw,无法拨号;uni4理论上不能拨号,但使用另外一个县区的test@jn却拨号成功,并且可以正常上网。这两个县区使用的核心路由器不是同一台,能够成功认证,只能说明在物理连接中出现了串路。
同时我们在UNI4口下面抓包,如图1所示,发现存在大量的广播包,20.8秒内抓到111万数据包,随后抓包的电脑死机。
这些数据包几乎全部是DHCP Offer包,且 其Transaction ID相同。DHCP Offer数据是服务器向终端发送的响应包。
打开任何一个数据包,通过source MAC地址78:eb:14:d0:c0:20的 前三个字节,可以查到这是一款FAST路由器,且其网关地址为192.168.1.1,这种配置一般是普通的家用路由器。Destination Mac地址20:8b:37:16:11:ef则是一款Skyworth机顶盒,一般是接到UNI2口的,如图2所示。
图2 打开一个数据包查看详情
由此可以确定,乡镇有用户将机顶盒从UNI2口误接到了UNI4口,且乡镇安装人员未按照规定给无业务的UNI端口配置宽带VLAN或关闭此端口,且在某处存在用户倒接路由器,且该用户的无业务UNI口也没关闭,两个县区之间存在物理环路。
由此,就产生了本文所叙述的故障:各个业务本身没有问题,在相应业务出口抓包也没异常,却全部卡顿或中断。毕竟即使业务逻辑隔离了,但他们是在相同的设备、光模块、网线中传输,共用同样的CPU、光电转换能力、网口速率等。
上述5个问题共同存在,才导致了这次诡异事故的产生。这种情况既是偶发性的,也是在这种网络架构下必然迟早要发生的。
修复与防治
首先是外网与内网必须从逻辑隔离改为物理隔离,其他业务视情况而定。其次,从顶层BRAS向下,需要全面封锁VLAN1。
1.BRAS
BRAS利用各个
子接口接收不同VLAN的业务,如interface gei-0/0/0/1.111222开 启了user-dynamic-vlan anyother-qinq,并且限制了qinq range internal-vlanrange 300-400 externalvlan-range 111-222。但是对于没有QinQ的业务,也可以响应PPPOE请求,需要将本功能封闭,或者在对端设备关闭。
2.交换机
各类不同的交换机配置命令不同,例如使用port link-type trunk开启透传模式,port trunk allow-pass vlan 1234指定允许透传的VLAN,其他VLAN一律丢弃。
但其实VLAN1是默认透传的,这条默认的命令隐藏看不到。
在VLAN1为系统保留VLAN不能全局关闭的情况下,需要在各个trunk口手动关闭undo port trunk allow-pass vlan 1。
再者,其他untagged或者native口,不用的时候需要 disable或 shutdown,或者配置一个非法的VLAN防止业务通过。
3.OLT+ONU
OLT中,由于设备的不同,命令各式各样,除了trunk封闭VLAN1外,还需要考虑到PON口下面ONU的注册行为。
ONU上线后,需要给其配置不同的业务。没有给UNI口手动配置的时候,注册时会默认配置为:
vlan mode tagged
native vlan 1(隐藏不显示)
此时可以建立业务模板。如我们使用的某厂家设备,可以建立4口create onusvr-template 1 name vlanauto-set uni-eth-num 4模板,然后再每一个PON口都绑定模板。
我们使用的模板,用累加的方式给四个口分别配置111、222、333、444,第二个上线的设备配置 112、223、334、445,依次类推。
也可以用模板让其上线后的默认配置改为native vlan 2这类没有使用的VLAN,则数据包在pon口就被丢弃了。