1 概述
应用特征识别特性是将不同软件的特征进行归纳分析形成特征库文件,利用抽象化的特征库文件对相关应用软件进行特征的检测识别,然后根据定义的相关规则对识别后的应用软件采取相应的允许通过,丢弃,记录日志及QOS联动等动作以实现对应用软件的管理。另外应用识别特性还为后续扩展提供了接口,便于后续多模块之间整合及联动。
2 基本原理应用特征识别特性也是典型的多核双平面实现,控制平面实现应用特征识别的配置下发及删除等操作,在数据平面实现应用特征的识别及对识别应用的的相关处理。
下面图1详细描述了应用特征识别在VSP框架中的处理流程:
? 系统初始化时,会将名称为APPIDENTIFY的Target数据结构注册到系统链表上;
? 当用户需要配置时,下发一条诸如pcp c1 apply appidentify 这样一条策略;
? 策略下发后,会在系统链表中查找名称为APPIDENTIFY的Target,找到后,会依次执行结构中初始化函数,配置解析函数,再将Target结构与规则树关联;
? 当第一个报文到达,符合pcp策略后,会根据优先级依次调用与规则关联的业务,会进入应用特征识别慢转处理函数中去;
? 在慢转函数中,进行报文检测,并创建快转Target,挂接到相应Session上;
? 后续报文到达时,找到相应的Session,调用挂接在Session上的应用特征识别快转Target进行处理。
图 1 应用特征识别在vsp中的实现
具体的应用特征识别模块内部处理流程如下图2:
图2 应用特征识别模块内部处理流程如下
? 系统启动时,配置文件配置检测引擎。
? 符合配置的报文到达应用特征识别模块后,通过移植的检测引擎,检测该报文是否符合应用软件特征。
? 应用特征识别策略配置针对报文检测结果的报文处理方式,包括记录日志、通过、丢弃、打QOS标记、打应用识别标记等。
? 通过检测后,针对检测的结果,根据配置好的处理方式对报文做处理。
从上面的处理流程来看应用特征识别利用PCP做包分类,利用session模块完成状态检测及快速转发处理,利用检测引擎完成报文的检测识别,然后根据配置的处理规则进行相应的处理。
3 典型应用对于企业用户来说,针对一些带宽资源消耗较大的软件(如P2P视频,P2P下载,即时通信,网游及金融股票等软件)需要进行使用控制,便提出了这样的需求,GUARD设备可以正确识别这些常见的应用软件,然后可以根据用户的需要对这些软件进行限速,禁用等相关操作。以便节省网络资源,便于用户按需动态进行应用软件的控制。
典型应用如下图所示,处于私网的用户通过KingGuard网关设备跟Internet连接,网管便可以在KingGuard设备上通过配置应用特征识别特性对特定的内网用户进行应用软件的识别和限制,限制规则包括允许,禁止,或通过跟QOS模块联动而实现限速等。并且提供丰富的特征识别日志及统计功能,这样也便于网管对用户的相关操作,网络的运行情况进行控制,使网络能更好的服务于大众。
3.1 典型组网和配置组网示意图如下所示:
组网说明:设备可以工作在多种模式下,常见的使透明模式及路由模式。透明模式下私网用户直接使用公网地址与外界通信,路由模式下私网用户通过在设备出口做NAT实现与外部的通信。
命令行下以透明模式为例KingGuard防火墙设备应用特征识别典型配置:
1.配置接口IP地址:
其中,Ge0/0/0接口是互联网出口, Ge0/0/1是私网的网关接口。
KingGuard(config)# int Bridge 0
KingGuard(config-if-Bridge0)# bind interface Ge 0/0/0
KingGuard(config-if-Bridge0)# bind interface Ge 0/0/1
2.配置PCP规则
配置源地址为114.255.20.141/192的PCP过滤规则。
KingGuard(config)#pcp private_net_1 source-ip net 114.255.20.0 255.255.255.192
KingGuard(config)#filter pcp private_net_1 accept on
3.配置应用识别策略
在KingGuard上配置应用特征识别:
首先创建一个应用识别策略(每一个新建策略必须继承一个现有的策略),每一中应用识别都有一个appid唯一标识:
KingGuard(config)#appidentify policy app_policy inherit template
使能FTP(appid=1)协议的应用识别功能:
KingGuard(config-appidentify-app_policy)#appid 1 enable
开启FTP协议的应用识别日志:
KingGuard(config-appidentify-app_policy)#appid 1 log
配置识别FTP协议后的动作为通过:
KingGuard(config-appidentify-app_policy)#appid 1 pass
配置识别FTP协议后的动作为禁止:
KingGuard(config-appidentify-app_policy)#appid 1 block
配置应用识别为FTP协议打标记:
KingGuard(config-appidentify-app_policy)#appid 1 qos-control
配置为FTP协议打应用识别标记:
KingGuard(config-appidentify-app_policy)#appid 1 app-control
4. 配置应用识别规则
配置应用识别规则前,必须提前配置应用特征识别策略及PCP包分类:
KingGuard(config)#appidentify pcp private_net_1 apply policy app_policy qos-tag 100
5.将应用特征识别跟QOS进行联动
KingGuard(config)#qos traffic-monitor aaa qos-tag 100 cir 10 cbs 20 ebs 10
KingGuard(config-if-Ge0/0/2)#select qos traffic-monitor aaa inbound