热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

.概述:

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

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

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

二.测试拓扑:

ASA防火墙外部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流量)


推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 基于Axis、XFire、CXF的webservice客户端调用示例
    本文介绍了如何使用Axis、XFire、CXF等工具来实现webservice客户端的调用,以及提供了使用Java代码进行调用的示例。示例代码中设置了服务接口类、地址,并调用了sayHello方法。 ... [详细]
author-avatar
ACHEn大魔王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有