校园网防多设备检测
AI-摘要
NaoKuo GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
参考文章
编译好的固件
- (XiaoMI_CR6608、XiaoMI_mini)
搭建本地编译环境
准备一个
Ubuntu 22.04
系统(实体机、虚拟机、Windows Linux子系统都可以)注意:
- 不要用
root
用户进行编译 - 国内用户编译前最好准备好梯子
- 默认登陆IP:
192.168.1.1
密码:password
- 不要用
安装编译依赖
1
2
3
4
5
6
7
8
9
10
11sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev拉取L大的源码
其他
Openwrt
源码:immortalwrt、openwrt官方版、x-wrt1
git clone https://github.com/coolsnowwolf/lede
进入
lede
目录1
cd lede
拉取校园网所需模块
1
2
3# 加入UA2F模块和RKP-IPID模块
git clone https://github.com/Zxilly/UA2F.git package/UA2F
git clone https://github.com/CHN-beta/rkp-ipid.git package/rkp-ipid缝合一些其他插件
添加下面代码复制到 lede源码根目录
feeds.conf.default
文件1
2src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small更新
feeds.conf.default
模块1
2./scripts/feeds update -a
./scripts/feeds install -a
开始本地编译.config
打开编译菜单
1
make menuconfig
前三项根据自己的软路由选择
以下为校园网防检测必选
1
2
3
4
5
6
7
8
9
10
11
12# 勾选上ipid
kernel-modules -> Other modules -> kmod-rkp-ipid
# 选上模块
kernel modules -> Netfilter Extensions -> kmod-ipt-u32
kernel modules -> Netfilter Extensions -> kmod-ipt-ipopt
# 勾选上ua2f
network -> Routing and Redirection -> ua2f
# 选上模块
network -> firewall -> iptables-mod-filter
network -> firewall -> iptables-mod-ipopt
network -> firewall -> iptables-mod-u32
network -> firewall -> iptables-mod-conntrack-extra根据自己喜好选择插件,然后保存退出
找到
.config
和feeds.conf.default
文件
在线编译openwrt固件(Github Actions)
准备自己的
Github
帐号,进入Actions-OpenWrt
的项目把项目拉到自己的仓库
编辑
diy2
脚本,拉取ua2f
和rkp-ipid
模块1
2git clone https://github.com/Zxilly/UA2F.git package/UA2F
git clone https://github.com/CHN-beta/rkp-ipid.git package/rkp-ipid上传
.config
和feeds.conf.default
文件修改
.config
文件查找Netfilter Extensions
关键词,在Netfilter Extensions
下第二行后添加代码,保存1
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
检查一下配置完后的文件
开始编译
等待数个小时编译完成
刷入Openwrt系统
根据自己编译的固件类型寻找合适的刷机教程
以下是本人编译的固件
防检测配置
- 如果不清楚自己的校园网多设备检测方式可以把以下所以防检测方法都加上
- 常见通过设备流量特征识别多设备方式:
- TTL
- IPID
- 时间戳
- UA
- 统一时间戳
- 进入
OpenWRT
系统设置, 勾选Enable NTP client(启用 NTP 客户端)
和Provide NTP server(作为 NTP 服务器提供服务
NTP server candidates(候选 NTP 服务器)
四个框框分别填写1
2
3
4ntp1.aliyun.com
time1.cloud.tencent.com
stdtime.gov.hk
pool.ntp.org- 防火墙自定义规则
- 其中
192.168.1.1
需要更改成路由器的地址,视固件而定。 - 若你的路由器地址不在
192.168.0.0/16
内,最后两行都要跟着改,一般的家用路由器都在这个范围内。1
2
3
4
5
6
7
8# 防时钟偏移检测
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
- 进入
- 统一
UA
(UA2F)UA2F
配置(SSH)- 点击
System
->TTYD 终端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33# 启用 UA2F
uci set ua2f.enabled.enabled=1
# 可选的防火墙配置选项
# 是否自动添加防火墙规则
uci set ua2f.firewall.handle_fw=1
# 是否尝试处理 443 端口的流量, 通常来说,流经 443 端口的流量是加密的,因此无需处理
uci set ua2f.firewall.handle_tls=1
# 是否处理微信的流量,微信的流量通常是加密的,因此无需处理。这一规则在启用 nftables 时无效
uci set ua2f.firewall.handle_mmtls=1
# 是否处理内网流量,如果你的路由器是在内网中,且你想要处理内网中的流量,那么请启用这一选项
uci set ua2f.firewall.handle_intranet=1
# 使用自定义 User-Agent
uci set ua2f.main.custom_ua="Mozilla/114.514 (NB; CPU NB 114_514 like NB OS X) NBWebKit/114.5.14 Version/114.514 Safari/114.514"
# 禁用 Conntrack 标记,这会降低性能,但是有助于和其他修改 Connmark 的软件共存
uci set ua2f.main.disable_connmark=1
# 应用配置
uci commit ua2f
# 开机自启
service ua2f enable
# 启动 UA2F
service ua2f start
# 读取日志
logread | grep UA2F - 检查
UA2F
运行是否正常
- 防止
IPID
检测- 防火墙自定义规则
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 通过 rkp-ipid 设置 IPID
# 若没有加入rkp-ipid模块,此部分不需要加入
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
#由于本校局域网是A类网,所以我将这一条注释掉了,具体要不要注释结合你所在的校园网
# iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10
- 防火墙自定义规则
- 统一
TTL
- 防火墙自定义规则
1
2
3# 通过 iptables 修改 TTL 值 数字为需要的修改的ttl值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
- 防火墙自定义规则
- 拒绝
Flash
检测- 防火墙自定义规则
1
2
3# iptables 拒绝 AC 进行 Flash 检测
iptables -I FORWARD -p tcp --sport 80 --tcp-flags ACK ACK -m string --algo bm --string " src=\"http://1.1.1." -j DROP
- 防火墙自定义规则
- 侵入式流量屏蔽(不常用)
- 防火墙自定义规则
1
2
3
4
5
6
7
8# 侵入式流量屏蔽
iptables -I FORWARD -p tcp -m tcp --sport 80 -m u32 --u32 "5&0xFF=0x7F" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8000 -m u32 --u32 "5&0xFF=0x7F" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8080 -m u32 --u32 "5&0xFF=0x7F" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 80 -m u32 --u32 "5&0xFF=0x80" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8000 -m u32 --u32 "5&0xFF=0x80" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8080 -m u32 --u32 "5&0xFF=0x80" -j DROP
- 防火墙自定义规则
- 防火墙自定义规则总结
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42# 防时钟偏移检测
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
# 通过 rkp-ipid 设置 IPID
# 若没有加入rkp-ipid模块,此部分不需要加入
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
#由于本校局域网是A类网,所以我将这一条注释掉了,具体要不要注释结合你所在的校园网
# iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10
# 通过 iptables 修改 TTL 值 数字为需要的修改的ttl值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
# iptables 拒绝 AC 进行 Flash 检测
iptables -I FORWARD -p tcp --sport 80 --tcp-flags ACK ACK -m string --algo bm --string " src=\"http://1.1.1." -j DROP
# 侵入式流量屏蔽
iptables -I FORWARD -p tcp -m tcp --sport 80 -m u32 --u32 "5&0xFF=0x7F" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8000 -m u32 --u32 "5&0xFF=0x7F" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8080 -m u32 --u32 "5&0xFF=0x7F" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 80 -m u32 --u32 "5&0xFF=0x80" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8000 -m u32 --u32 "5&0xFF=0x80" -j DROP
iptables -I FORWARD -p tcp -m tcp --sport 8080 -m u32 --u32 "5&0xFF=0x80" -j DROP
结尾
- 经过长时间测试,发现只需要
UA2F
和TTL
就可以 - 如果你使用
nftables
防火墙规则,具体可以参考以下文章来设置防火墙规则
1 | 键入 cd /etc/nftables.d回车,该文件夹是 nftables 存档部分防火墙规则的文件 |
效果
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果