防火墙工作原理和详解会话表

防火墙工作原理

防火墙工作原理:

本质上是查看会话表。

报文到达防火墙,先查看是否会有会话表匹配。

  1. 如果有会话表匹配,则匹配会话表转发。
  2. 如果没有匹配会话表,看是否能够创建会话表。

前提是必须是首包才能创建会话表。

A.先匹配路由表。B.再匹配安全策略。

首包

TCP: SYN ———首包
​ SYN+ACK
​ ACK

ICMP echo-request—-首包
​ echo-reply

UDP没有首包概念

状态检测机制:

  • 状态尖刺机制开启的情况下,只有首包通过设备才能建立会话表,后续包直接匹配会话表项进行转发。
  • 状态监测机制关闭的情况下,即使首包没有经过防火墙,后续包只要通过防火墙也可以生成会话表项。

开启命令:firewall session link-state check ——-默认就开启

关闭状态检测的命令:undo firewall session link-state check tcp/icmp


首包建立会话——-使用状态检测。

状态检测主要针对TCP和ICMP报文

什么情况需要关闭状态检测:

  1. (场景)来回路径不一致的情况 (SACG)。

详解会话表

查看会话表:

查看会话简要信息

1
2
3
4
5
6
7
8
[FW1]display firewall session table  ---------------查看会话表简要信息
Current Total Sessions : 5
https VPN:public --> public 192.168.0.100:49363-->192.168.0.10:8443
协议 虚拟防火墙有作用 源地址:源端口 目标地址:目标端口
https VPN:public --> public 192.168.0.100:49350-->192.168.0.10:8443
tcp VPN:public --> public 10.1.1.1:49395-->192.168.1.100:17889
ftp-data VPN:public --> public 192.168.1.1:20-->10.1.1.1:49396
ftp VPN:public --> public 10.1.1.1:49393+->192.168.1.1:21

筛选会话:

1
2
3
[FW1]display firewall session table servic ftp ---------筛选会话
Current Total Sessions : 1
ftp VPN:public --> public 10.1.1.1:49393+->192.168.1.1:21

查看会话表详细信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[FW1]display firewall session table  verbose  --------------------查看会话详细信息

ftp/协议 VPN:public --> public/虚拟防火墙有作用 ID: a58f362c468281b1855c0cfa4b /唯一的会话

Zone: trust--> dmz/安全区域 TTL: 00:20:00/ 老化时间 Left: 00:19:02/剩余时间

Output-interface: GigabitEthernet0/0/2 /出接口 NextHop: 192.168.1.1/下一跳 MAC: 00-50-56-9e-ea-06/下一跳MAC
<--packets:0 bytes:0/ 反向流量 -->packets:24 bytes:1180/正向流量


10.1.1.1:49393+->192.168.1.1:21/源地址 源端口 目标地址 目标端口 PolicyName: trust_dmz /匹配策略


+-> ---------代表开启ASPF功能

--> 无意义,正常报文


icmp VPN:public --> public ID: a58f362c6bca01d8e15c0d2721
Zone: trust--> dmz TTL: 00:00:20 Left: 00:00:19
Output-interface: GigabitEthernet0/0/2 NextHop: 192.168.1.1 MAC: 00-50-56-9e-ea-06
<--packets:4 bytes:240 -->packets:4 bytes:240
10.1.1.1:1-->192.168.1.1:2048 PolicyName: trust_dmz


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

详细会话表中有 13项参数。

  1. 协议,指明会话的协议

  2. VPN,在虚拟防火墙中使用

  3. ID,标志唯一的会话

  4. ZONE(区域),指明流量的区域走向。

  5. TTL,会话的老化时间。

  6. Left:会话剩余时间

  7. output-interface:出接口

  8. nextHop:下一跳

  9. MAC:mac地址,

    MAC地址为全0的情况:

    1. 到达防火墙的接口
    2. 虚拟防火墙的MAC也是全0
    3. 当ARP请求失败的时候
  10. 反向流量统计

  11. 正向流量统计

  12. 五元组,源地址:源端口–>目的地址:目的端口

    注意:ICMP的端口计算方法:

    ICMP报文中的Identifier字段16进制转换为10进制,作为源端口

    将Type字段和Code字段的值做与运算,作为目的端口。

    例如:Type=8,Code =0;则目标端口=1000 0000 0000 & 0 = 2048

    ICMP带端口的原因:因为ICMP需要做状态检测,所有需要五元组。ICMP端口无实际意义。

    端口号为0的情况:

    当流量为OSPF,ESP,AH等协议时,端口为0.

  13. PolicyName:匹配的策略名称

老化时间(TTL)的问题:

各协议会话默认老化时间:

协议老化时间 协议
20s icmp
30s dns
120s 2min qq/tftp/l2tp/udp/rip/ntp/snmp/syslog/h323
240s 4min ftp-data/GRE/AH
600s 10min SIP/HTTPS/ESP
1200s 20min HTTP/FTP/Telnet/SMTP/sqlnet/ssh/tcp/pop3/BGP
14400s 4hours sqlnet-data

总结:

TCP 20min SYN 5s SYN+ACK 5s ACK 20Min frist-fin 900s finrst 5s

UDP 2min

ICMP 20s

注意:在网管防火墙流量时,当web在线时,https老化10min,当关闭web时,显示https老化时间10s。

即:HTTPS(有流量)—-10min(TTL)

HTTPS(无流量)—–10s

什么情况会话表会老化:

  1. 老化时间到了
  2. 检测到有病毒的时候,会话表立刻老化,并且加入黑名单
  3. 发送FIN,第一次收到(frist-fin),老化时间变为900s(默认),第二次收到fin(finrst ),老化时间变为10s。

老化时间的修改:

  • 知名协议修改老化时间[FW1]firewall session aging-time service-set http 2000·—-注意单位是S

  • 非知名协议修改时间
    第一步:自定义协议
    ip service-set abc type object
    service 0 protocol 200
    firewall session aging-time service-set abc 200

会话时间存在的问题:

  1. 下载过大的FTP文件,会出现中断。
  2. 访问数据库,操作的时间大于TCP的老化时间。

解决方案:

长会话:默认老化时间168小时。 注意:只针对TCP。

长会话的默认会话时间可以修改。

1
2
3
4
[FW1]display firewall  long-link aging-time  
Long-link aging-time is 168 hours
修改长会话的默认时间
firewall long-link aging-time 20

配置长回话步骤:

  1. 配置ACL定义协议

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

  2. 调用ACL

    interzone trust dmz long-link 3000 inbound


参考资料:华为HedEx文档


坚持原创技术分享,您的支持将鼓励我继续创作!