前言
在校园网、小区网等环境中,运营商的光猫通常会被 Technical Report - 069(TR069)和远程维护系统(RMS)远程管理,这些系统会在你不知情的情况下修改你的光猫配置,甚至会在你不知情的情况下重置你的光猫,导致你的网络配置失效,甚至设备全部失联。因此,屏蔽这些远程管理机制是非常有必要的。
然而,不幸地是,新版本的光猫早已修复了一切可以删除 TR069 和 RMS的漏洞,包括但不限于:
- 不可能通过面板直接删除 TR069
- 不可能通过 F12 或者改包、发包的方式变相删除 TR069 或修改接口的配置
- RMS 的配置被写死,不可能通过修改配置文件的方式禁用或修改 RMS
- 没有任何漏洞或后门可以在不拆机的情况下打开 Telenet
- 甚至连拆机都不一定能的打开 Telenet,因为
uart_en=0
本文将介绍一种全新的思路:通过故意制造 IP 冲撞,使得 RMS 服务访问异常,从而达到光猫不能正常拉取远程配置的目的。本方法不仅可以防止配置被远程修改,还能防止局端修改你的光猫超级管理员密码,以实现权限的固化,以解决我在 V2EX 提出的这个问题。
过程
1. 获取光猫的超级管理员密码
虽然以前很多地区的光猫的超级管理员密码都是固定的,比如联通是 CUAdmin
,但事实上最近几个月开始很多地区都开始实施全新的随机密码机制,机房随机为每个用户生成不同的超级管理员密码,然后下发到用户设备上。因此,如果用默认密码登不进去,那么你需要先获取你的光猫的超级管理员密码。
获取方法有很多种,比如:
1.1. (推荐)询问宽带师傅
打 宽带师傅(线务员) 的电话,告诉师傅你要改桥接,师傅会向上面打报告申请密码(师傅自己也没权限查询密码,必须向上报告)一般来说几个小时以后师傅就会回电告诉你密码。
注意打客服电话是没用的,客服不懂这个。这种方法的优点是你不需要手动设置上网和IPTV的上行配置。
1.2. (社恐适用)重置光猫
这个太麻烦了我不喜欢,不过我试过是可行的。
- 确定你所在区域的光猫认证方式,是S/N还是LOID。有些地区是S/N认证,不需要记录任何信息。有些地区是LOID认证,需要记录你光猫的LOID才能上网。
- 拔掉光猫光纤
- 断电然后捅光猫屁股上的Reset按钮,然后插电,保持捅着Reset按钮大概15秒,等到光猫的灯都亮了,然后又灭了,然后又亮了以后松开Reset按钮(也就是光猫中间又重启了一次)
- 注意一定要让光猫再次重启一次再放手,这样才是完全重置,否则只是局部重置用户设置而已。
- (LOID方式)填入LOID
- 插光纤,注意光猫的配置下发,看到INTERNET和IPTV下发完了立即拔电源,拔晚了密码下发下来就寄了,需要重来
- 拔掉光猫光纤
- 打开光猫电源,进后台,用默认密码登录
另外局端向光猫下发的密码是不加密的明文,通过抓包获取密码也是可行的,然而此操作过于繁杂,因此此处不再赘述。
2. 开始操作
登录光猫后台,找到 高级配置 – 远程管理 – RMS 服务器。记下 RMS 服务器的IP。如图为 10.128.0.7
打开 基础配置 – IPv4配置 – LAN配置,把 IP 地址设置成和RMS一样的,如图为 10.128.0.7
,子网掩码 255.0.0.0
若为桥接模式上网,则和我一样禁用DHCP服务器。若为光猫路由模式上网(谁用光猫路由啊),则不需要禁用DHCP服务器,但初始 IP 地址和 终止 IP 地址要设置成和 RMS 服务器位于同一个网段的。
保存,插光纤,重启光猫,可以看到 状态 – 远程管理状态 – 远程连接建立状态为 “上报无回应”
这样光猫便会将 RMS 服务器的地址解释成本机,使得 RMS 连接永不成功,也就没有办法通过 polling 拉去下发的配置了。
后记
读到这里,想必有读者就要问了,为什么不写个黑洞路由,或者写几个防火墙把 TR069 / RMS 的IP屏蔽掉,而出此下策呢?
事实上博主已经尝试过这些了。根据博主的测试,自定义静态路由、自定义防火墙规则、端口过滤、上下行策略配置等等,都无法阻止 TR069 / RMS 的远程管理。因此不得不通过这种冲撞的方法来达到目的。
另外,如果你想的话,冲撞 TR069 的网关的 IP 地址(如图为 10.78.128.1
)也是可以的,但是与 RMS 的地址相比, TR069 的地址通常是动态DHCP的,因此一旦局端变了网关地址,冲撞就失效了,就会导致配置被下发。事实上,博主就曾因此而被远程下发过配置导致光猫桥接变路由而失联,因此不推荐这样做,最好还是去冲撞RMS的IP。
更多保险方案
博主为了防止其他的以外情况,还建议,如果路由器已经 Root,则可以将路由器设置两种上网方式(PPPOE-桥接 + 静态IP-光猫路由-备用),以便于在发生什么意外到导致局端配置仍被下发的情况下,保证家庭设备不断网。
具体来说,对于 小米路由器 或者 OpenWRT 路由器:
- 修改
/etc/config/network
增加:
config interface 'ftth'
option proto 'static'
option ifname 'eth1'
option ipaddr '10.128.0.1'
option netmask '255.255.255.0'
option defaultroute '1'
option metric '2048'
config 'route' 'defaultgateway_ftth'
option interface 'ftth'
option target '0.0.0.0'
option netmask '0.0.0.0'
option gateway '10.128.0.7'
option metric '2048'
其中 10.128.0.7
为光猫 IP,10.128.0.1
为路由器 IP,最后一位的 1
是随意写的,只要不是 7
或 0
、 255
就行。eth1
为 WAN 接口的名称,可通过 ifconfig
或 ip ad
命令查询。
- 修改
/etc/config/firewall
增加:
config zone 'ftthzone'
option name 'ftth'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
option network 'ftth'
config forwarding 'ftthfw'
option src 'lan'
option dest 'ftth'
- 重启路由器