TCP的三次握手

三次握手建立连接
a) 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认
b) 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RCVD(received)状态
c) 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入established(已建立的)状态,完成三次握手
TCP三次握手过程和防火墙会话表解析(HCIE-Security面试考试必会题型之三)_第1张图片
传输数据过程
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去

TCP四次挥手

四次挥手建立连接
a) 第一次挥手:client发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态
b) 第二次挥手:server收到FIN后,发送一个ACK给client,确认序列号为收到序列号+1,server进入CLOSE_WAIT
c) 第三次挥手:server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态
d) 第四次挥手:client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,确认序列号为收到序列号+1,server进入CLOSED状态,完成四次挥手
TCP三次握手过程和防火墙会话表解析(HCIE-Security面试考试必会题型之三)_第2张图片

会话表主要包括哪些信息

从两个方面答:
1.会话表中记录的信息很多,但一般是根据七个关键元素(源IP地址、源端口、目的IP地址、目的端口、协议号、应用、用户)来判断一个报文是否和一条会话表项匹配。这七个关键元素又被称为七元组
2.配置了虚拟系统,会结合七元组和***实例号一共八个元素来判断报文是否和会话表项匹配
3.剩余的元素 还包括源目虚拟墙、源目区域、生存周期、剩余时间、出接口、下一跳IP/MAC、报文方向/字节数统计、用户名和策略名

查看防火墙简要信息

display firewall session table 
11:04:27  2019/06/22
 Current Total Sessions : 4
  ftp-data  ***:public --> public 192.168.1.1:20-->10.1.1.1:50950
   协议       根墙到根墙            源IP  源端口   目的IP 目标端口
  https  ***:public --> public 192.168.0.123:50948-->192.168.0.10:8443
  ftp  ***:public --> public 10.1.1.1:50949+->192.168.1.1:21
  ftp-data  ***:public --> public 192.168.1.1:20-->10.1.1.1:50951

根据条件筛选需要会话

[FW1]display firewall session table service  ftp   
10:25:15  2019/10/27
 Current Total Sessions : 1
  ftp  ***:public --> public 10.1.1.1:49860+->192.168.1.1:21  

五元组: 源目地址 源目端口 协议
注意: 华为防火墙可以记录穿越自己防火墙和到达防火墙的会话
查看会话表详细信息

display firewall session table verbose 

  ftp   ***:public --> public    ID: a58f362d7ae481cb4c5d0e0b35
 协议  针对虚拟防火墙                 唯一
  Zone: trust--> dmz  TTL: 00:20:00  Left: 00:19:55  
   安全区域           老化时间           剩余时间
  Output-interface: GigabitEthernet0/0/2  NextHop: 192.168.1.1  MAC: 00-50-56-9e-ea-06
        出接口                              下一跳               下一跳MAC
  <--packets:26 bytes:1881   -->packets:24 bytes:1176
  反向流量  包     字节          正向流量  包    字节
  10.1.1.1:50949+->192.168.1.1:21          PolicyName: any_dmz 
   源地址  源端口       目标地址  目标端口        安全策略

详解会话表中的每一个字段

ftp:协议

***:没有虚拟系统的情况下,public到public 指根墙到根墙

ID:是唯一标识此次会话,当老化时间超时后,这个ID是会变化的

Zone 安全区域

TTL 生存时间

老化时间

[FW1]display  firewall  session  aging-time   
10:40:24  2019/10/27
Sequence  Pre-defined                     ***                  Timeout(s)
----------------------------------------------------------------------
1         http                            Public              1200      
2         telnet                          Public              1200      
3         ftp                             Public              1200      
4         ras                             Public              1200      
5         dns                             Public               30        
6         rtsp                            Public               1200      
7         ils                             Public               1200    
…………  

TCP三次握手过程和防火墙会话表解析(HCIE-Security面试考试必会题型之三)_第3张图片
TCP三次握手过程和防火墙会话表解析(HCIE-Security面试考试必会题型之三)_第4张图片
TCP三次握手过程和防火墙会话表解析(HCIE-Security面试考试必会题型之三)_第5张图片
TCP三次握手过程和防火墙会话表解析(HCIE-Security面试考试必会题型之三)_第6张图片
系统一些知名协议的TTL数值总结:

TCP老化时间 -------1200S
UDP老化时间-------120S 
ICMP---------------20S 
SYN ---------------5S 
SYN+ACK---------5s
ACK---------------20min

总结时间(参考)
注意:TCP半开连接等待ACK老化时间默认是30-120S
可以对知名协议修改其老化时间 也可以自定义老化时间

ip service-set Test type object
 service 0 protocol 20

 firewall session aging-time service-set Test 1000 

检查

[FW1]display firewall  session  aging-time 
10:53:57  2019/10/27
Sequence  user-defined                    ***                         Timeout(s)
--------------------------------------------------------------------------------
1         Test                            Public                          1000  
--------------------------------------------------------------------------------
Sequence  Pre-defined                     ***                  Timeout(s)
----------------------------------------------------------------------
1         http                            Public               200       
2         telnet                          Public               1200      
3         ftp                             Public               1200   

修改预定义的老化时间

 firewall session aging-time service-set http 200           ---本来是1200s的

[FW1]display firewall  session  aging-time 
Sequence  Pre-defined                     ***                  Timeout(s)
----------------------------------------------------------------------
1         http                            Public               200    

会话表在什么情况下老化?

1) 没有流量通过,老化时间到了
2) 防火墙检测有病毒,会话表立刻老化且加入黑名单
3) TCP会话收到FIN/RST报文后的会话老化
TCP连接建立成功后
NGFW收到第一个FIN报文,将会话老化时间设置为900秒(默认时间)
收到第二个FIN/RST报文后,NGFW将会话老化时间设置为10秒(默认时间)
修改的老化时间不够
1) FTP长时间下载 用户通过FTP下载大文件,需要间隔很长时间才会在控制通道继续发送控制报文。
2) 数据库操作 用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于TCP的会话老化时间。
 在长连接功能中,可以通过ACL来指定流量,为这些特殊流量设定超长的老化时间。目前仅支持对TCP协议配置长连接
解决方案;
长会话:默认会话时间

[FW1]display firewall   long-link  aging-time  
11:56:57  2019/06/22
 Long-link aging-time is 168 hours(默认7*24)

可以修改

 firewall long-link aging-time 200   ---200个小时

检查:

[FW1]display firewall long-link  aging-time 
11:59:54  2019/06/22
 Long-link aging-time is 200 hours

针对某一个应用,写高级ACL匹配

定义长会话配置

第一步:使用ACL匹配

acl number 3000
 rule 5 permit tcp source 10.1.1.0 0.0.0.255 source-port eq www destination 192.168.1.0 0.0.0.255 destination-port eq www 

第二步:调用

firewall interzone trust dmz              
 long-link 3000 inbound 

第三步:修改长会话时间

 firewall long-link aging-time 1000

出接口 查路由表

NEXT-HOP

下一跳
a) 正常的下一跳
b) 127.0.0.1 防火墙自身的流量

MAC地址全0情况

MAC: 00-00-00-00-00-00
a) 当目的IP为防火墙上的接口地址时,下一跳IP为127.0.0.1,MAC为全0
b) 转发到虚拟墙里的报文,下一跳MAC为全0
c) ARP请求失败时,下一跳IP的MAC为全0
d) 非全0 查看ARP表

流量问题

a) 正向报文和反向报文
b) 排错使用,判定是否去往目标,以及能不能回到源地址
c) ---> ---< 为0 0

源地址   源端口     +->/-->      目的地址  目的端口          策略名称
+->  ------ 代表开启ASPF功能 
--> --------正常的

--> 与 +->区别

a) ----正常,没有任何意义
b) +-> -----证明ASPF功能开启

display firewall session table verbose 
14:24:39  2019/06/22
 Current Total Sessions : 2
  icmp  ***:public --> public  ID: a48f362da6e88d5125d0e3a21
  Zone: trust--> untrust  TTL: 00:00:20  Left: 00:00:18  
  Output-interface: GigabitEthernet0/0/3  NextHop: 202.100.1.254  MAC: 48-d5-39-d7-56-40
  <--packets:4 bytes:240   -->packets:4 bytes:240
  10.1.1.1:1-->202.100.1.254:2048 PolicyName: permit_trust_untrust 

ICMP协议为啥有端口

  icmp    
  10.1.1.1  :1-->192.168.1.1  :2048    
             源端口          目的端口

ICMP有端口?为什么防火墙会话表里面有?
a) 源端口---ICMP报文中的ID字段十六进制变成二进制再转化为十进制,对应值就是源端口
b) 目的端口---ICMP报文中的Type与Code字段做与运算,得出结果为目的端口

策略名称

匹配具体的策略