ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法

本文涉及的产品
云防火墙,500元 1000GB
简介:

.概述:

   今天QQ收到一位朋友的求助,如下环境,查看了ASA的配置,策略是全通,居然无法访问,也感到困惑。

161635441.jpg

   如是用GNS3搭建环境测试,在防火墙两侧进行抓包,发现TCP三次握手正常,但是位于防火墙内侧客户端发出的http get包却被防火墙丢弃了,用google 输入关键字:ASA tcp 2000搜到如下链接:

http://blog.csdn.net/yangcage/article/details/1787558

http://www.petenetlive.com/KB/Article/0000027.htm

   终于明白:是因为ASA把访问外部http tcp 2000端口的流量当成了skinny协议的流量,而实际是http流量,因为两种协议流量的数据结构肯定不相同,所有当TCP三次握手完成后,后面的http应用的包被丢弃。如是进一步测试,测试分三种情况:

第一种是外部web应用的端口不在默认审查之列,比如TCP 8080

第二种是外部web应用的端口在审查之列,但是实际应用却没有这种流量,比如TCP 2000;

第三种是外部web应用的端口在审查之列,而默认审查的协议又需要开启的情况

二.测试拓扑:

225649869.jpg


三.基本配置:

A.PC1:

IP:10.1.1.8/24,GW:10.1.1.1

B.ASA842防火墙:

interface GigabitEthernet0
nameif Inside
security-level 100
ip address 10.1.1.1 255.255.255.0 
no shut
interface GigabitEthernet1
nameif Outside
security-level 0
ip address 202.100.1.1 255.255.255.0 
no shut

object network Inside-net
subnet 10.1.1.0 255.255.255.0 

nat (Inside,Outside) dynamic interface

C.WebServer:

单网卡设置两个IP:202.100.1.100/24,202.100.1.101/24

上面运行IIS。

四.测试步骤:

A.外部web应用的端口不在默认审查之列,比如8080

这种情况不需要防火墙做额外配置,按照防火墙默认的访问规则,inside的PC1就可以直接通过http://202.100.1.100:8080访问outside的WebServer服务器。

B.外部web应用的端口在默认审查之列,但是实际应用却没有这种流量

比如外部web端口为2000,只需将默认的TCP 2000skinny协议审查取消:

policy-map global_policy

class inspection_default

no inspect skinny

这样Inside的PC1既可以通过http://202.100.1.100:2000访问Outside的WebServer服务器,也可以通过http://202.100.1.101:2000访问Outside的WebServer服务器

C.外部web应用的端口在默认审查之列,实际应用也有这种流量

比如外部web端口为TCP 2000,而实际情况TCP 2000 skinny协议流量也有,因此不能简单把默认的skinny审查干掉完事,

①如下方法不可行

access-list tcp2000web permit tcp  any host 202.100.1.101 eq 2000
class-map tcp2000web_traffic
 match access-list tcp2000web
class-map skinny_traffic
match port tcp eq 2000
policy-map global_policy
class inspection_default
  no inspect skinny
class tcp2000web-traffic
 inspect http 
class skinny-traffic
 inspect skinny

-----------------------------------

ciscoasa# show service-policy 
Global policy: 
 Service-policy: global_policy
   Class-map: inspection_default
     Inspect: dns preset_dns_map, packet 0, drop 0, reset-drop 0
     .................省略部分.......
   Class-map: web2000
     Inspect: http, packet 4, drop 0, reset-drop 0
   Class-map: global_skinny
     Inspect: skinny , packet 4, drop 1, reset-drop 0
              tcp-proxy: bytes in buffer 0, bytes dropped 0
貌似同一条policy-map的前后class-map的执行关系,有点像接口和全局的policy-map的执行关系,如果审查通过,会被后面的执行:我访问的是http包,前面的Class-map: web2000审查通过了,但是后面的Class-map: global_skinny干掉了。

②如下方法可以:

access-list skinny extended deny tcp any host 202.100.1.100 eq 2000 
access-list skinny extended permit tcp any any eq 2000
class-map skinny_traffic
match access-list skinny
policy-map global_policy 
classinspection_default 
 no inspect skinny
class skinny_traffic
 inspect skinny

这时Inside的PC1就可以通过http://202.100.1.100:2000访问Outside的WebServer服务器,但是不能通过http://202.100.1.101:2000(因为认证这个是skinny流量)





本文转自 碧云天 51CTO博客,原文链接:http://blog.51cto.com/333234/1199379,如需转载请自行联系原作者

相关文章
|
17天前
|
SQL 缓存 搜索推荐
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,涵盖从基础架构到性能优化的多个方面。通过分析当前主流后端技术的优缺点,并提供一些实用的解决方案和建议,帮助开发者更好地应对日常开发中的挑战。
33 1
|
7天前
|
Web App开发 JavaScript 前端开发
构建高效Web应用:Node.js与Express框架的深度整合
【9月更文挑战第28天】在现代Web开发领域,Node.js和Express框架的结合已成为打造高性能、易扩展应用的黄金组合。本文将深入探讨如何利用这一技术栈优化Web应用架构,提供具体实践指导,并分析其性能提升的内在机制。通过代码示例,我们将展示从基础搭建到高级功能的实现过程,旨在为开发者提供一条清晰的学习路径,以实现技术升级和项目效率的双重提升。
20 3
ly~
|
9天前
|
存储 监控 小程序
除了 Web 开发,PHP 还可以应用于哪些领域?
PHP 在 Web 开发之外还有多个应用场景:1)命令行脚本,如批量处理文件、数据库管理及系统监控;2)利用 PHP-GTK 等工具开发桌面应用,满足特定业务需求;3)结合微信云开发功能支持微信小程序后端,处理数据存储与用户认证;4)为小型游戏或特定类型游戏开发游戏服务器逻辑;5)在物联网领域作为后端语言处理设备数据交互与分析。
ly~
25 4
|
9天前
|
JavaScript 前端开发 UED
WebSocket在Python Web开发中的革新应用:解锁实时通信的新可能
在快速发展的Web应用领域中,实时通信已成为许多现代应用不可或缺的功能。传统的HTTP请求/响应模式在处理实时数据时显得力不从心,而WebSocket技术的出现,为Python Web开发带来了革命性的变化,它允许服务器与客户端之间建立持久的连接,从而实现了数据的即时传输与交换。本文将通过问题解答的形式,深入探讨WebSocket在Python Web开发中的革新应用及其实现方法。
23 3
|
9天前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
12 1
|
13天前
|
中间件 API 开发者
深入理解Python Web框架:中间件的工作原理与应用策略
在Python Web开发中,中间件位于请求处理的关键位置,提供强大的扩展能力。本文通过问答形式,探讨中间件的工作原理、应用场景及实践策略,并以Flask和Django为例展示具体实现。中间件可以在请求到达视图前或响应返回后执行代码,实现日志记录、权限验证等功能。Flask通过装饰器模拟中间件行为,而Django则提供官方中间件系统,允许在不同阶段扩展功能。合理制定中间件策略能显著提升应用的灵活性和可扩展性。
15 4
|
23天前
|
人工智能 关系型数据库 数据安全/隐私保护
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,通过分析其在数据处理、业务逻辑实现和安全性保障方面的应用,揭示后端技术的核心价值。同时,本文还将讨论当前后端开发面临的主要挑战,如高并发处理、数据安全、微服务架构的复杂性等,并给出相应的解决方案。无论是后端开发者还是对后端技术感兴趣的读者,都可以通过这篇文章获得启发和指导。
|
1月前
|
前端开发 安全 JavaScript
构建高效Web应用:前后端分离架构的实践
【9月更文挑战第4天】在数字时代,Web应用已成为企业与用户互动的主要平台。本文将介绍如何通过前后端分离的架构设计来构建高效的Web应用,探讨该架构的优势,并分享实现过程中的关键步骤和注意事项。文章旨在为开发者提供一种清晰、高效的开发模式,帮助其在快速变化的市场环境中保持竞争力。
|
1月前
|
中间件 编译器 数据处理
在web开发中应用管道过滤器
【9月更文挑战第1天】本文介绍管道-过滤器架构将数据处理流程分解为一系列独立组件,通过管道连接,适用于数据流处理如图像处理、编译器设计等。通过具体实例说明了Gin如何有效支持管道-过滤器风格的设计,构建高性能Web服务。
42 9
|
7天前
|
JSON JavaScript 前端开发
构建高效Web应用:Node.js与Express框架的完美结合
【9月更文挑战第28天】在现代Web开发中,Node.js和Express框架的结合为创建高性能、易扩展的应用提供了强有力的支持。本文将深入探讨如何利用这两种技术构建一个简单但功能强大的Web服务,同时提供代码示例以加深理解。
下一篇
无影云桌面