「Network Telemetry」- 网络遥测技术

问题描述
随着网络的普及和新技术的涌现,网络规模日益增大,部署的复杂度逐步提升,用户对业务的质量要求也不断提高。
为了满足用户需求,网络运维务必更加精细化、智能化。当今网络的运维面临着如下挑战: 1)超大规模:管理的设备数目众多,监控的信息数量非常庞大。 2)快速定位:在复杂的网络中,能够快速地定位故障,达到秒级、甚至亚秒级的故障定位速。 3)精细监控:监控的数据类型更多,且监控粒度更细,以便完整、准确地反应网络状况,据此预估可能发生的故障,并为网络优化提供有力的数据依据。网络运维不仅需要监控接口上的流量统计信息、每条流上的丢包情况、 CPU 和内存占用情况,还需要监控每条流的时延抖动、每个报文在传输路径上的时延、每台设备上的缓冲区占用情况等。
网络设备监控
网络设备的统一监控和性能管理是运维平台的重要功能。设备的监控数据包括数据、控制、管理平面数据。
获取设备监控数据的方式有:SNMP、CLI、Syslog、NetStream、sFlow等。 NetSteam 和 sFlow 为网络流量监控技术,主要针对数据平面数据。SNMP是最主流的方式。

传统网络采集技术的问题
奈奎斯特采样定律表示,当采样频率大于信号频率的2倍时,才能完整保留原始信号中的信息。SNMP的采集周期为5分钟,通常会导致细节信息丢失。

传统运维方式有诸多问题
传统网络通过平均5-15分钟的Pulling拉取采样数据,更密集的Pulling拉取会造成网络设备瘫痪。

监控的粒度太大造成网络可视度低。 以SNMP为主的运维系统效率低。 无法达到IT运维一样的实时监控,全程监控,并保留完整历史数据。 无法检测网络大量Micro Burst(微突发)造成的网络问题。
微突发是指在非常短的时间(毫秒级别)内收到非常多的突发数据,以至于瞬时突发速率达到平均速率的数十倍、数百倍,甚至超过端口带宽的现象。网管设备或网络性能监测软件通常是基于比较长的时间(数秒到数分钟)计算网络实时带宽。在这种情况下,看到流量速率通常是一条比较平稳的曲线,但是实际设备可能已由于微突发导致丢包。
总结:传统采集机制无法满足大数据要求

我们需要一个支持超大规模网络及海量数据运维的机制,具备实时性、高性能,易于扩展等特点。
解决方案
Telemetry(Network Telemetry,网络遥测技术),提供周期采样网络设备内的统计数据和状态数据的能力。是一项远程地从物理设备或虚拟设备上高速采集数据的技术。其是一项监控设备性能和故障的远程数据采集技术。
业界也有将SNMP认为是传统的Telemetry技术,把当前Telemetry叫做Streaming Telemetry或Model-Dr[……]

READ MORE

「Telemetry」- 概念术语

网络模型
Telemetry网络模型分广义和狭义两种: 1)广义Telemetry:包括采集器、分析器、控制器和设备共同构成的一个自闭环系统。 2)狭义Telemetry:指设备采样数据上送给采集器的功能。

利用Telemetry技术,采集器可以收集到大量的设备数据,然后将数据交给分析器进行综合分析,分析器将决策结果发送给控制器,由控制器调整设备的配置,便可以几乎实时地反馈调整后的设备状态是否符合预期。
协议栈
Telemetry协议栈具有分层结构:传输层、通信层、数据编码层、数据模型层。

简单说,协议栈的结构为:HTTP2 | gRPC | GPB[……]

READ MORE

「Telemetry」- 框架解读

狭义的Telemetry框架可以分为四个模块:数据源、数据生成、数据订阅、数据推送。

框架参考RFC草案,https://tools.ietf.org/html/draft-song-ntf-02%E3%80%82 gRPC是google开发的远程过程调用(RPC)系统。 UDP(User Datagram Protocol,用户数据报协议)为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。 Protobuf(Protocol Buffers,协议缓冲区)是一种序列化结构数据的机制。
数据源
Telemetry数据源定义了可被获取的数据。Telemetry采用YANG模型定义设备可获取数据源。支持各类YANG模型,包括Huawei-YANG、IETF-YANG和OpenConfig-YANG。

YANG 模型文件与采样路径:
数据订阅
Telemetry数据订阅定义了数据发送端和数据获取端交互关系。

华为Telemetry订阅方式分为两种: 1)静态订阅:设备作为客户端,采集器作为服务端。由设备主动发起到采集器的连接,然后设备进行数据采集上送。多用于长期巡检。 2)动态订阅:设备作为服务端,采集器作为客户端。由采集器发起到设备的连接。由设备进行数据采集上送。多用于短期监控。
静态订阅
1)网管对设备下发静态配置,包括采样路径,采样周期,上送目标、编码等信息:支持 CLI 下发;支持 Netconf 下发,Netconf 使用的模型是openconfig-telemetry.yang;
2)设备启动采样任务,主动向采集器发起连接并推送数据:支持gRPC上送,RPC方法为dataPublish;支持UDP上送;

自定义事件上报
动态订阅
1)采集器向设备发起gRPC连接。 2)采集器向设备发起动态订阅:RPC方法(Subscribe);指定采样路径、采样周期等信息 3)设备启动采样任务,将采样数据作为rpc方法的应答,源源不断的返回给采集器。

数据生成
Telemetry数据生成采用GPB(Google Protocol Buffers)编码。

数据推送
Telemetry的数据推送有两种方式,基于gRPC方式和基于UDP方式。

基于gRPC的推送流程
gRPC面向连接,只在采集器和主控板CPU之间建立gRPC隧道。

1)采集器充当 gRPC Client 的角色,设备充当 gRPC Server 角色。 2)采集器根据订阅的事件构建对应数据的格式(GPB/JSON),通过Protocol Buffers编写p[……]

READ MORE

「Telemetry」- 常见问题处理

静态订阅案例(华为)
这里我们将简述静态订阅的配置方法。

配置推送:即在设备上进行配置,以指示设备将指标推送到指定服务(gRPC Server);
配置采样、创建静态订阅:即在设备上配置,以选择需要推送的指标;
编译 proto 文件、编写代码:即编写 gRPC Server 服务。可在官网下载华为设备对应发布的 .proto 文件。 结果验证:运行 gRPC Server 以验证能够接收到设备推送来的数据。[……]

READ MORE

「sFlow」- 基于报文采样的网络流量监控技术

问题描述
企业网用户对于接口的流量情况、整体设备运行情况有明确的需求。企业用户更需要一种以设备接口为基本采样单元的流量监控技术来实时监控流量状况,及时发现异常流量以及攻击流量的源头,从而保证企业网络的正常稳定运行。
解决方案
采样流 sFlow(Sampled Flow)是一种基于报文采样的网络流量监控技术,基于Flow采样可以截取原始报文的全部,也可以截取一部分报头。
原理简述
sFlow系统包含一个嵌入在设备中的sFlow Agent和远端的sFlow Collector。
其中,sFlow Agent通过sFlow采样获取接口统计信息和数据信息,将信息封装成sFlow报文发送到指定的sFlow Collector。sFlow Collector对sFlow报文进行分析,并显示分析结果。

如图所示,只需要在支持sFlow Agent的设备上进行部署,远端连接一个sFlow Collector,就可以对流量进行基于接口的搜集和详细的分析。
特性说明
sFlow关注的是接口的流量情况、转发情况以及设备整体运行状况,适合于网络异常监控以及网络异常定位,特别适合于企业网用户。
sFlow 与 NetStream 比较具有以下优势: 节省资源、降低成本:由于不需要缓存区,对网络设备的资源占用少,实现成本低。 采集器灵活、随需的部署:由于网络流的分析和统计工作由采集器完成,采集器可以灵活的配置网络流特征进行统计分析,实现灵活、随需的部署。
仅采样:使用 NetStream 也可以对网络流量进行统计分析, 而 NetStream 是一种基于网络流信息的统计技术,网络设备自身需要对网络流进行初步的统计分析,并把统计信息储存在缓存区,当缓存区满或者流统计信息老化后输出统计信息。与 NetStream 相比, sFlow不需要缓存区,网络设备仅进行报文的采样工作,网络流的统计分析工作由远端的采集器完成。
应用场景

系统角色
sFlow Collector,sFlow Agent:
采样方式
Flow 采样,是sFlow Agent设备在指定接口上按照特定的采样方向和采样比对报文进行采样分析,用于获取报文数据内容的相关信息。该采样方式主要是关注流量的细节,这样就可以监控和分析网络上的流行为。Flow采样可以截取原始报文的全部,也可以截取一部分报头。
Counter 采样,是sFlow Agent设备周期性的获取接口上的流量统计信息,Counter采样支持获取的采样信息。与Flow采样相比,Counter采样只关注接口上流量的数量,而不关注流量的详细信息。[……]

READ MORE

「Network」- 性能

问题描述
该笔记将记录:与网络性能有关(比如延迟、吞吐等等),以及相关解决方案。
解决方案
网络延迟(Latency)与网络吞出(Throughput)
延迟与吞吐是两个不同的概念。但是在理解这两个概念之前,需要先理解另外一个概念 -「带宽」。
带宽(Bindwidth)
在计算机网络中,带宽指在确定时间内可以从一端发送到另一端的数据总量。
延迟(Latency)
延迟,数据包到达目的地所花费时间。
延迟成因 1)延迟成因有很多,但是最后都归结于“路由设备状态”与“网络设备距离”。 2)路由设备需要处理数据包,因此通过路由越多,延迟越明显。 3)另外传输距离越长,延迟越明显。
延迟测试
吞吐(Throuthput)
吞吐,在特定时间内处理数据包的数量。它受限于网络连接标准和网络设备能力。
低吞吐成因
低吞吐的成因由很多,其中主要的壹个原因是“硬件设备性能问题”。
如果设备故障、过期,则会导致低吞吐。当网络中充满大量数据包时,会发生丢包现象。
参考文献
Wikipedia/Bandwidth (computing) Latency vs Throughput – Understanding the Difference[……]

READ MORE

「网络」- 状态统计系统

用于网络数据统计的命令

#!/bin/sh

nstat

ss -s

netstat -i

netstat -s

ifconfig enp0s25

ip -s link

sar -n DEV 1 3

统计TCP连接状态
关于TCP连接建立过程以及其中的各种状态这里不再展开。
可以使用如下命令统计各种状态的连接的数量:

#!/bin/sh

netstat –tcp -na | sed -u ‘1,2d’ | awk ‘{print $6}’ | sort | uniq -c | sort -r

# 如果想要查看动态的输出可以配合watch命令
watch -n 1 “netstat -nat | sed -u ‘1,2d’ | awk ‘{print \$6}’ | sort | uniq -c | sort -r”

ss -s

参考文献
Linux Network Statistics Tools / Commands How to use watch command with a piped chain of commands/programs How to Check TCP connections States in Linux with Netstat[……]

READ MORE

「NETWORKING」- 流量统计

基于流量统计,可以分析如下问题: 流量是否到达设备入口,进而判断上游设备是否丢包; 流量是否被转发到设备出口,进而判断设备是否丢包; 流量在设备入口二三层信息是否正确,进而判断上游设备转发封装是否正常; 流量在设备出接口二三层信息是否正确,进而判断设备转发封装是否正常; 是否存在MAC漂移、路由变化、IP冲突等导致的流量瞬间漂移。
流量统计的配置步骤: 配置ACL规则,匹配需要统计的流量。 配置流分类,根据ACL规则匹配不同的流量,从而区分不同数据流量。 配置流行为,在流行为中配置流量统计。 配置流策略,绑定以上流分类和流行为,实现对不同用户报文的流量统计。 在接口出方向或入方向调用流策略。

[R3] acl 3000
[R3-acl-adv-3000]rule 5 permit ip source 192.168.12.1 0 destination 192.168.56.6 0

[R3]traffic classifier trafficSta
[R3-classifier-trafficSta]if-match acl 3000

[R3]traffic behavior trafficSta
[R3-behavior-trafficSta]statistic enable

[R3]traffic policy trafficSta
[R3-trafficpolicy-trafficSta]classifier trafficSta behavior trafficSta

[R3]interface GigabitEthernet0/0/2.35
[R3-GigabitEthernet0/0/2.35]traffic-policy trafficSta outbound[……]

READ MORE

「Network Security」- 网络安全

问题描述
该部分笔记将记录:提升网络安全的方法,以及常见问题解决方案。
相关内容
Authentication
Kerberos: The Network Authentication Protocol Aauth2 Proxy / Nginx reverse proxy setup for Kibana[……]

READ MORE

「Huawei VRP」- 访问控制列表,ACL,Access Control List

问题描述
随着网络的飞速发展,网络安全和网络服务质量(QoS,Quality of Service)问题日益突出;
需要实现流量过滤: 1)某公司为保证财务数据安全,禁止研发部门访问财务服务器,但总裁办公室不受限制; 2)来自互联网的不安全流量需要屏蔽
解决方案
访问控制列表(ACL, Access Control List)是与其紧密相关的一个技术;
原理简述
1)ACL 是由系列 permit 或 deny 语句组成的、有序规则的列表; 2)ACL 是个匹配工具,能够对报文进行匹配和区分;
特性特征
ACL 可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性;
应用场景
1)匹配 IP 流量 2)在 Traffic-filter 中被调用 3)在 NAT(Network Address Translation)中被调用 4)在路由策略中被调用 5)在防火墙的策略部署中被调用 6)在 QoS 中被调用 7)其他……[……]

READ MORE

「ACL」- 概念术语

语法规则(ACL Syntax)
语法概述: 1)ACL 由若干条 permit 或 deny 语句组成; 2)每条语句就是该 ACL 的一条规则。每条语句的 permit 或 deny 就是与这条规则相对应的处理动作;
第一步、定义 ACL 规则

# acl number 2000

// 2000:访问控制列表的编号

第二步、定义 ACL 条目

# rule 5 permit source 1.1.1.0 0.0.0.255
# rule 10 deny source 2.2.2.0 0.0.0.255

# rule 4294967294 deny # 在 ACL 末尾,由系统定西隐含(默认)的规则

// 5,10:规则编号。用于给规则排序;
// permit,deny:动作。允许或拒绝;
// source 1.1.1.0 0.0.0.255,2.2.2.0 0.0.0.255:匹配规则。用于匹配地址;

规则编号(Rule ID): 1)一个 ACL 中的每一条规则都有一个相应的编号; 2)取值范围:0~4294967294 3)所有规则均按照规则编号从小到大进行排序;
步长(Step): 1)步长是系统自动为 ACL 规则分配编号时,每个相邻规则编号之间的差值,缺省值为 5; 2)步长的作用是为了方便后续在旧规则之间,插入新的规则;
规则编号(Rule ID)的分配规则: 1)系统为 ACL 中首条未手工指定编号的规则分配编号时,使用步长值(例如 Step=5,首条规则编号为 5)作为该规则的起始编号; 2)为后续规则分配编号时,则使用大于当前 ACL 内最大规则编号,且是步长整数倍的最小整数作为规则编号;
通配符(Wildcard) 1)通配符是一个 32 比特长度的数值,用于指示 IP 地址中,哪些比特位需要严格匹配,哪些比特位无需匹配; 2)通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同; 3)匹配规则:“0”表示“匹配”;“1”表示“随机分配”;
分类:基本 ACL;高级 ACL;
通过 acl number 2000 能够定义规则集合。但是数值 2000 并非任意的,不同区间的数值由不同含义
分类,编号范围,规则定义描述
1)基本 ACL,2000-2999,仅使用报文的源 IP 地址、分片信息和生效时间段信息来定义规则;
2)高级 ACL,3000-3999,可使用 IPv4 报文的源 IP 地址、目的 IP 地址、IP 协议类型、ICMP 类型、TCP 源 / 目的端口号、UDP 源 / 目的端口号、生效时间段等来定义规则;
3)二层 ACL,4000-49[……]

READ MORE

「ACL」- 场景及方案

配置使用(Huawei)
创建基本 ACL 规则

# 使用编号(2000~2999)创建一个数字型的基本 ACL,并进入基本 ACL 视图;
[Huawei] acl [ number ] acl-number [ match-order config ]

# 使用名称创建一个命名型的基本 ACL,并进入基本 ACL 视图;
[Huawei] acl name <acl-name> { basic | acl-number } [ match-order config ]

配置基本 ACL 规则

# 在基本 ACL 视图下,通过此命令来配置基本 ACL 的规则;
[Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ]

创建高级 ACL 规则:

# 使用编号(3000~3999)创建一个数字型的高级 ACL,并进入高级 ACL 视图;
[Huawei] acl [ number ] acl-number [ match-order config ]

# 使用名称创建一个命名型的高级 ACL,进入高级 ACL 视图;
[Huawei] acl name acl-name { advance | acl-number } [ match-order config ]

配置高级 ACL 规则:

# 使当参数 protocol 为 IP 时,高级 ACL 的命令格式为
rule [ rule-id ] { deny | permit } ip [ destination { destination-address destination-wildcard | any } | source { source-address source-wildcard | any } | time-range time-name | [ dscp dscp | [ tos tos | precedence precedence ] ] ]

# 当参数 protocol 为 TCP 时,高级 ACL 的命令格式为
rule [ rule-id ] { deny | permit } { protocol-number | tcp } [ destination { destination-address destination-wildcard | any } | destination-port { eq port | gt port | lt port | range[……]

READ MORE

「Firewall」- 概念、术语

发展历程
纵观防火墙的发展历史,防火墙经历了从低级到高级、从功能简单到功能复杂的过程。网络技术的不断发展和新需求的不断提出,推动着防火墙的发展;
防火墙从包过滤防火墙发展起经历了状态检测、统一威胁管理、NGFW 等到 AI 防火墙,有以下特点:访问控制越来越精细、防护能力越来越强、性能越来越高;

设备形态
防火墙根据设备形态分为,框式防火墙、盒式防火墙、软件防火墙,支持在云上云下灵活部署;

严格意义上,防火墙还有更多的部署形态,例如桌面型防火墙(盒式防火墙的一种)。桌面型防火墙适用于小型企业、行业分支、连锁商业机构等场景;
华为盒式防火墙同时支持传统模式和云管理模式。云管理模式由云端统一管理分支机构的安全接入,支持设备即插即用、业务配置自动化、运维可视化和网络大数据分析;
我们以学习 桌面型防火墙、软件防火墙 为主,后续内容聚焦的框式/盒式硬件防火墙(我们这辈子可能都不会域间框式防火墙);
软件防火墙
iptables 与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,即它们只是种前端服务。
iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理; firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理;
设备对比
以园区网为例: 1)交换机作用是接入终端和汇聚内部路由,组建内部互联互通的局域网; 2)路由器作用是路由的分发、寻址和转发,构建外部连接网络; 3)防火墙作用是流量控制和安全防护,区分和隔离不同安全区域;

防火墙与路由器转发流程对比
防火墙的转发流程比路由器复杂;
以框式设备为例,硬件上除了接口、LPU(Line Processing Unit)、交换网板等外,防火墙还特有 SPU(Service Processing Unit),用于实现防火墙的安全功能;

设备类别
报文过滤防火墙
原理:包过滤防火墙的基本原理是通过 匹配数据包(比如 ACL 匹配)并执行控制策略 来实施数据包的过滤。包过滤是指基于五元组对每个数据包进行检测,根据配置的安全策略转发或丢弃数据包。包过滤防火墙主要基于数据包中的源/目的 IP 地址、源/目的端口号、IP 标识和报文传递的方向等信息;
优势:包过滤防火墙的设计简单,非常易于实现,而且价格便宜;
缺点,包过滤防火墙主要表现以下几点: 1)逐包检测,性能较低; 2)ACL 规则难以适应动态需求。随着 ACL 复杂度和长度的增加,其过滤性能呈指数下降;静态的 ACL 规则难以适应动态的安全要求; 3)通常不检查应用层数据;[……]

READ MORE

「FIREWALL-SOFTWARE」- 概念术语、基础知识

对于那些由服务器发出去的流量
「IPTables rule to allow all outbound locally originating traffic?」

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

第一条规则并不是必需的。
防火墙工具
在 RHEL/CentOS 中,开始使用 firewalld 管理防火墙; 在 Ubuntu 中,采用 ufw 管理防火墙。
TCP Wrappers
第8章 使用Iptables与Firewalld防火墙 | 《Linux就该这么学》
TCP Wrapper 是在旧版 Linux 系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序做出允许或拒绝的操作。
TCP Wrapper 的使用需要应用程序支持:最初,只有从 Super-Server(例如 inetd 等等)为每个连接生成的服务才使用 tcpd 程序进行包装。现在,最常见的网络服务守护进程可以直接链接到 libwrap,这使得在没有从 Super-Server 派生的情况下运行的守护进程使用,或者在单个进程处理多个连接时使用。
换句话说,在 Linux 中其实有两个层面的防火墙:第一种是常见的基于 TCP/IP 协议的流量过滤工具;另种是 TCP Wrapper 这种能允许或禁止Linux系统提供服务的防火墙,从而在更高层面保护 Linux 系统的安全运行。
TCP Wrapper服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量。控制列表文件修改后会立即生效,系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则会进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。如果这两个文件都没有匹配到,则默认放行流量。
在现在 Linux 版本中,它已经被firewalld正式替代。
ipfwadm
更早期的linux内核防火墙。ipfwadm是管理linux内核提供的IP计数和IP防火墙服务的程序。当前的ipfwadm稳定版本是1.2版本,需要linux内核版本为1.2.1或更高版本,ipfwadm的2.3.0版本则需要linux版本1.3.66或更高版本。以前的ipfwadm版本2.0beta1 beta版本之一,适用于[……]

READ MORE

「Huawei Firewall」- 华为防火墙

[……]

READ MORE

「Huawei Firewall」- 概念术语

[……]

READ MORE

「Firewall」- 安全策略(Security Policy)

安全策略,是控制防火墙对流量转发,及对流量进行内容安全一体化检测的策略;
当防火墙收到流量后,对流量的属性(五元组、用户、时间段等)进行识别,然后与安全策略的条件进行匹配。如果条件匹配,则此流量被执行对应的动作;

策略组成
安全策略的组成有: 1)匹配条件:用于根据条件来匹配数据包; 2)动作:对匹配的数据包所进行的动作: —- 如果为“允许”,则可配置安全配置文件安全配置文件(可选),用于实现内容安全,对内容进行检测; —- 如果为“禁止”,则可配置反馈报文,用于通知发送流量的用户;

动作
如果动作为“允许”,则对流量进行如下处理: 1)如果没有配置内容安全检测,则允许流量通过; 2)如果配置内容安全检测,最终根据内容安全检测的结论来判断是否对流量进行放行。内容安全检测包括反病毒、入侵防御等,它是通过在安全策略中引用安全配置文件实现的。如果其中一个安全配置文件阻断该流量,则防火墙阻断该流量。如果所有的安全配置文件都允许该流量转发,则防火墙允许该流量转发;
如果动作为“禁止”,则对流量进行如下处理: 1)防火墙不仅可以将报文丢弃, 2)还可以针对不同的报文类型选择发送对应的反馈报文(Reset 客户端:防火墙向 TCP 客户端发送 TCP reset 报文;Reset 服务器:防火墙向 TCP 服务器发送 TCP reset 报文;ICMP 不可达:FW 向报文客户端发送 ICMP 不可达报文)。发起连接请求的客户端/服务器收到防火墙发送的阻断报文后,可以快速结束会话,并让用户感知到请求被阻断;
更多详细信息,可以参考文档,“安全策略”章节:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100084128
匹配过程
当配置多条安全策略规则时: 1)安全策略的匹配按照策略列表的顺序执行,即从策略列表顶端开始逐条向下匹配; 2)如果流量匹配某个安全策略,将不再进行下一个策略的匹配。安全策略的配置顺序很重要,需要先配置条件精确的策略,再配置宽泛的策略;
默认禁止:系统默认存在一条缺省安全策略 default。缺省安全策略位于策略列表的最底部,优先级最低,所有匹配条件均为 any,动作默认为禁止。如果所有配置的策略都未匹配,则将匹配缺省安全策略 default;[……]

READ MORE

「Firewall」- 安全区域(Security Zone)

安全区域(Security Zone),简称为区域(Zone),是防火墙的重要概念,一个 Zone 是防火墙若干接口所连网络的集合(注意,防火墙接口不属于安全区域);是一个安全的概念,大部分的安全策略都基于安全区域实施;

防火墙大部分的安全策略都基于 Zone 来实施,一个 Zone 内的用户具有相同的安全属性;防火墙是针对区域来实施安全策略的,控制区域间的互访;
一个安全区域是防火墙若干接口所连网络的集合,这些网络中的用户具有相同的安全属性; 将企业员工网络、公司服务器网络、外部网络划分到不同安全区域,对安全区域间的流量进行检测和保护;
在一台防火墙上不允许创建两个相同安全级别(Priority)的安全区域; 防火墙的接口必须加入一个安全区域,否则不能正常转发流量; 防火墙的一个接口只能属于一个安全区域; 防火墙的一个安全区域可以拥有多个接口; 系统自带的缺省安全区域不能删除,用户可以根据实际需求创建自定义的安全区域;

安全区域特性
安全区域有以下特性:
1)华为防火墙确认已创建四个默认区域,名称均为小写字母,大小写敏感,不能删除,也不允许修改安全优先级;
2)用户可根据自己的需求创建自定义的 Zone;
3)每个 Zone 都必须设置一个安全优先级(Priority),值越大,则 Zone 的安全优先级越高; 在思科中,高优先级可以访问低优先级; 在华为中,区域完全隔离,无法互访,而优先级仅具有字面意义(并无实际用途);
默认安全区域
华为防火墙确认已创建四个默认区域:
1)本地区域(local),Local 区域定义的是设备本身,例如设备的接口。Local 区域是最高安全级别区域,优先级为 100; local 区域定义的是设备本身,包括设备的各接口本身。凡是由设备构造并主动发出的报文均可认为是从 Local 区域中发出,凡是需要设备响应并处理(而不仅是检测或直接转发)的报文均可认为是由 local 区域接收。用户不能改变 local 区域本身的任何配置,包括向其中添加接口。由于 local 区域的特殊性,在很多需要设备本身进行报文收发的应用中,需要开放对端所在安全区域与 local 区域之间的安全策略;
2)受信区域(trust),较高安全级别区域,优先级为 85; 通常用于定义内网终端用户所在区域;
3)非军事化区域(dmz),中等安全级别区域,优先级为 50; 通常用于定义内网服务器所在区域。因为这种设备虽然部署在内网,但是经常需要被外网访问,存在较大安全隐患,同时一般又不允许其主动访问外网,所以将其部署一个优先级比 trust 低,但是比 untrust 高的安全区域中。DMZ(Demilitarized Zone)起源于军方,是[……]

READ MORE

「Firewall」- 会话表(Session Table)

会话表是用来记录 TCP、UDP、ICMP 等协议连接状态的表项,是防火墙转发报文的重要依据;
防火墙采用基于“状态”的报文控制机制:只对首包或者少量报文进行检测就确定一条连接的状态,大量报文直接根据所属连接的状态进行控制。这种状态检测机制迅速提高了防火墙的检测和转发效率。会话表就是为了记录连接的状态而存在的。设备在转发 TCP、UDP 和 ICMP 报文时都需要查询会话表,来判断该报文所属的连接并采取相应的处理措施;

本例中 PC1 向 PC2 发起 HTTP 连接,所以在防火墙会话表中标示出“http”协议和连接信息,并识别出此流量在公共路由表中被转发(图中 VPN:public);
会话表的创建和包处理过程
防火墙状态检测开启情况下,仅流量的首包会创建会话表项,后续包即可直接匹配会话表项;

本流程只是一个示意图,展示华为防火墙各个模块的基本处理顺序。实际不同的报文处理并非严格按照此流程图依次进行(若无对应配置),且与具体产品实现相关,更多详细信息建议参考指定型号防火墙产品文档的“报文转发流程”章节;
会话表的老化时间与长连接
防火墙为各种协议设定了会话老化机制。当一条会话在老化时间内没有被任何报文匹配,则会被从会话表中删除。这种机制可以避免防火墙的设备资源被大量无用、陈旧的会话表项消耗;
但是对于某些特殊业务中,一条会话的两个连续报文可能间隔时间很长。例如: 1)用户通过 FTP 下载大文件,需要间隔很长时间才会在控制通道继续发送控制报文; 2)用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于 TCP 的会话老化时间; 3)此时如果其会话表项被删除,则该业务会中断;
长连接(Long Link)机制可以给部分连接设定超长的老化时间,有效解决这个问题;
在华为设备中: 1)查看各协议会话的失效时间:display firewall session aging-time 2)[……]

READ MORE

「FIREWALL-APPLIANCE」- 模块交互

防火墙报文处理流程图解
华为企业互动社区/防火墙报文处理流程图解[……]

READ MORE

「Firewall」- 防火墙双机:问题、方案

问题描述
随着移动办公、网上购物、即时通讯、互联网金融、互联网教育等业务蓬勃发展,网络承载的业务越来越多,越来越重要。所以如何保证网络的不间断传输成为网络发展过程中急需解决的一个问题;
防火墙部署在企业网络出口处,内外网之间的业务都会通过防火墙转发。如果防火墙出现故障,便会导致内外网之间的业务全部中断,影响到整网业务。由此可见,在这种网络关键位置上如果只使用一台设备的话,无论其可靠性多高,都存在因设备单点故障而导致网络中断的风险。于是,在做网络架构设计时,通常会在网络的关键位置部署两台网络设备,以提升网络的可靠性;
问题:状态数据同步
防火墙是状态检测设备,它会对一条流量的首包进行完整的检测,并建立会话来记录报文的状态信息(包括报文的源 IP、源端口、目的 IP、目的端口、协议等)。而这条流量的后续报文只有匹配会话才能够通过防火墙并且完成报文转发,如果后续报文不能匹配会话则会被防火墙丢弃;
如果在网络出口处部署两台独立的防火墙,则两台防火墙独立运行,需分别进行配置维护。此外,以在防火墙的上行、下行部署 VRRP 为例,由于这两组 VRRP 相互独立,因此容易出现主备状态不一致的情况,此时内网访问外网的往返流量路径不一致,当回程流量抵达 FW2 时,由于 FW2 没有匹配的会话表项,因此这些流量将被丢弃;
所以当防火墙双机部署时需要考虑两台防火墙之间的会话等状态信息的备份;

问题:配置维护成本

解决方案
防火墙双机热备技术用于解决该问题。部署多台防火墙可提升可靠性,需保证设备切换过程中的业务连续性;
原理简述

1)双机热备,需要两台硬件和软件配置均相同的防火墙组成双机热备系统,等于说是一模一样; 2)两台 FW 之间,通过一条独立的链路连接,这条链路通常被称之为“心跳线”。通过心跳线了解对端的健康状况,向对端备份配置和表项(如会话表、IPsec SA 等); 3)当一台防火墙出现故障时,业务流量能平滑地切换到另一台设备上处理,使业务不中断;
特性特征
目前(08/08/2022)只支持两台设备进行双机热备; 主备设备的产品型号和版本必须相同; 主备设备业务板和接口卡的位置、类型和数目都须相同,否则会出现主用设备备份过去的信息,与备用设备的物理配置无法兼容,导致主备切换后出现问题;
应用场景
双机热备直路部署,连接二层设备
防火墙的业务接口工作在三层,上下行连接交换机;

终端可将默认网关设置为 VRRP VRID1 的虚拟 IP 地址。SW3/SW4 配置回程路由时,可将下一跳设置为 VRRP VRID100 的虚拟 IP 地址;
双机热备直路部署,连接三层设备
防火墙的业务接口工作在三层,上下行连接路由器[……]

READ MORE

「Firewall」- 多通道协议的解决方案:Server Map

问题描述
单通道协议,通信过程中只需占用一个端口的协议。比如 WWW 只需占用 80 端口、SSH 只占用 22 端口; 多通道协议,与之相对的是,通信过程中需占用两个或两个以上端口的协议;
大部分多媒体应用协议(如 H.323、SIP)、FTP、netmeeting 等协议使用约定的固定端口来初始化一个控制连接,再动态的协商出端口用于数据传输。端口的选择是不可预测的。其中的某些应用甚至可能要同时用到多个端口。传统的包过滤防火墙可以通过配置 ACL 过滤规则匹配单通道协议的应用传输,保障内部网络不受攻击,但只能阻止一些使用固定端口的应用,无法匹配使用协商出随机端口传输数据的多通道协议应用,留下了许多安全隐患; 以 FTP 为例,它是个典型的多通道协议,在其工作过程中,FTP Client 和 FTP Server 间将会建立两条连接:控制连接和数据连接。控制连接用来传输 FTP 指令和参数,其中就包括建立数据连接所需要的信息。数据连接用来获取服务器目录及传输数据。数据连接使用的端口号是在控制连接中临时协商的。根据数据连接的发起方式 FTP 协议分为两种工作模式:主动模式(PORT 模式)和被动模式(PASV 模式)。主动模式中,FTP Server 20 号端口主动向 FTP Client 随机端口发起数据连接;被动模式中,FTP Server 被动接收 FTP Client 发起的数据连接。模式在一般的 FTP 客户端中都是可以设置的,这里我们以主动模式为例;
当多通道协议存在时,由于防火墙安全策略配置,导致多通道协议无法正常工作。这通常是因为在防火墙上配置严格的单向安全策略,那么防火墙将只允许业务单方向发起访问。而多通道协议第二条链接采用动态协商的端口,而防火墙没有针对该动态端口的放行策略,导致连接失败;
这会导致一些特殊的协议无法工作,例如 FTP。FTP 主动模式传输文件时,首先需要客户端主动向服务器端发起控制连接,然后需要服务器端向客户端发起数据连接。如果设备上配置的安全策略仅允许客户端报文单方向通过,则 FTP 文件传输不能成功; 同 FTP,通信过程中需占用两个或两个以上端口的协议被称为多通道协议。多通道协议都需要考虑此类问题;
解决方案
防火墙配置较为宽泛的安全策略也可以解决协议不可用问题,但是存在安全隐患;
为了解决多通道协议的问题,防火墙需要识别协议在应用层协商的地址和端口,这需要开启 ASPF(Application Specific Packet Filter,针对应用层的包过滤)功能,该特性将识别协议,并针对协议自动创建临时的安全策略(仅能如此理解,实际情况并非如此);
ASPF and Server-Map
ASPF 也称作基于状态的报文过滤,ASPF 功能可以自动检测[……]

READ MORE

「Huawei Firewall」- 虚拟系统

解决方案

原理简述

特性特征
为了实现每个虚拟系统的业务都能够做到正确转发、独立管理、相互隔离,FW 主要实现了几个方面的虚拟化: 1)资源虚拟化:每个虚拟系统都有独享的资源,包括接口、VLAN、策略和会话等。根系统管理员分配给每个虚拟系统,由各个虚拟系统自行管理和使用; 2)配置虚拟化:每个虚拟系统都拥有独立的虚拟系统管理员和配置界面,每个虚拟系统管理员只能管理自己所属的虚拟系统; 3)安全功能虚拟化:每个虚拟系统都可以配置独立的安全策略及其他安全功能,只有属于该虚拟系统的报文才会受到这些配置的影响; 4)路由虚拟化:每个虚拟系统都拥有各自的路由表,相互独立隔离。目前仅支持静态路由的虚拟化;
通过以上几个方面的虚拟化,当创建虚拟系统之后,每个虚拟系统的管理员都像在使用一台独占的设备;
应用场景
大中型企业的网络隔离
通过防火墙的虚拟系统将网络隔离为研发部门、财经部门和行政部门。各部门之间可以根据权限互相访问,不同部门的管理员权限区分明确;

云计算中心的安全网关
通过配置虚拟系统,可让部署在云计算中心出口的 FW 具备云计算网关的能力,对不同租户流量进行隔离的同时提供安全防护能力;
概念术语
Public vs. VSYS
防火墙上存在两种类型的虚拟系统:
根系统(Public) 缺省即存在的一个特殊虚拟系统。缺省时,管理员对防火墙进行配置等同于对根系统进行配置; 在虚拟系统这个特性中,根系统的作用是管理其他虚拟系统,并为虚拟系统间的通信提供服务;
虚拟系统(VSYS):虚拟系统是在防火墙上划分出来的、独立运行的逻辑设备;
Virtual Interface(虚拟接口)
虚拟接口是创建虚拟系统时设备自动为其创建的一个逻辑接口,作为虚拟系统自身与其他虚拟系统之间通信的接口; 虚拟系统之间通过虚拟接口实现互访,并且虚拟接口必须配置 IP-ADDR 并加入 Security Zone 才能正常工作;
虚拟接口名的格式为“Virtual-if+接口号”: 1)根系统的虚拟接口名为 Virtual-if0; 2)其他虚拟系统的 Virtual-if 接口号从 1 开始,根据系统中接口号占用情况自动分配;

如图所示,各个虚拟系统以及根系统的虚拟接口之间默认通过一条“虚拟链路”连接。如果将虚拟系统、根系统都视为独立的设备,将虚拟接口视为设备之间通信的接口,通过将虚拟接口加入安全区域并按照配置一般设备间互访的思路配置路由和策略,就能实现虚拟系统和根系统的互访、虚拟系统之间的互访;
访问:VSYS ==> 根系统
虚拟系统与根系统互访有两种场景:虚拟系统访问根系统、根系统访问虚拟系统。 这两种场景下,报文转发[……]

READ MORE

「FIREWALL-SOFTWARE」- 概念术语、基础知识

解决方案
从RHEL 7系统开始,firewalld防火墙正式取代了iptables防火墙。
在 RHEL 8 中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
特性特征
相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。这使得 firewalld 更像防火墙产品。[……]

READ MORE

「firewalld」- 概念术语

区域(ZONE)
在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。
常见的区域名称(默认为public)以及相应的策略规则: trusted:允许所有的数据包 home:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 internal:等同于home区域 work:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 public:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 external:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 dmz:拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 block:拒绝流入的流量,除非与流出的流量相关 drop:拒绝流入的流量,除非与流出的流量相关
firewall-cmd
是 firewalld 的 CLI(命令行界面)配置管理工具。它的参数通常都是以“长格式”来提供的。
firewall-config
Documentation – Utilities – firewall-config | firewalld
是firewalld防火墙配置管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作。
简单操作,易于上手使用。[……]

READ MORE

「Linux」- 安装 iptables 防火墙

问题描述
该笔记将记录:在 Linux 中,安装 iptables 的方法,以及常见问题解决方案。
解决方案
WIP
原理简述
iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理;
配置案例
从发行版的源中安装

# Kali GNU/Linux Rolling
apt-get install iptables

使用源码编译安装
参考BLFS/Iptables-1.6.0中的说明。
安装的可执行程序
iptables/ip6tables,用于设置、维护、检查Linux内核中的IP数据包过滤规则表。该命令是用于配置防火墙的主要命令,对防火墙的操作主要是通过该命令实现的。
iptables-restore/ip6tables-restore,从文件中或者STDIN中读取数据中来恢复IP表。可以用于将多条防火墙配置数据导入到防火墙中。该命令识别的数据格式与iptables-save命令导出的格式相同。
iptables-save/ip6tables-save,将IP表的内容以一种易于解析的格式输出到STDOUT中。或者可以使用SHELL的I/O重定向来输出到文件。该命令可以用于导出防火墙的配置,并且该命令导出的配置可以使用iptables-restore命令再次导入到防火墙中。
iptables-xml/ip6tables-xml,用于将iptables-save的输出转换为XML格式。你可以执行iptables-save | iptables-xml命令看一下输出。
xtables-multi,这是一个二进制文件。它的行为与调用它时所使用的名称相符。比如,创建指向xtables-multi且名为iptables的软链接,那执行该iptables软链接时,它的行为与实际的iptables命令相同。[……]

READ MORE

「iptables」- 概念术语

Table, Chain, Rule, Policy
针对主机触及的数据包: 1)数据包传入主机,确定哪个 Table(表)进行处理; 2)在 Table 中,确定被哪个 Chain(规则链)处理; 3)在 Chain 中,确定被哪条 Rule(规则)处理; 4)在 Rule 中,确定要执行哪个 Policy(策略);
Table(表)
四表(Four Tables)
raw table:确定是否对该数据包进行状态跟踪。 包含两个规则链:PREROUTING;OUTPUT;
mangle table:修改数据包内容,用来做流量整形的,给数据包设置标记。 包含五个规则链:PREROUTING;INPUT;FORWARD;OUTPUT;POSTROUTING;
nat table:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。 包含三个规则链:PREROUTING;OUTPUT;POSTROUTING;
filter table:负责过滤数据包,确定是否放行该数据包(过滤)。 包含三个规则链:INPUT;FORWARD;OUTPUT;
在iptables 的四个规则表中,mangle table 和 raw table 的应用相对较少;
当数据包到达防火墙时,规则表之间的优先顺序:raw > mangle > nat > filter
Chain(规则链)
规则链,是由多条 Rule 组成的规则集合;
防火墙会按照从上到下的顺序来读取配置的策略规则: 1)在找到匹配项后就立即结束匹配工作,并去执行匹配项中定义的行为(即放行或阻止)。 2)如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
针对默认策略,在设置时: 1)当防火墙的默认策略为拒绝时,就要设置允许规则,否则谁都进不来; 2)如果防火墙的默认策略为允许,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
五链(Five Chains)
PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上
INPUT:处理入站数据包,匹配目标IP为本机的数据包,然后才会交由应用程序进行处理;
OUTPUT:处理出站数据包,通常不在此链上做配置
FORWARD: 处理转发数据包,匹配流经本机的数据包
POSTROUTING: 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网
Rule(规则)
Rule(规则),是 iptables 把用于处理或过滤流量的[……]

READ MORE

「Linux」- 保存防火墙配置

CentOS 6.x
How to configure iptables on CentOS
保存防火墙配置:service iptables save
防火墙配置保存路径:/etc/sysconfig/iptables
重新加载防火墙配置:service iptables restart
Debian 8.x
debian 8 iptables-persistent
在Debian 8(或者衍生发行版)中,可以使用iptables-persistent包来进行防火墙配置的持久化。
注意:这里讨论的”防火墙“指的是Linux内核防火墙的前端工具iptables(8)命令。
安装 iptables-persistent 包

# Kali GNU/Linux Rolling
apt-get install iptable-persistent netfilter-persistent

先保存原有配置
初次安装时,会提示你是否保存当前防火墙规则。如下图:

这一步是为了保存当前防火墙规则。
如果以后要保存防火墙规则,可以执行dpkg-reconfigure iptables-persistent命令来再次进行保存防火墙规则。
持久化的规则文件在/etc/iptables/中。
修改防火墙配置
如果要修改防火墙配置,可以通过修改/etc/iptables/rules.v4和/etc/iptables/rules.v6两个配置文件,一个保存了IPv4的防火墙配置,一个保存了IPv6的防火墙配置。
实际上规则文件的格式为iptables-save的导出格式。
使修改后的配置生效
修改配置文件后,执行systemctl restart netfilter-persistent.service命令来重新加载防火墙配置。
配置信息的备份
执行dpkg-reconfigure iptables-persistent命令时,它会用当前防火墙的配置信息直接覆盖/etc/iptables/rules.vX文件。如果/etc/iptables/rules.vX文件中包含了自定义的配置、注释等信息,则需要先备份。[……]

READ MORE

「Network」- 流量过滤,Traffic Filter

问题描述
为提高网络安全性,用户希望能够控制进入网络的报文,将没有权限进入网络或存在安全隐患的报文隔离在网络边界。
为提高网络安全性,(1)管理人员需要控制进入网络的流量,将不信任的报文丢弃在网络边界。所谓的不信任报文是指对用户来说存在安全隐患或者不愿意接收的报文。(2)同时保证数据访问安全性,企业网络中经常会要求一些部门之间不能相互访问。
解决方案
通过流量过滤(Traffic Filter)技术,我们能够控制网络流量的互访。
注意,流量过滤(Traffic Filter)始终技术,而实现该技术的工具有很多: 1)华为,Traffic-Filter,实现流量过滤(易用,简单); 2)华为,MQC,实现流量过滤(复杂,丰富);
Traffic-Filter 只能应用在接口视图下,而 MQC 能够在多种视图下调用。[……]

READ MORE

「Network」- 华为,流量过滤,通过 MQC 实现

在 MQC 中,Traffic Behavior 的 deny 用于拒绝流量。
为匹配 ACL 规则的报文指定报文过滤动作时: 1)如果此 ACL 中的 rule 规则配置为 permit,则设备对此报文采取的动作由 Traffic Behavior 中配置的deny或permit决定; 2)如果此 ACL 中的rule规则配置为 deny,则无论流行为中配置了deny或permit,此报文都被丢弃。[……]

READ MORE