天天看点

OpenAppFilter 自定义特征库

OpenAppFilter 自定义特征库

来源 https://zhuanlan.zhihu.com/p/419053529

视频 www.bilibili.com/video/BV11z4y1z7tQ/

源码 https://github.com/Lienol/openwrt-OpenAppFilter

参考 https://github.com/liuran001/openwrt-packages

应用过滤开源版本支持自定义特征码, 你可以随意添加各种app进行过滤,添加方式也很简单,只需要修改配置文件即可,配置菜单会自动生成,不需要修改任何代码。

OpenAppFilter 自定义特征库

准备工作

这里介绍高级教程,如果你是新手,直接修改特征库文件后通过web页面上传即可
  1. 一台刷了OpenWrt应用过滤固件的路由器
  2. 下载安装winscp客户端(用于下载和更新特征库文件)

WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。

下载地址

https://winscp.net/eng/download.php

3. 下载安装ssh客户端(如xshell、putty等,新手可以忽略)

ssh工具用于连接openwrt路由器进行命令行操作,如果不会命令行,也可以不用ssh工具,用命令行操作的目的是更新特征库后系统不重启生效。

下载特征库

打开winscp工具,新建一个连接,配置如下图所示

OpenAppFilter 自定义特征库

登录信息就是web页面登录的用户名密码

连接成功后会显示路由器中的文件列表

可以在界面中切换目录,我们需要进入/etc/appfilter/目录

OpenAppFilter 自定义特征库

可以看到该目录下有feature.cfg文件,该文件就是特征库文件,可以右键点击下载到本地电脑的目录

特征库格式说明

修改特征库是最重要的环节,我们需要熟悉特征库文件的配置结构

特征码格式:

  • 特殊格式

#class 标记一个分类,分类名称已经固定,不要自己添加

#开头表示注释,不会解析成特征码

  • 单个app特征码格式:
id name:[proto;sport;dport;host url;request;dict]
           
OpenAppFilter 自定义特征库

特征库文件中的app名称是和web页面一一对应的,修改了特征库文件,对应web页面也会同步修改,只需要修改配置文件就可以增加一个app过滤规则,方便自定义。

OpenAppFilter 自定义特征库

上面介绍了特征码的结构,特征码有很多种配置方式,比如基于端口、基于协议、基于内容、基于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;;]           

我们将它添加到常用网址类目中,在添加前配置如下:

OpenAppFilter 自定义特征库

添加后如下:

OpenAppFilter 自定义特征库

添加完成后保存文件

注意这里文件还是保存到电脑本地,还需要上传到路由器才行

我们通过winscp点击本地文件点击上传即可。

上传成功后特征库还没有生效,需要重新让模块读取特征库。

这里有两种方式:

  1. 直接重启路由器(适合不会用ssh命令的用户)
  2. 通过ssh客户端命令行操作重启服务

重启成功后打开web页面可以看到新添加的特征库已经在配置菜单中,可以直接勾选进行过滤了,如果过滤存在问题表示特征码填写错误。

OpenAppFilter 自定义特征库

如何通过命令行重启服务(适合高级用户)

  1. ssh进入路由器后台
  2. 卸载应用过滤内核模块
  3. 删除/tmp/appfilter目录,该目录中存放的文件用于页面显示app配置

rm /etc/appfilter -fr

rmmod oaf

  1. 重启应用过滤服务,重新加载新的特征库

/etc/init.d/appfilter restart

OpenAppFilter 自定义特征库

============= End