ASPF

ASPF(Application Specific Packet Filter)是针对应用层的包过滤,其原理是检测通过设备的报文的应用层协议信息,记录临时协商的数据连接,使得某些在安全策略中没有明确定义要放行的报文也能够得到正常转发。

通过以下实验说明,ASFP:

FTP客户端经过防火墙访问FTP服务器

配置完成后,尝试登陆FTP服务器,可以正常登陆,但是不能够正常进行数据连接。

查看会话状态:

已经成功建立session会话。

FTP协议是一个典型的多通道协议,在其工作过程中,FTP Client和FTP Server之间将会建立两条连接:控制连接和数据连接。控制连接用来传输FTP指令和参数,其中就包括建立数据连接所需要的信息;数据连接用来获取目录及传输数据。数据连接使用的端口号是在控制连接中临时协商的。

根据数据连接的发起方式FTP协议分为两种工作模式:主动模式(PORT模式)和被动模式(PASV模式)。主动模式中,FTP Server主动向FTP Client发起数据连接;被动模式中,FTP Server被动接收FTP Client发起的数据连接。

FTP主动模式:

1.     FTP客户端向FTP服务器的21端口发起连接建立控制通道

2.     客户端通过PORT命令协商客户端使用的数据传输端口号。

3.     协商成功后,服务器主动向客户端的这个端口号发起数据连接。 而且每次数据传输都会协商不同的端口号。

服务器向客户端发起数据连接的源/目的端口号分别是20和临时协商的端口号yyyy,显然不是这条连接的后续报文,无法命中此会话转发。因此会出现可以验证用户密码,但是无法获取目录列表的现象。

可以新增策略,放行服务器到客户端方向的安全策略,但是这样必须开放客户端的所有端口有安全隐患。

别急,万能的防火墙都能实现。这就是本期要出场的神秘人物ASPF(Application Specific Packet Filter)。ASPF是针对应用层的包过滤,其原理是检测通过设备的报文的应用层协议信息,记录临时协商的数据连接,使得某些在安全策略中没有明确定义要放行的报文也能够得到正常转发。

记录临时协商的数据连接的表项称为Server-map表1,这相当于在防火墙上开通了“隐形通道”,使得像FTP这样的特殊应用的报文可以正常转发。当然这个通道不是随意开的,是防火墙分析了报文的应用层信息之后,提前预测到后面报文的行为方式,所以才打开了这样的一个通道。

Server-map表在防火墙转发中非常重要,不只是ASPF会生成,NAT Server、SLB等特性也会生成Server-map表,后续在其他帖子中强叔还会提及。

只需要在域间配置增加detect ftp即可

此时查看Server-map,可以看到已经自动生成了维护FTP数据连接的表项:

Server-map表中记录了FTP服务器向FTP客户端的2071端口号发起的数据连接,服务器向客户端发起数据连接时将匹配这个Server-map表转发,而无需再配置反向安全策略。

数据连接的第一个报文匹配Server-map表转发后,防火墙将生成这条数据连接的会话,该数据连接的后续报文匹配会话表转发,不再需要重新匹配Server-map表项。

正常访问,防火墙session状态:

Server-map表项由于一直没有报文匹配,经过一定老化时间后就会被删除。这种机制保证了Server-map表项这种较为宽松的通道能够及时被删除,保证了网络的安全性。当后续发起新的数据连接时会重新触发建立Server-map表项。

配置了ASPF可以生成动态维护临时协商的数据连接的表项,既简化了安全策略的配置又确保了安全性

被动模式下的流程:

ASPF, 1.1.1.1 -> 2.2.2.2:zzzz[any], Zone: ---

Protocol: tcp(Appro: ftp-data), Left-Time: 00:00:30, Addr-Pool: ---

VPN: public -> public

配置实例

USG6000V1:

#

ip vpn-instance default

ipv4-family

#

#内网Trust Zone接口

#

interface GigabitEthernet0/0/0

undo shutdown

ip binding vpn-instance default

ip address 192.168.1.1 255.255.255.0

#外网Untrust  Zone接口

#

interface GigabitEthernet1/0/1

undo shutdown

ip binding vpn-instance default

ip address 10.1.1.1 255.255.255.0

#

#安全级别,与接口配置

#

firewall zone local

set priority 100

#

firewall zone trust

set priority 85

add interface GigabitEthernet0/0/0

#

firewall zone untrust

set priority 5

add interface GigabitEthernet1/0/1

#

#Nat地址指向Null0避免环路

#

ip route-static vpn-instance default 10.1.1.10 255.255.255.255 NULL0

ip route-static vpn-instance default 10.1.1.11 255.255.255.255 NULL0

ip route-static vpn-instance default 10.1.1.12 255.255.255.255 NULL0

ip route-static vpn-instance default 10.1.1.13 255.255.255.255 NULL0

ip route-static vpn-instance default 10.1.1.14 255.255.255.255 NULL0

ip route-static vpn-instance default 10.1.1.15 255.255.255.255 NULL0

#

#Nat地址池

#

nat address-group nat-pool1 0

mode pat

section 10 10.1.1.10 10.1.1.15

#

#需要映射的源地址set。通过address-set 或者service-set方式,修改时直接修改set信息即可。

#

ip address-set saddr_192.168.1.0/24 type object

address 192.168.1.0 0.0.0.255

#

#ASPF 监控ftp

#

firewall interzone trust untrust

detect ftp

#

#安全策略

#

#放开client访问ftp的21端口(需要detect ftp,不然ftp不能正常通信)

security-policy

rule name ftp

source-zone trust

destination-zone untrust

source-address 192.168.1.0 24

service ftp

action permit

#放开防火墙自身ping所有zone的权限,用于连通性测试

rule name icmp

source-zone local

source-zone trust

service icmp

action permit

#

#Nat策略,

#

nat-policy

rule name policy_nat1

source-zone trust

destination-zone untrust

source-address address-set saddr_192.168.1.0/24

action nat address-group nat-pool1

#

ASPF(Application Specific Packet Filter)的更多相关文章

  1. Introduction of Servlet Filter(了解Servlet之Filter)

    API文档中介绍了public Interface Filter(公共接口过滤器) Servlet API文档中是这样介绍的: ‘A filter is an object that performs ...

  2. 【面试突击】-缓存击穿(布隆过滤器 Bloom Filter)

    原文地址:https://blog.csdn.net/fouy_yun/article/details/81075432 前面的文章介绍了缓存的分类和使用的场景.通常情况下,缓存是加速系统响应的一种途 ...

  3. 粒子滤波(PF:Particle Filter)

    先介绍概念:来自百科 粒子滤波指:通过寻找一组在状态空间中传播的随机样本来近似的表示概率密度函数,再用样本均值代替积分运算,进而获得系统状态的最小方差估计的过程,波动最小,这些样本被形象的称为&quo ...

  4. 安卓操作系统版本(Version)与应用程序编程接口等级(Application Programming Interface Level)对照表

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑. 使用Android API,可以在Java环境开发App,编译.打包后可在Android系统 ...

  5. 《计算机网络课程设计》基本操作(基于Cisco Packet Tracer)

    第一次课 Router> #用户模式 Router# #特权模式 lhx(config)# #全局配置模式 Router>enable #进入特权模式 Router#configure t ...

  6. Python学习:函数式编程(lambda, map() ,reduce() ,filter())

    1. lambda: Python 支持用lambda对简单的功能定义“行内函数” 2.map() : 3.reduce() : 4.filter() : map() ,reduce() , filt ...

  7. vue 过滤器filters的使用以及常见报错小坑(Failed to resolve filter)

    今天使用vue 过滤器中发现一个小坑,网上查到的大都是不正确的解决方法,故分享给大家: 原错误代码: // 过滤器 filter:{ FdishList:function(value){ if (!v ...

  8. 拦截器(Interceptor)与过滤器(Filter)的区别

    转自:https://www.jianshu.com/p/cf088baa9b04 过滤器,是在java web中将你传入的request.response提前过滤掉一些信息,或者提前设置一些参数.然 ...

  9. Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)(略有修改)

    对应项目的代码地址为:https://github.com/liuxiaoming7708/springboot-dubbo-parent Dubbo与Zookeeper.SpringMVC整合和使用 ...

随机推荐

  1. js和jquery获取属性的区别

    一.获取元素: js获取元素: 根据id获取:document.getElementById("id"); 根据类名获取:document.getElementsByClassNa ...

  2. Oracle 第三方管理工具整理

    Oracle 第三方管理工具整理 1.OB(SI Object Browser) 官方网址: http://www.ctdw.com.cn说明:小软件大功能,个人最爱它的数据库导入.导出功能,一键导入 ...

  3. python全栈开发学习_day2_语言种类及变量

    一.编程语言的分类及python相对其他语言的优势 1)三大语言种类及细分 1.机器语言(低级语言):直接用计算能够理解的二进制进行编写,直接控制计算机硬件. 优点:执行效率高. 缺点:开发效率低,跨 ...

  4. 2019.4.18 HTML + CSS相关整理

    目录 标签 块标签 行标签 行块转化 嵌套规则 css引入方式 行间样式 内部引入 外部引入 选择器 基础选择器 组合选择器 盒模型 css样式 字体属性 设置字体的大小 设置字体的粗细 设置字体的风 ...

  5. Windows下代替自带cmd的开源软件cmder

    cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令 下载 Cmder官网 下载的时候,会有两个版本,分别是mini与 ...

  6. hey-cli初使用

    当前项目负责人打算用hey-cli ,初步接触了hey-cli 是一款比vue-cli使用还要简单的脚手架 1. 先全局安装hey-cli    npm install -g hey-cli 2. 初 ...

  7. Angular  CLI

    简介 ng  官方命令行 Angular  CLI 自己的官方文档 https://github.com/angular/angular-cli/wiki/new 常用代码   临时代码 ng new ...

  8. Python调用C++DLL函数出错String类型问题

    调用c++ 函数原型如下,一直失败,请个日志断点发现 参数未能正确解析. int EXPORT init_ner(string cfg_path); typedef int (*Proc_init_n ...

  9. document.frames与window.frames在不同浏览器中的使用

    问题: document.frames 只有 IE Opera 支持.等同于 window.frames.用来取得当前页面内 window 对象的集合. 在 Firefox Chorome Safar ...

  10. 解决ajax请求返回Json无法解析"\"字符的问题

    原因:获取身份证信息,涉及图片路径,存在“\”字符,导致Json解析错误 解决思路:将返回类型从"json"改成"text",此时返回的数据类型变成字符串,将字 ...