网络 · 2021年9月29日 3

校园网禁止多终端共享上网解决方案

  • 免责声明

如若您开始阅读本文,则默认您已阅读、了解、遵守以下免责声明的内容;如您不同意以下声明的任何一项条款,请关闭本页面,并按照学校推荐的上网方式连接到校园网

学校明令禁止使用路由器上网( 如禁止任何单位及个人私建 DHCP 服务器或代理服务器等 ),相关规定请检阅网络使用协议或向校方咨询;若有规定明令禁止进行本文中的任何一项内容,本人强烈不推荐您进行相关实践,同时本人亦不会提供任何协助,否则产生的一切后果将由您自行承担

实践本文中提及的内容仅为您个人意愿,本人从未怂恿您进行相关实践,若造成意外、问题与事故,如学校追责、网络中断、硬件损坏、数据丢失、网络安全,与本人无关,本人概不承担任何责任

本文仅供学习交流请勿将相关实践应用于任何商业行为或任何违法、违规行为,否则产生的一切后果将由您自行承担; 在进行相关实践后,请于 12 小时内将路由器卸载相关软件、拆除相关设备、恢复到出厂设置,并按照学校推荐的上网方式连接到校园网

情况说明

网络环境

  • 深信服 全网行为管理 AC( 网上有人说用了深信服的防火墙后,破解多终端共享上网的限制基本上是无望了 )
  • Drcom 认证计费网关( 透过 Web Portal 进行用户认证,对非 Windows 的设备十分友好,也省了抓包或重写路由器的认证客户端的屑事了)

局域网内设备

  • X86架构软路由
  • 电脑
  • Nas
  • 手机
  • 平板
  • Ap

检测原理分析及对应解决技巧

  • IP 包内 TTL 字段的变化

原理

存活时间 Time To Live,简写 TTL )是计算机网络技术的一个术语,指一个数据包在经过一个路由器时,可传递的最长距离(跃点数)。每当数据包经过一个路由器时,其存活次数就会被减一。当其存活次数为 0 时,路由器便会取消数据包并发送一个ICMP TTL数据包给原数据包的发出者。其设计目的是防止数据包因不正确的路由表等原因造成的无限循环而无法送达及耗尽网络资源。

例如:如果一个主机的 TTL 64,那么当它经过 64 个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。

来源:百度百科

不同的操作系统的默认 TTL 值是不同的,因此运营商可以通过 TTL 值来判断主机的操作系统,但是当用户修改了 TTL 值的时候,会影响判断结果,所以这种方法的准确性并不高。Linux 系统的默认 TTL 值通常为 64,Windows 的通常为 128 或 255。 应对 TTL 检测可以通过修改设备默认 TTL 值来应对,但对于局域网内设备,最好的办法是在网关处进行设置。其余设备的修改方法请自行搜索

应对方法

通过 iptables 在 OpenWRT 修改 TTL 值( Padavan 固件可在 LAN 设置中直接调整为 TTL 值不减少 )

以 Root 用户登入路由器 SSH

opkg update && opkg install iptables-mod-ipopt kmod-ipt-ipopt

进入 OpenWRT 防火墙设置,在 自定义设置 中填入以下内容( WAN 、LAN 口名称需根据实际情况进行更改 )

iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64 //修改 WAN 口 TTL 值
iptables -t mangle -A PREROUTING -i br-lan -j TTL --ttl-set 64 //修改 LAN 口 TTL 值
  • IP 包的 ID 标识检测

原理

IPID 共享检测的机制适用于 Windows 系统的主机。Windows 网络协议栈实现时,IP 报文中 ID 字段的值随着发送 IP 报文数的增加而增加,这里将此 IP 报文连续的值的特征称之为轨迹。Identification 的初始值是随机值,一般来说,不同主机的初始值有较大的差异,所以当检测到多个不同连续的 IP 轨迹即可判断共享主机的数目。IPID 检测技术可以较准备地判断出是否为共享上网用户,判断出共享上网主机数,完全被动监听,不发送探测信息。

来源:Panabit

应对方法

通过 iptables 将 IPID 修改为1

iptables -t mangle -A POSTROUTING -j IPID --ipid-pace 1
  • 时钟偏移检测

原理

不同主机物理时钟偏移不同,网络协议栈时钟与物理时钟存在对应关系,不同主机发送报文频率与时钟存在统计对应关系,通过特定的频谱分析算法,发现不同的网络时钟偏移来确定  不同主机。时钟漂移检测以其复杂的计算方法可以非常准确地判断出共享上网主机数以及共享上网用户。

来源:Panabit

应对方法

在局域网中建立 NTP 服务器统一时间戳

进入 OpenWRT 系统设置
候选的 NTP 服务器地址填写 ntp1.aliyun.com、time1.cloud.tencent.com、stdtime.gov.hk

进入 OpenWRT 防火墙设置,在 自定义设置 中填入以下内容

iptables -t nat -N ntp_force_local
iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local
iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN
iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destination 192.168.1.1

User-Agent 检测

原理

当一个软件在一个网络协议进行操作时,它通常向它的 Operating peer 提交一个特定的字符串来标示自己,该字符串通常包含了其应用程序类型、操作系统、软件供应商……等等,有时还会包含软件修订版本等信息。在 HTTPSIP 以及 SMTP / NNTP 协议中,这个识别是通过 User-Agent的头字段传送的。

HTTP 中,User-Agent 字符串通常被用于内容协商,而原始服务器为该响应选择适当的内容或操作参数。例如,User-Agent 字符串可能被网络服务器用以基于特定版本的客户端软件的已知功能选择适当的变体。

来源:百度百科

应对方法:统一所有终端的 User-Agent

以 Root 用户登入路由器 SSH

opkg update
opkg install privoxy luci-app-privoxy luci-i18n-privoxy-zh-cn
安装成功截图
  1. 进入 OpenWRT Web 后台,进入 Privoxy 管理页面设置
  2. 进入文件与目录
  3. Action Files 中只保留 match-all.action
  4. Filter Files 与 Trust Files 留空
  1. 进入访问控制
  2. Listen Address 填写 0.0.0.0:8118
  3. Permit Address 填写 192.168.0.0/16
  4. 勾选 Enable Action File Editor
  1. 进入杂项
  2. 勾选 Accept Intercepted Requests
  3. 进入日志
  4. 取消全部选项
  5. 点击保存并应用
  6. 进入 OpenWRT 防火墙设置,在自定义设置中填入以下内容( 相关地址需根据路由器地址进行调整 )
  7. 点击保存并应用重启防火墙
iptables -t nat -N http_ua_drop
iptables -t nat -I PREROUTING -p tcp --dport 80 -j http_ua_drop
iptables -t nat -A http_ua_drop -m mark --mark 1/1 -j RETURN
iptables -t nat -A http_ua_drop -d 0.0.0.0/8 -j RETURN
iptables -t nat -A http_ua_drop -d 127.0.0.0/8 -j RETURN
iptables -t nat -A http_ua_drop -d 192.168.0.0/16 -j RETURN
iptables -t nat -A http_ua_drop -p tcp -j REDIRECT --to-port 8118
  1. 打开 http://config.privoxy.org/edit-actions-list?f=0
  2. 点击Edit
  3. 在 Action 那一列中,hide-user-agent 改选为 Enable(绿色)
  4. 在右侧 User Agent string to send 框中填写 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36
  5. 其它全部选择为 No Change (紫色)
  6. 点击 Submit 按钮
启用成功截图

Flash Cookie 检测

原理

Http Cookie 一样,Flash Cookie 也就是记录用户在访问 Flash 网页的时候保留的信息,鉴于 Flash 技术的普遍性,几乎所有的网站都采用,所以具有同 Http Cookie 一样的作用。但是Flash Cookie更加强大:1、容量更大;2、没有默认的过期时间;3、存储在不同的地点。只要当用户打开浏览器去上网,那么就能被 AC 记录到 Flash Cookie 的特征值。由于 Flash Cookie 不容易被清除,而且具有针对每个用户具有唯一,并且支持跨浏览器,所以被用于做防共享检测,极大的减少了共享上网的漏判率和误判率,使得我们 AC 防共享方案成为了行业内技术领先、获得众多客户认可的解决方案。当经过代理的电脑上网时,AC 会给每台电脑种植不同的 Flash Cookie,当 AC 检测到一个用户有多个 Flash Cookie 时,则认为是有代理上网。

来源:深信服文档

应对方法:禁用 Flash、iptables 拒绝 AC 检测

禁用、卸载所有终端上的 Flash Player

进入 OpenWRT 防火墙设置,在 自定义设置 中填入以下内容( 相关地址需根据路由器地址进行调整 )

点击保存并应用重启防火墙

# iptables 拒绝 AC 进行 Flash 检测
iptables -I FORWARD -p tcp --sport 79 --tcp-flags ACK ACK -m string --algo bm --string " src=\"http://1.1.1." -j DROP

参考

在编写本文时,本人参考了以下网页的内容,在此由衷地感谢文章作者的无私奉献。

多终端检测

综合

TTL

User Agent

时间戳

iptables 设置

IPID

Flash Cookies

其它

%d