一、实验拓扑:
15-思科防火墙:TCP状态化旁路_第1张图片
二、实验要求:
默认情况Outside流量放行(TCP、UDP流量),Inside流量全部被干掉。为什么能通呢?因为流量从同一个ASA出去,再从同一个ASA回来。
现在R1、R2分别有默认路由,所以发包、回包的路由条目是没问题的。
既然这样,R1的默认路由可以直接指向R2,这样的话:数据流量就会出现问题。因为出去的时候,流量经过ASA,回包的时候因为一些问题,没有经过ASA就直接到了Inside,这个就叫做默认路由。这种情况默认是通不了的,那是为什么呢?
原因:出去时候流量肯定能出去,因为是Outside流量;回包的时候流量也能回来,因为有别的路由协议,但是R2是否接收回包流量呢?一定不接收的。因为TCP有序列号的问题,经过ASA时候,出于安全考虑,TCP序列号被扰乱了。TCP扰乱的好处是什么呢?
比如有×××想×××主机R2:首先主机R1先和ASA建立TCP邻居关系,然后ASA再模拟成外部主机和R2建立邻居关系。R1建立关系时,TCP序列号可能是从1开始的,但是ASA和R2建立关系时,序列号是从10000开始的,两者之间间隔非常大。
×××模拟主机R1的IP地址,并利用无辜ARP重新和ASA建立映射关系(改掉ASA绑定的R1对应的MAC地址),×××有能力猜测到TCP的序列号,但是对于×××来讲他不是和ASA建关系,他是和R2建立关系,即使猜测到TCP的序列号,仅仅是ASA和R1之间的序列号,和R2上10000左右的序列号是不一样的。
所以TCP序列号扰乱能够有效的防止×××模拟成R1和R2建立TCP的连接。
回到最开始,解决TCP序列号扰乱问题的方法:做Bypass,叫做TCP旁路。Bypass怎么做到的呢?就是允许TCP的序列号这些信息经过ASA时候,不更改它的序列号信息,不进行扰乱了。但是不推荐做Bypass,做了以后ASA就不是防火墙了,就是一个路由器。
1、R1、R2增加一条线,网段地址为:12.1.1.X/24;
2、删除R1指向ASA下一跳的默认路由;换成下一跳为12.1.1.2的默认路由;(ASA和R1之间没有路由条目,为什么ASA会转发R2的流量???)
3、这时候R2 Telnet R1,可以看到不通了;分别在10.1.1.X\12.1.1.X线路抓包,查看序列号是否一样;(也就是出包和回包序列号一样的,TCP序列号相同肯定建立不了邻居关系的)
4、ASA部署Bypass技术,使得ASA不更改TCP的序列号,实现R2可以远程登录R1。
三、命令部署:
1、R1、R2、ASA部署旁路基本配置:
R1(config)#int f0/1
R1(config-if)#no shutdown
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config)#no ip route 0.0.0.0 0.0.0.0 202.100.1.10
R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

R2(config)#int f0/1
R2(config-if)#no shutdown
R2(config-if)#ip add 12.1.1.2 255.255.255.0

ASA(config)# route outside 0 0 202.100.1.1

2、ASA应用ACL抓取R2到R1的Telnet流量:
ASA(config)# access-list tel extended permit tcp host 10.1.1.2 host 202.100.1.1 eq 23

3、ASA部署Class-map、Policy-map、Service-policy(在Inside接口应用):
ASA(config)# class-map abc
ASA(config-cmap)# match access-list tel
ASA(config-cmap)# policy-map def
ASA(config-pmap)# class abc
ASA(config-pmap-c)# set connection advanced-options tcp-state-bypass
ASA(config-pmap-c)# service-policy def interface inside

四、验证:
1、R1、R2部署旁路基本配置后,R2 Telnet R1在出包和回包线路分别抓包;同时R1开启Debug:
R1#debug ip tcp packet
TCP Packet debugging is on
R1#
*Mar 1 00:52:04.435: TCP0: bad seg from 10.1.1.2 -- bad sequence number: port 23 seq 4134140620 ack 3263652077 rcvnxt 3768197322 rcvwnd 4128 len 0
错误提示:错误的序列号
R2出包抓包结果:
15-思科防火墙:TCP状态化旁路_第2张图片
R1回包抓包结果:
15-思科防火墙:TCP状态化旁路_第3张图片
结论:序列号出包和回包都是0,序列号一样没法建立TCP邻居关系。
2、ASA部署完Bypass以后效果:
R2#telnet 202.100.1.1
Trying 202.100.1.1 ... Open
User Access Verification
Username: aa
Password:
R1>