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

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

.概述:

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

   如是用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应用的端口在审查之列,而默认审查的协议又需要开启的情况

二.测试拓扑:


三.基本配置:

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,如需转载请自行联系原作者

相关文章
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
100 3
|
4天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
27 3
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
152 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
1月前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
|
1月前
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
26 3
|
2月前
|
Linux Windows
端口占用的解决方法
本文介绍了在Windows和Linux系统中解决端口占用问题的方法,包括使用`netstat`命令查看端口占用情况、`tasklist`命令查找对应进程,以及使用`taskkill`命令终止进程,在Linux系统中则使用`netstat`或`lsof`命令查找占用端口的进程,并用`kill`命令结束进程。
|
3月前
|
网络协议
Web基础与HTTP协议
【8月更文挑战第10天】
40 2
|
3月前
|
监控 安全 网络安全
|
3月前
|
网络安全 C++
【Azure Developer】Visual Studio 2019中如何修改.Net Core应用通过IIS Express Host的应用端口(SSL/非SSL)
【Azure Developer】Visual Studio 2019中如何修改.Net Core应用通过IIS Express Host的应用端口(SSL/非SSL)
|
3月前
|
开发框架 前端开发 .NET
【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题

热门文章

最新文章