OpenAppFilter 自定义特征库
来源 https://zhuanlan.zhihu.com/p/419053529
视频 www.bilibili.com/video/BV11z4y1z7tQ/
源码 https://github.com/Lienol/openwrt-OpenAppFilter
参考 https://github.com/Lienol/openwrt-package
应用过滤开源版本支持自定义特征码, 你可以随意添加各种app进行过滤,添加方式也很简单,只需要修改配置文件即可,配置菜单会自动生成,不需要修改任何代码。
准备工作
这里介绍高级教程,如果你是新手,直接修改特征库文件后通过web页面上传即可
- 一台刷了OpenWrt应用过滤固件的路由器
- 下载安装winscp客户端(用于下载和更新特征库文件)
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。
下载地址
https://winscp.net/eng/download.php
3. 下载安装ssh客户端(如xshell、putty等,新手可以忽略)
ssh工具用于连接openwrt路由器进行命令行操作,如果不会命令行,也可以不用ssh工具,用命令行操作的目的是更新特征库后系统不重启生效。
下载特征库
打开winscp工具,新建一个连接,配置如下图所示
登录信息就是web页面登录的用户名密码
连接成功后会显示路由器中的文件列表
可以在界面中切换目录,我们需要进入/etc/appfilter/目录
可以看到该目录下有feature.cfg文件,该文件就是特征库文件,可以右键点击下载到本地电脑的目录
特征库格式说明
修改特征库是最重要的环节,我们需要熟悉特征库文件的配置结构
特征码格式:
- 特殊格式
#class 标记一个分类,分类名称已经固定,不要自己添加
#开头表示注释,不会解析成特征码
- 单个app特征码格式:
id name:[proto;sport;dport;host url;request;dict]
特征库文件中的app名称是和web页面一一对应的,修改了特征库文件,对应web页面也会同步修改,只需要修改配置文件就可以增加一个app过滤规则,方便自定义。
上面介绍了特征码的结构,特征码有很多种配置方式,比如基于端口、基于协议、基于内容、基于url等。
修改实例
考虑到大部分人不知道抓包分析,对于高级点的特征码无法捕获,这里介绍如何添加一条url特征码,类似于url过滤,因为大部分视频类的app是可以通过url进行过滤掉的。
如新华网域名为http://www.xinhuanet.com 那么我们可以添加http://xinhuanet.com到特征库,当然也可以添加www.xinhuanet.com, 支持模糊匹配,注意http和https不能加入特征码。
最终特征码可以这样写:
8077 新华网:[tcp;;;xinhuanet.com;;]
当然也可以增加一个端口号
8077 新华网:[tcp;;443;xinhuanet.com;;]
我们将它添加到常用网址类目中,在添加前配置如下:
添加后如下:
添加完成后保存文件
注意这里文件还是保存到电脑本地,还需要上传到路由器才行
我们通过winscp点击本地文件点击上传即可。
上传成功后特征库还没有生效,需要重新让模块读取特征库。
这里有两种方式:
- 直接重启路由器(适合不会用ssh命令的用户)
- 通过ssh客户端命令行操作重启服务
重启成功后打开web页面可以看到新添加的特征库已经在配置菜单中,可以直接勾选进行过滤了,如果过滤存在问题表示特征码填写错误。
如何通过命令行重启服务(适合高级用户)
- ssh进入路由器后台
- 卸载应用过滤内核模块
- 删除/tmp/appfilter目录,该目录中存放的文件用于页面显示app配置
rm /etc/appfilter -fr
rmmod oaf
- 重启应用过滤服务,重新加载新的特征库
/etc/init.d/appfilter restart
============= End