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连接一旦建立,在通信双方中的任何一方主动关闭连接之前,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状态,完成四次挥手
会话表主要包括哪些信息
从两个方面答:
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老化时间 -------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字段做与运算,得出结果为目的端口
策略名称
匹配具体的策略