ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法
一.概述:
? ?今天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 2000的skinny協議審查取消:
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流量)。
轉載于:https://blog.51cto.com/333234/1199379
總結
以上是生活随笔為你收集整理的ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消极状态集
- 下一篇: SHELL相关的特殊字符总结