11.1 OSI 模型
协议可通过网络在计算机之间进行通信。
协议是一组规则和限制,用于定义数据如何通过网络介质(如双绞线、无线传输等)进行传输。
国际标准化组织(ISO)在20世纪70年代晚期开发了开放系统互连(OSI)参考模型。
11.1.1 OSI模型的历史
OSI 参考模型(通常被称为OSI模型):20世纪70年代晚期开发,(直到1984年才正式作为ISO标准7498 发布)。
TCP/IP 协议(现在也被称为TCP/IP模型):使用最广泛(基于国防部高级研究计划局模型),20世纪70年代早期开发。
。
OSI模型的开发旨在给所有计算机系统建立通用的通信结构或标准。
OSI模型充当着一个抽象框架或理论模型,用于描述协议在理想的世界里以及理想的硬件上应如何运行,已成为一个共同参考。
11.1.2 OSI 功能
OSI模型将网络任务分为七层。
每层负责执行特定任务或操作,以支持两台计算机之间的数据交换(即网络通信)。
这些层用名称或层号来表示(参见图11.1);每一层都按特定顺字排列,以表明信息如何通过不同的通信层进行传递。
每一层直接与上面的层以及下面的层通信。
图11.1 OSI 模型的表示
11.1.3 封装/解封
OSI模型代表的是多个协议(即多层协议)分层集合的协议栈,协议层之间的通信通过封装和解封实现。
封装 是指在将每层从上面的层接收到的数据传递到下面的层之前,为其添加头部,也可能添加尾部。
当消息被封装在每一层时,前一层的头和有效载荷成为当前层的有效载荷。
数据从物理层到应用层向上移动时的逆操作被称为解封。
封装/解封过程:
- 应用层接收数据。
应用层通过添加信息头来封装消息。
信息通常仅在消息的开头(称为头部)添加;但某些层还会在消息末尾添加内容(称为尾部)。
应用层将封装的消息传递给表示层。
图11.2 OSI 模型封装的示意图
(2) 向下传递消息并添加特定层的信息的过程将一直持续,直到消息到达物理层。
(3) 在物理层,消息被转换为用比特表示的电脉冲,并通过物理连接传输。
(4) 接收计算机从物理连接中捕获比特,在物理层中重新创建消息,并将消息发送到数据链路层。
(5) 数据链路层剥离其信息并将消息发送到网络层。
(6) 执行解封过程,直到消息到达应用层。
(7) 当邮件到达应用层时,邮件中的数据将发送给目标收件人。
每层删除的信息包含指令、校验和等,只有最初添加或创建信息的对等层能理解(参见图11.3) 。
这被称为对等层通信。
图11.3 OSI模型对等层逻辑信道示意图
发送到应用层(第7层)协议栈的数据被封装到网络容器中。
协议数据单元(PDU) 随后被传递到表示层(第6层),表示层又将其传递到会话层(第5层)。
该网络容器被称为第7、第6和第5层的PDU, 一旦它到达传输层(第4层),它将被称为段(TCP)或数据报(UDP)。
在网络层(第3层)中,它被称为数据包。
在数据链路层(第2层)中,它被称为帧。
在物理层(第1层)中,网络容器被转换为比特,以便通过物理连接介质传输。
图11.4 显示了应用于各层网络容器的标签。
图11.4 OSI模型基于层的网络容器名称
11.1.4 OSI 模型层次
1. 应用层
应用层(第7层)负责将用户应用程序、网络服务或操作系统与协议栈相连接。
软件应用程序不在此层内;相反,这里可找到传输文件、交换消息、连接到远程终端等所需的协议和服务。
2. 表示层
表示层(第6层)负责将数据转换为遵循OSI模型的任何系统都能理解的格式。
它将通用或标准化的结构和格式规则强加在数据之上。表示层还负责加密和压缩。
在TCP/IP网络上,没有实际的表示层。
目前不需要为网络传输重新格式化数据,协议栈压缩仅与一些加密操作协同进行。
与网络通信相关的加密至少可以在五个位置进行:
•预先加密,软件在将数据发送到应用层之前进行加密。
•传输层加密通常由TLS执行。
•VPN加密,可发生在第2、第3或第4层,具体取决于使用的VPN技术(例如L2TP、IPsec或OpenVPN) 。
•数据链路层的无线加密。
•物理层的批量加密(由网卡外部的设备提供)。
3. 会话层
会话层(第5层)负责建立、维护和终止两台计算机之间的通信会话。
它管理对话规则或对话控制(单工、半双工、全双工),建立分组和恢复的检查点,并重传自上次验证检查点以来失败或丢失的PDU。
在TCP/IP网络上,没有实际的会话层。
会话层功能由TCP在传输层处理,或者使用UDP时根本不处理。
—————————————————————————————————————————
提示:
通信会话三种约束或控制模式:
•单工单向通信。
•半双工双向通信,但一次只能向一个方向发送数据。
•全双工双向通信,可以同时向两个方向发送数据。
—————————————————————————————————————————
4. 传输层
传输层(第4层)负责管理连接的完整性并控制会话。
传输层在节点(也称为设备)之间建立通信连接并定义会话规则。
会话规则指定每个段可包含多少数据,如何验证消息的完整性,以及如何确定数据是否已丢失。
会话规则是通过握手过程建立的(请参考后面的“传输层协议”一节,了解TCP的SYN/ACK三次握手)。
传输层在两个设备之间建立逻辑连接,并提供端到端传输服务以确保数据传输。
该层包括用于分段、排序、错误检查、控制数据流、纠错、多路复用和网络服务优化的机制。
以下协议在传输层中运行:
•传输控制协议(Transmission Control Protocol,TCP)
•用户数据报协议(User Datagram Protocol,UDP)
•传输层安全(Transport Layer Security,TLS)
※(TLS)最好的保护了敏感信息泄露
5. 网络层
网络层(第3层)负责逻辑寻址和执行路由。
当地址由软件或协议分配和使用,而不是由硬件提供和控制时,就会发生逻辑寻址。
数据包的包头包括,源和目标IP地址。
网络层负责提供路由或传递导航信息,但它不负责验证信息是否传递成功。
网络层还管理错误检测和节点数据流量(即流量控制)。
※
—————————————————————————————————————————
非IP传统协议
非IP协议是在OSI网络层(第3层)用来替代IP的协议。
随着TCP/IP的主导和成功,非IP协议(即传统协议)已成为专用网络的范畴,例如IPX、AppleTallc和NetBEUI。
非IP协议很少见,因此大多数防火墙无法对这些协议执行数据包标头、地址或有效载荷内容过滤。
但非IP协议可封装在IP中,以便通过互联网进行通信,因此传统协议而要被阻止。
—————————————————————————————————————————
路由器是在第3层运行的基本网络硬件设备。
路由器根据速率、跳数、首选项等确定数据包传输的最佳逻辑路径。
路由器使用目标IP地址来指导数据包的传输。
—————————————————————————————————————————
路由协议
内部路由协议有两大类:距离矢量和链路状态。
1.距离矢量路由协议,维护目标网络的列表,以及以跳数度量的方向和距离度量(即到达目的地的路由器的数量)。
2.链路状态路由协议,收集路由特性,将速率、延迟、误码率和实际使用的资金成本等信息制成表格,以做出下一跳的路由决策。
距离矢量路由协议的常见示例:RIP和IGRP
链路状态路由协议的常见示例:OSPF 和IS-IS
还有一种常用的高级距离向量路由协议(advanced distance vector routing protocol)一一增强型内部网关路由协议(EIGRP),它替代了IGRP。
外部路由协议的一种主要类型被称为路径向量路由协议。
路径向量路由协议,根据到目的地的整个剩余路径(即向量)做出下一跳决策。
这与内部路由协议不同,内部路由协议仅根据相关的信息来决定下一跳。
内部路由协议是短视的,而外部路由协议是有远见的。
路径向量协议的主要示例:边界网关协议(BGP)。
通过配置路由器,使其仅接受来自其他经过身份认证的路由器的路由更新,可以强制执行路由安全。
对路由器的管理访问在物理和逻辑上应该仅限于特定的授权实体。同样重要的是保持路由器固件更新。
—————————————————————————————————————————
6. 数据链路层
数据链路层(第2层)负责将数据包格式化为传输格式。
正确格式由网络硬件、拓扑和技术决定,如以太网(IEEE 802.3)。
对数据链路层内的网络容器处理包括将源和目标硬件地址添加到帧的操作。
硬件地址是MAC地址,它是一个6字节(48位)的二进制地址,并以十六进制表示法编写(如00-13-02- lF-58-FS),也被称为物理地址、NIC地址和以太网地址。
地址的前3个字节(24 位)是组织唯一标识符(OUI), 表示网卡供应商或制造商。
OUI在电气和电子工程师协会(IEEE)注册,并控制其发行OUI可用于通过IEEE网站发现网卡的制造商。
最后3个字节(24 位)表示制造商分配给该接口的唯一编号。
一些制造商将信息编码到最后24位,代表制造商、型号和生产线的唯一值,因此,一些使用唯一NIC的设备(如移动设备、物联网设备和嵌入式系统)可以通过MAC地址进行识别。
在OSI模型的数据链路层(第2层的协议中,你应该熟悉地址解析协议(ARP)。
请参阅本章后面的“ARP 关注点”一节。
在第2层(数据链路层)运行的网络硬件设备:交换机和网桥。
这些设备支持基于MAC的流量路由。
交换机在一个端口上接收祯,并根据目标MAC地址将其发送到另一个端口。
MAC地址目的地用于确定帧是否通过网桥从一个网段传输到另一个网段。
7. 物理层
物理层(第1层)将帧转换为比特,以便通过物理连接介质进行传输;反之亦然,以便接收通信。
在第1层(物理层)运行的网络硬件设备:NIC、集线器、中继器、集中器和放大器。
这些设备执行基于硬件的信号操作,例如从一个连接端口向所有其他端口(集线器)发送信号或放大信号,以支持更大的传输距离(中继器)。
11.2 TCP/IP 模型
TCP/IP模型(也称为DARPA模型或DOD模型)仅由四层组成,而OSI参考模型则为七层。
TCP/IP模型的四个层:
■ 应用层(也称为进程)
■ 传输层(也称为主机到主机)
■ 互联网层(也称为网络互联)
■ 链路层(尽管使用网络接口,有时也使用网络访问)。
图11.5 显示了它们与OSI模型的七个层的对比。TCP/IP协议套件的开发早于OSI参考模型的创建。
图11.5 将OSI模型与TCP/IP模型进行比较+
—————————————————————————————————————————
提示:
TCP/IP模型层名称和OSI模型层名称可互换使用,因此必须了解在各种上下文中如何选用模型。
除非另有说明,否则始终假设以OSI模型为基础,因为它是使用最广泛的网络参考模型。
—————————————————————————————————————————
TCP/IP模型直接源自TCP/IP协议套件或许多单独协议组成的协议栈。
TCP/IP是一种基于开放标准的独立于平台的协议。
TCP/IP几乎支持所有操作系统,但会消耗大量系统资源并且相对容易被入侵,因为它的设计初衷是易用性和互操作性,而不是安全性。
TCP/IP的漏洞很多。
如果在各种操作系统中不正确地实现TCP/IP堆栈,将容易受到以下攻击:
■ 缓冲区溢出攻击
■ SYN洪水攻击
■ 各种拒绝服务(DoS)攻击
■ 碎片攻击
■ 超大数据包攻击
■ 欺骗攻击
■ 中间人攻击(路径攻击)
■ 劫持攻击
■ 编码错误攻击
TCP/IP(以及大多数协议)也会受到监视或嗅探等被动攻击。
11.3 网络流量分析
网络流量分析是管理网络的基本功能。
它可以用于跟踪恶意通信、检测错误或解决传输问题。
然而,网络窃听也可能被用于违反通信保密性和/或充当后续攻击的信息收集阶段。
协议分析器是用于检查网络流量内容的工具。
协议分析器可以是安装在典型主机系统上的专用硬件设备或软件。
协议分析器是一种帧/数据包捕获工具,可以收集网络流量并将其存储在内存或存储设备中。
捕获帧或数据包后,可以使用复杂的自动化工具和脚本或手动对其进行分析。
协议分析器也可被称为嗅探器、网络评估器、网络分析器、流量监视器或包捕获实体。
嗅探器通常是一种数据包(或帧)捕获工具,而协议分析器能够解码和解释数据包/帧内容。
协议分析器通常将NIC置于混杂模式,以查看和捕获本地网段上的所有以太网帧。
在混杂模式下,NIC忽略以太网帧的目标MAC地址,并收集到达接口的每个帧。
协议分析器可以检查单个帧,直至二进制级别。
大多数分析器或嗅探器会自动将标题的内容解析为可扩展的输出行形式。
在标题详细信息中可以很容易地看到任何配置或设置。
数据包的有效负载通常以十六进制和ASCII格式显示。
协议分析器通常同时提供捕获过滤器和显示过滤器。
捕获过滤器是一组规则,用于控制哪些帧被保存到捕获文件或缓冲区中,以及哪些帧被丢弃。
显示过滤器仅显示数据包文件或缓冲区中符合要求的帧。
协议分析器非常多样,从简单的原始帧/数据包捕获工具,到全自动分析引擎,各有不同。
■开源(如Wireshark)
■商业(如Omnipeek、NetWitness和NetScout)选项。
11.4 通用应用层协议
OSI模型的应用层存在许多特定于应用或服务的协议。
■ Telnet,TCP 23端口
是一个终端仿真网络应用程序,支持远程连接以执行命令和运行应用程序,但不支持文件传输。
不应使用Telnet, 而应该用SSH替代。
■ FTP,TCP 20端口(活动数据连接)/短暂(被动数据连接)和21(控制连接)端口
是一个网络应用程序,支持需要匿名或特定身份认证的文件传输。不应使用FTP,而应该用SFTP或FTPS替代。
■ TFTP,UDP 69端口(Trivial File Transfer Protocol,简单文件传输协议)
是一个支持不需要身份认证的文件传输的网络应用程序。
用于承载网络设各配置文件,并可支持多播。不应使用TFTP。
■ SMTP,TCP 25端口(简单邮件传输协议)
是一种用于将电子邮件从客户端传输到电子邮件服务器以及从一个电子邮件服务器传输到另一个电子邮件服务器的协议。
仅在使用TLS加密创建SMTPS时使用。
■ POP3,TCP 110端口(Post Office Protocol - Version 3”,即“邮局协议版本3”)
是一种用于将电子邮件从电子邮件服务器上的收件箱中拉到电子邮件客户端的协议(即客户端存档)。
仅在使用TLS加密创建POPS时使用。
■ IMAP(IMAP4),TCP 143端口
是一种用于将电子邮件从电子邮件服务器上的收件箱拉到电子邮件客户端的协议。
IMAP能仅从电子邮件服务器中检索标头并直接从电子邮件服务器删除邮件(即服务器存档)。
仅在使用TLS加密创建IMAPS时使用。
■ DHCP,UDP 67(服务器)端口和68(客户端)端口
用于集中控制启动时为系统分配的TCP/IP 配置设置。
■ HTTP,TCP 80端口
是用明文将Web页面元素从Web服务器传输到Web浏览器的协议。
■ HTTPS,TCP 443 端口
是HTTP的TLS加密版本。(带TLS的HTTPS支持使用TCP 80端口,但仅用于服务器到服务器的通信。)
■ LPD,TCP 515端口
是一种网络服务,用于假脱机打印作业以及将打印作业发送到打印机。应封闭在VPN中使用。
■ X Window,TCP 6000~6063端口
是用于命令行操作系统的GUI API。应封闭在VPN中使用。
■ NFS,TCP 2049端口
是一种网络服务,用于支持不同系统之间的文件共享。应封闭在VPN中使用。
■ SNMP,UDP 161端口(用于陷阱消息的是UDP 162端口)
是一种网络服务,用于从中央监控服务器收集网络运行状况和状态信息。
仅SNMP v3是安全的。若要了解更多有关安全协议的示例,请参考后面的小节“安全通信协议”。
—————————————————————————————————————————
SNMPv3
SNMP是大多数网络设备和TCP/IP兼容主机支持的标准网络管理协议。
这些设备包括:路由器、交换机、无线接入点(WAP)、防火墙、VPN设备和打印机等。
从管理控制台,你可使用SNMP与各种网络设备进行交互,以获取状态信息、性能数据、统计信息和配置详细信息。
某些设备支持通过SNMP修改配置设置。
早期版本的SNMP将明文传输的社区名用于身份认证。
社区名表示网络设备集合。
原始默认社区名是公共和私有的。
最新版本的SNMP允许加密通信,以及强大的身份认证因素。
SNMP代理(即网络设备)使用UDP 161端口接收请求,管理控制台使用UDP 162端口接收响应和通知(也被称为Trap消息)。
当受监视的系统上发生事件并触发阈值时,Trap消息会通知管理控制台。
—————————————————————————————————————————
11.5 传输层协议
如果连接是通过传输层建立的,那么该过程是利用端口实现的。
端口号是16位二进制数,因此端口总数为2^16或65536,编号为0到65535。
端口允许单个IP地址同时支持多个通信,每个通信使用不同的端口号(即通过IP多路复用)。
IP地址和端口号的组合被称为套接字。
■ 这些端口中的前1024 个(0~1023)被称为众所周知的端口或服务端口。
这些端口被保留,以供服务器独占使用。
■ 端口1024-49151被称为已注册的软件端口。
这些端口具有一个或多个专门在IANA(互联网编号分配机构)网站上注册的网络软件产品。
■ 端口49152-65535被称为随机、动态或临时端口,它们通常被客户端随机地临时用作源端口。
■ 但是,大多数OS允许1024以后的任何端口被用作动态客户端源端口,前提是该端口尚未在本地系统上使用。
TCP/IP的两个主要传输层协议是TCP和UDP。
TCP是一种面向连接的全双工协议,而UDP是一种无连接单工协议。
TCP协议,支持全双工通信,面向连接,并采用可靠的会话。
TCP是面向连接的,因为它在两个系统之间使用握手过程来建立通信会话。
三次握手过程(图11.6) 如下:
(1) 客户端将SYN(同步)标记的数据包发送到服务器。
(2) 服务器以SYN/ACK(同步和确认)标记的数据包响应客户瑞。
(3) 客户端以ACK(确认)标记的数据包响应服务器。
断开TCP会话的方法:
■ 最常见的方法是使用FIN(完成)标记的数据包来优雅地终止TCP会话。
■ 第二种方法是使用RST(重置)标记的数据包,这会导致会话立即或突然终止。
图11.6 TCP 的二次握手
当需要数据传输时,应采用TCP。
在未接收到传输窗口所有分组的情况下,不发送确认。超时后,发送者将再次发送整个传输窗口的数据包。
TCP能保证传输,因为它将继续重新发送任何未确认的段,直至其收到确认或收到RST, 本地应用程序终止网络通信尝试,或系统断电。
UDP协议,也在OSI模型的第4层(传输层)上运行,是一种无连接的“尽力而为"的通信协议。
它不提供错误检测或纠正,不使用排序,不使用流量控制机制,不使用预先建立的会话,因而被认为是不可靠的。
UDP具有非常低的开销,因此可以快速传输数据。但是,只有在传输不重要的数据时才应使用UDP。
UDP通常用于音频或视频的实时或流通信。
11.6 域名系统
应当熟悉三种编号和寻址概念。
•域名
域名或计算机名是在IP地址上分配的人性化的“临时“约定。
•IP地址
IP地址是在MAC地址上分配的“临时“逻辑地址。
•MAC地址
MAC地址或硬件地址是”永久”物理地址。
—————————————————————————————————————————
“永久”和“临时“地址
这两个词其实不完全准确。
MAC地址,被设计为永久物理地址,但通常可以更改。当NIC支持更改时,硬件上会发生更改。
当操作系统支持更改时,更改仅发生在内存中,但看起来像是对所有其他网络实体的硬件更改(称为MAC欺骗)。
IP地址,是临时的,因为它是个逻辑地址,可随时通过DHCP或管理员进行更改。但在一些情况下,系统会静态分配IP地址。
计算机名或DNS名,可能看起来是永久性的,但它们是逻辑的,因此可由管理员进行修改。
—————————————————————————————————————————
DNS将人性化的域名解析为对应的IP地址。
然后,ARP(见后面的“ARP关注点”一节)将IP地址解析为对应的MAC地址。
如果域文件中定义了PTR(即指针)记录,那么,还可通过DNS反向查找将IP地址解析为对应的域名。
IP地址可静态分配或通过DHCP动态分配。
DNS是公共和专用网络中使用的分层命名方案。
DNS将IP地址和人性化的完全限定域名(FQDN)链接在一起。
FQDN包含三个主要部分:
•顶级域名(TLD)——www.google.com 中的com
•注册域名——www.google.com 中的google
•子域或主机名——www.google.com 中的WWW
顶级域名可以是任意数量的官方选项,包括:
■ 最初的七个顶级域名中的六个——com、org、edu、mil、gov和net,
■ 许多新的顶级域名,如info, museum、telephone、mobi、biz等。
■ 还有两字母的国家/地区的变化,被称为国家/地区代码。
第七个初始TLD是int(国际的);国家/地区代码用两个字母表示。
域名必须在任意数量的已批准域名注册商之一正式注册,例如Network Solutions或者IONOS。
FQDN最左边的部分可以是单个主机名,如www、ftp、blog、image等,
或多节子域名称,如serverl.group3. bldg5.myexamplecompany.com。
- FQDN的总长不能超过253个字符(包括点)。
- 任何单个部分不能超过63个字符。
- FQDN只能包含字母、数字和连字符。
- TLD右侧有一个点(通常不显示),表示整个DNS命名空间的根。
每个注册的域名都有一个指定的权威名称服务器。
主要的权威名称服务器托管域的可编辑的原始区域文件。
辅助的权威名称服务器可用于托管区域文件的只读副本。
区域文件是资源记录的集合或有关特定域的详细信息。
有许多可能的资源记录,例如,将FQDN链接到IPv4地址的记录和将FQDN链接到IPv6地址的AAAA记录。
最初,DNS由HOSTS文件的静态本地文件处理。
HOSTS文件包含域名及其关联IP地址的固定引用。
此文件现在仍然存在于大多数支持TCP/IP的计算机上,但动态DNS查询系统已经基本取代它。
管理员或黑客可以向HOSTS文件添加内容。
当客户端软件指向FQDN时,解析过程首先检查本地DNS缓存。
DNS缓存包括来自本地HOSTS文件的预加载内容以及DNS查询结果(尚未超时)。
如果所需答案不在缓存中,则DNS查询被发送到本地IP配置中显示的DNS服务器。
解析查询过程的剩余环节既有趣又复杂,但大多数与(Isc)2 CISSP考试无关。
DNS通过TCP和UDP端口53运行。
TCP端口53用于区域传输。
这些是DNS服务器之间的区域文件交换,用于特殊手动查询,或响应超过512字节的情形。
UDP端口53用于大多数典型的DNS查询。
域名系统安全扩展(Domain Name System Security Extensions, DNSSEC)是对现有DNS基础结构的安全性改进。
DNSSEC的主要功能是在DNS操作期间在设备之间提供相互验证和过程加密。
DNSSEC已在DNS系统的重要部分实施。
一旦完全实施,DNSSEC将显著减少以服务器为中心的DNS滥用,例如:域文件中毒和DNS缓存中毒。
但是,DNSSEC仅适用于DNS服务器,而不适用于对DNS服务器执行查询的系统(如客户端)。
对于非DNS服务器(主要是客户端设备),尤其是在使用互联网时,应该考虑通过HTTPS(DoH)使用DNS。
此系统与受TLS保护的HTTP的DNS服务器创建加密会话,然后将该会话用作VPN的一种形式,以保护DNS查询和响应。
2020年后期对DoH的增强是隐性DoH(ODoH)。
ODoH在客户端和DNS解析程序之间添加DNS代理,以便将客户端的身份与DNS解析程序隔离。
因此,ODoH为DNS查询提供匿名性和隐私保护。
—————————————————————————————————————————
提示:
若要深入讨论DNS的操作和已知问题,请参阅“KatninskyDNS漏洞图解指南”。
—————————————————————————————————————————
11.6.1 DNS中毒
DNS中毒是伪造客户端使用的DNS信息以到达所需系统的行为。它可以通过多种方式发生。
每当客户端需要将DNS名称解析为IP地址时,它可能经历以下过程:
(1) 检查本地缓存(包括HOSTS文件中的内容)。
(2) 将DNS查询发送到已知的DNS服务器。
(3) 将广播查询发送到任何可能的本地子网DNS服务器(此步骤未得到广泛支持)。
如果客户端在上述三个步骤都没有解析到对应的IP,则解析失败,无法发送通信内容。
有许多方法可以攻击或利用DNS, 其中大多数方法用于返回错误结果。
(1)流氓DNS服务器
流氓DNS服务器可侦听网络流量以查找与目标站点相关的任何DNS查询或特定DNS杳询。
然后,流氓DNS服务器使用错误的IP信息向客户端发送DNS响应。
一旦客户端收到来自流氓DNS服务器的响应,客户端就会关闭DNS查询会话,这会导致真实DNS服务器的响应被丢弃并作为会话外数据包被忽略。
DNS查询未经过身份认证,但它们包含一个16位的值,该值被称为查询ID(Query ID,QID)。
DNS响应必须包含与要接受的查询相同的QID。
因此,流氓DNS服务器必须将请求QID纳入虚假回复中。
(2)执行DNS缓存中毒
DNS中毒涉及攻击DNS服务器并将不正确的信息放入域文件或缓存中的行为。
■针对权威DNS服务器 的攻击旨在更改主权威DNS服务器上域文件中FQDN的主记录。
这会导致真正的DNS服务器将错误数据发送回客户端。
然而,针对权威DNS服务器的攻击通常很快就会被注意到,因此很少导致广泛的攻击。
因此,大多数攻击者将重点放在缓存DNS服务器上。
■缓存DNS服务器 是用于缓存来自其他DNS服务器的DNS信息的DNS系统。
存储在缓存DNS服务器上的内容不受全球安全社区的监控,而只受本地运营商的监控。
因此,针对缓存DNS服务器的攻击可能会在很长一段时间内不经通知就发生,这种变化被称为DNS缓存中毒。
尽管这两种攻击都集中在DNS服务器上,但它们最终会影响客户端。
一旦客户端执行了动态DNS解析,从权威DNS服务器或缓存DNS服务器接收的信息将临时存储在客户端的本地DNS缓存中。
如果该信息为假,则客户端的DNS缓存已中毒。
(3)DNS域欺骗(DNS Pharming)
域欺骗是将有效网站的URL或IP地址恶意重定向到假网站的行为。
域欺骗通常通过修改系统上的本地HOSTS文件或通过毒化或欺骗DNS解析来实现。
(4)改变HOSTS文件
通过在HOSTS文件中放置虚假DNS数据来修改客户端上的HOSTS文件的行为会将用户重定向到错误位置。
如果攻击者能够在HOSTS文件中植入错误信息,则当系统引导HOSTS文件的内容时,这些信息将被读入内存,并在内存中占据优先地位。
这种攻击是有效的,但也具有很强的针对性。它只影响本地HOSTS文件损坏的单个系统。
如果攻击者希望造成更广泛的伤害,则应采用其他方法,那样会更有效。
(5)破坏IP配置
破坏IP配置的行为可能导致客户端具有错误的DNS服务器定义(即DNS查找地址更改)。
DNS服务器地址通常通过DHCP被分配给客户端,也可以被静态分配。
通过破坏DHCP或脚本,可以执行更改DNS服务器中客户端查找地址的攻击。
(6)DNS查询欺骗
当黑客能够窃听客户端对DNS服务器的查询时,就会发生DNS查询欺骗攻击。
然后,攻击者发回带有虚假信息的回复。为使此操作成功,错误回复必须包含正确克隆的查询QID。
(7)使用代理伪造
虽然代理伪造攻击严格来说不是DNS问题,但如果客户端必须解析代理的域名才能使用代理,则可以通过DNS来实施代理伪造攻击。
攻击可能会修改本地配置、配置脚本或路由表,以将通信重定向到错误的代理。
此方法仅适用于Web通信(或使用代理的其他服务或协议)。
恶意代理服务器可修改流量包,以将请求重新定向到黑客想要的任何站点。
—————————————————————————————————————————
提示:
可以使用DNS滥用(如DNS缓存中毒)执行路径攻击(也称为中间人攻击MITM)。
一旦客户端接收到来自DNS的响应,该响应将被缓存以供将来使用。
如果可以将错误信息输入DNS缓存,则可非常轻易地将通信错误地定向。
有关此类攻击的更多信息,请参见第17章。
—————————————————————————————————————————
DNS中毒的防御措施
虽然有许多DNS中毒方法,但你可采取一些基本的安全措施,从而极大地降低其威胁程度。
• 限制从内部DNS服务器到外部DNS服务器的区域传输。
这是通过阻止入站TCP端口53(区域传输请求)和UDP端口53(查询)来实现的。
• 要求内部客户端通过内部DNS解析所有域名。
这将要求你阻止出站UDP端口53 (用于查询),同时保持打开的出站TCP端口53 (用于区域传输)。
• 限制外部DNS服务器。内部DNS服务器从这些外部DNS服务器拉取区域传输。
• 部署网络入侵检测系统(NIDS) 以监视异常DNS流量。
• 正确加固专用网络中的所有DNS、服务器和客户端系统。
• 使用DNSSEC保护DNS基础设施。
• 在所有支持的客户端上使用DoH或ODoH 。
没有简单的补丁或更新可以阻止这些针对客户端的攻击。
这是因为这些攻击利用了各种协议、服务和应用程序中内置的正常和适当的机制。
因此,防御多为探测性和预防性的。
• 安装HIDS和NIDS工具以监控这些类型的滥用。
• 定期查看DNS和DHCP系统的日志,以及本地客户端系统日志,还有防火墙、交换机和路由器日志,以查找异常或可疑事件的条目。
• 组织应使用拆分DNS系统(也被称为分裂地平线DNS、分割视图DNS和拆分大脑DNS) 。
拆分DNS,部署供公共使用的DNS服务器和供内部使用的独立DNS 服务器。
公共DNS,服务器上域文件中的所有数据都可由公众通过查询或探查进行访问。
内部DNS,仅供内部使用,只有内部系统被授予与内部DNS 服务器交互的权限。
• 通过阻止TCP和UDP的入站端口53,可禁止外部人员访问内部DNS服务器。
TCP53用于区域传输(包括大多数DNS服务器到DNS服务器的通信),UDP 53用于查询(任何向DNS服务器发送查询的非DNS系统)。
• 可对内部系统进行配置,使其仅与内部DNS服务器交互,也可允许它们向外部DNS服务器发送查询(这要求防火墙是一个状态检查防火墙,其配置允许响应从已批准的出站查询返回到内部系统)。
• 另一个DNS防御机制是DNS陷坑。
DNS陷坑,是虚假测量系统(又名陷坑服务器、互联网陷坑和DNS黑洞)的具体示例。
这种技术被有效地用于防御DNS欺骗。
■ DNS陷坑试图对来自恶意软件(如机器人)的DNS查询提供错误晌应,以阻止访问命令,并防止系统被控制。
■ 它还可用来阻止用户访问已知的恶意或钓鱼网站。
因此,DNS陷坑可用于恶意和善意/调查/防御目的。
11.6.2 域名劫持
域名劫持或域名盗窃,是在未经所有者授权的情况下更改域名注册的恶意行为。
实现方式:通过窃取所有者的登录凭证、使用XSRF、会话劫持、路径/MITM攻击或利用域名注册商系统中的缺陷。
例子:2017年9月发生的Fox-IT.com域名被盗事件。
有时,如果另一个人在原始所有者的注册过期后立即注册域名,这种行为也被称为域名劫持,但事实并非如此。
这可能是一种不道德的做法,但它并非真正的黑客攻击。它正是利用原始所有者未能自动续订域名的漏洞实现的。
如果原始所有者因未能保持注册而丢失域名,那么他通常没有追索权,而只能联系新所有者并请求重新获得控制权。
如果一个组织失去域名控制权并且由其他人接管控制权,这对组织及其客户和访问者来说都可能是一个毁灭性事件。
新FQDN所有者可能托管完全不同的内容或上一个网站的虚假副本。
后续活动可能欺骗访问者,类似于网络钓鱼攻击,可能会提取和收集个人身份信息(PII)。
防止域名劫持的最佳措施:在登录域注册器时使用强多因素身份认证。
为了防止域名注册失效,请设置自动续费,并在续费日期前一周再次检查付款方式。
误植域名攻击(typosquatting)
当用户错误输入预期域名或IP地址时,这种错误如果被攻击者利用,则总味着发生了误植域名攻击。
攻击者预测URL可能的输入错误,然后注册这些域名,将流量引导到自己的网站。
用于误植域名的变体包括:
- 常见的拼写错误(如googel.com)
- 名称或单词上的键入错误(如gooogle.com)
- 变体(如googles.com 中的复数)
- 不同的顶级域(TLD) 如google.edu等
同形词攻击
另一个DNS、地址或超链接问题是同形词攻击。
这些攻击利用字符集的相似性来注册肉眼看起来合法的虚假国际域名(IDN) 。
例如,在许多字体中,西里尔文的一些字母看起来像拉丁字符;
例如,拉丁语中的l(即小写L)看起来像帕洛卡西里尔字母。
因此,apple.com和paypal.com 的域名看起来可能是拉丁字符,但实际上可能包含西里尔字符,解析后会将你指向不同的站点。
URL劫持
URL劫持指的是显示其他链接或广告的行为。
该链接或广告看起来像知名产品、服务或网站的链接或广告,但单击后会将用户重定向到其他位置、服务或产品。
这可以通过发布站点和页面、利用搜索引擎优化(SEO)来实现,或者通过使用广告软件来取代合法广告和链接,从而使其导向其他或恶意的位置。
点击劫持
点击劫持攻击将用户在网页上的点击或选择重定向到另一个目标(通常是恶意的),而不是其预期位置。
点击劫持的手段之一是在显示的页面上添加不可见或隐藏的覆盖、框架或图像。
用户看到原始页面,但任何鼠标点击或选择都将被页面上浮动的帧捕获并被重定向到恶意目标。
11.7 互联网协议网络
TCP/IP协议套件中的另一个重要协议在OSI模型的网络层运行,即IP。IP为数据包提供路由寻址。
这条路线成为全球互联网通信的基础,因为它提供了一种身份识别手段并规定了传输路径。
与UDP类似,IP是无连接的,因而是一种不可靠的通信服务。
IP不保证数据包一定能被传送或数据包以正确顺序传送,也不保证数据包只被传送一次。
然而,它的设计目的是尽最大努力找到通往目的地的通道或路由,而不管网络结构是否已损坏。
因此,你必须在IP上使用TCP来建立可靠和受控的通信会话。
11.7.1 IPv4与IPv6
IPv4是世界上使用最广泛的互联网协议版本。但是,IPv6版本正快速用于私人和公共网络。
IPv4使用32位寻址方案,而IPv6使用128位寻址。IPv6提供IPv4中没有的许多新功能。
IPv6的一些新功能包括:作用域地址、自动配置和服务质量(QoS)优先级值。
通过分区地址,管理员可进行分组,然后阻止或允许访问网络服务,如文件服务器或打印。
自动配置不再需要DHCP和NAT。QoS优先级值允许基于优先级内容的流量管理。
另外,IPsec内置于IPv6中,但它是IPv4的附加组件。
—————————————————————————————————————————
提示:
IPv4的服务类型(ToS)是与IPv6的QoS对等的概念。然而,它未被使用,并被后来的规范转换为差异服务(DS)。
DS字段提供了各种可定义的特征,用于管理业务流。
然而,它仍然没有被执行这种管理的网络设备广泛使用或支持。
IPv6网络包括更多的通用支持,并实际提供基于IPv6报头数值的流量优先级服务。
—————————————————————————————————————————
2000年以后发布的大多数操作系统都支持IPv6,无论是系统自带的还是通过额外的程序实现的。
IPv6已被逐渐推广使用。大多数IPv6网络目前位于私人网络中,例如大公司、实验室和大学。
若欲从谷歌的角度来了解互联网上IPv4到IPv6的转换状态,请参阅IPv6统计信息。
向IPv6的过渡或迁移引起了几个安全问题。
■ 一个问题是,随着128位地址空间的增大,攻击者可将更多的地址用作源地址;
因此,IP过滤和阻止列表的效果会降低,因为攻击者可以使用不同的地址通过过滤器。
■ 第二个问题是,IPv6的安全部署要求在生产网络上启用协议之前,必须对所有安全筛选和监视产品进行升级,以完全支持IPv6。
否则,IPv6将充当一个隐蔽通道,不受监控和过滤。
■ IPv6的第三个问题是NAT的丢失或缺乏(见第12 章)。
因为公共IP地址的数量正在减少,IPv4要求使用NAT来支持越来越多的客户端系统。
在IPv6中,地址的数量是天文数字(340 282 366 920 938 463 463 374 607 431768211 456),因此NAT不仅不是必需的,而且规范中未提及。
有人认为这会降低安全性;现实是,这在很大程度上降低了隐秘性。
被认为来自NAT的真正安全性实际上是由状态检查防火墙特意提供的,大多数网络已经在使用这种附带NAT的防火墙。
因为系统本地分配的IP地址没有被NAT转换为公共地址,因此会降低或失去隐秘性。
未来随着IPv6地址被固定到NIC, 源系统的身份可能会变得难以隐藏,无论其是攻击者,还是需要隐私的或需要不被追踪的在线交易的个人(如吹哨者或因家暴寻求帮助的人)。
使用以下三种方法中的一个或多个,即可在同一网络上使用IPv6 和IPv4: 双堆栈、隧道或NAT-PT。
双堆栈,意味着让系统同时运行IPv4和IPv6, 并为每个会话使用适当的协议。
隧道,允许大多数系统操作IPv4 或IPv6的单个堆栈,并使用封装隧道访问其他协议的系统。
网络地址及协议转换(NAT-PT)(RFC-2766),可用于IPv4和IPv6网段之间的转换,类似于NAT在内部和外部地址之间的转换方式。
—————————————————————————————————————————
提示:
IPv4和IPv6都有一个头字段,用于控制或限制无限传输。
IPv4的生存时间(TTL)字段和IPv6的跳数限制字段由路由器递减,直至达到零(0) 。
一旦发生这种情况,数据包将被丢弃,并将ICMP类型11超时错误消息发送回源站。
—————————————————————————————————————————
11.7.2 IP分类
表11.1和表11.2概述了类和默认子网的关键细节。
完整的A类子网支持16777214个主机,完整的B类子网支持65534个主机,完整的C类子网支持254个主机。
D类用于多播,E类供将来使用。
表11.1 IP分类
注意,为环回地址留出整个A类网络的127个地址,虽然此目的实际上只需要一个地址。
全0的A类网络被定义为网络黑洞,路由到该网络的流量会被丢弃。
—————————————————————————————————————————
提示:
IPv4的环回地址是A类子网(127.0.0. l-127.255.255.254) 中的任何地址,即使通常只使用127.0.0.1这一地址。
当为环回配置接口时,未定义子网掩码;默认情况下,它将使用255.255.255.255, 不过有些人会将其记录为127.0.0.0/8。
还要注意,在IPV4下,子网的第一个地址保留为网段地址(即127.0.0.0) ,最后一个地址保留为定向广播地址(即127.255.255.255) ,因此不能被直接用作主机地址(或环回地址)。
IPv6环回地址不是特定地址,而是一个符号:::1/128。
—————————————————————————————————————————
表11. 2 IP 类的默认子网掩码
类似于IPv4地址的基于类的原始分组不再被严格遵守。
相反,人们采用基于可变长度子网掩码(VLSM)和无类别域间路由(CIDR)的更灵活的系统。
CIDR使用掩码位(而不是完整的点分十进制)表示子网掩码。
例如,掩码为255.255.0.0的网段172.16.0.0可用CIDR符号表示为172.16.0.0/16。
相对于传统子网掩码技术,CIDR的一个显著优势是能将多个不连续的地址组合成一个子网。
例如,可将多个C类子网组合成一个更大的子网分组。
11.7.3 ICMP
ICMP用于确定网络或特定链路的运行状况。
ICMP可用于ping、traceroute、pathping等网络管理工具。
ping实用程序使用ICMP回显包并将它们从远程系统反馈回来。
可使用ping来确定:
•远程系统是否在线
•远程系统是否正在及时响应
•中间系统是否支持通信
•中间系统正在通信的性能效率级别
ping实用程序包含一个重定向函数,该函数允许将回显响应发送到与源系统不同的目的地。
不幸的是,ICMP的功能常用于各种形式的基于带宽的DoS攻击,例如:死亡之ping、Smurf攻击和ping洪水攻击。
这一事实影响了网络处理ICMP流量的方式,导致许多网络限制了ICMP的使用,或者至少限制了其吞吐量。
11.7.4 IGMP
IGMP允许系统支持多播。多播将数据传输到多个特定接收者,RFC1112讨论了执行IGMP多播的要求。
IGMP用于管理主机的动态多播组成员资格。
对于IGMP, 如果和预期接收者之间存在不同路径,则单个初始信号在路由器处复用。
多播可以通过简单文件传输协议(TFTP)系统来组织或缓存要发送给多个收件人的内容。
11.8 ARP关注点
地址解析协议(Address Resolution Protocol,缩写ARP)
ARP用于将IP地址(用于逻辑寻址的32位二进制数)解析为MAC地址(用于物理寻址的48位二进制数)。
网段上的流量(例如通过交换机从客户端到默认的网关,即路由器)使用MAC地址从源系统定向到其目标系统。
ARP承载以太网帧的有效载荷,是一个从属的第2层协议。
ARP使用缓存和广播来执行其操作。
第一步,是检查本地ARP缓存。如果所需信息已存在于ARP 缓存中,则使用它。
如果ARP缓存不包含必要信息,则发送广播形式的ARP请求。
如果查询地址的所有者位于本地子网,则可使用ARP应答或响应估息进行响应。
如果不是,系统将默认使用其默认网关的MAC地址来转发。
然后,默认网关(或者路巾器)将需要执行自己的ARP过程。
攻击者若在ARP缓存中插入虚假信息,可导致缓存中毒,该技术被称为ARP滥用。
• ARP缓存中毒或ARP欺骗是由以伪造的回复进行响应的攻击者引起的。
每次收到ARP回复时,ARP缓存都会更新。
ARP缓存的动态内容,无论是中毒的还是合法的,都将保留在缓存中,直到出现超时(通常不到10分钟)。
一旦IP地址到MAC地址的映射在缓存中被清除,攻击者就有机会在客户端重新执行ARP广播查询时毒害ARP缓存。
• 另一种形式的ARP中毒使用无目的的或未经请求的ARP回复。
当系统在没有ARP查询提示的情况下宣布MAC地址到IP地址的映射时,就会发生这种情况。
无目的的ARP广播可以作为节点存在的通知发送,以更新由于IP地址或MAC地址变化而产生的ARP映射,
另外,当共享IP地址且可能共享相同MAC地址的冗余设备被使用时,定期发送无目的的ARP通知有助于确保可靠的故障切换。
• 第三种形式的ARP缓存中毒是静态ARP条目的创建。
这是通过ARP命令完成的,必须在本地完成。
不幸的是,这很容易通过在客户端上执行恶意脚本来实现。
但是,静态ARP条目在重新启动时不会留存。
防御方法:
• 针对基于ARP的攻击的最佳防御是:实施交换机上的端口安全。
交换机端口安全措施可以禁止与未知、未经授权的恶意设备之间的通信,并且可以确定哪个系统正在响应所有ARP查询,并阻止来自违规系统的ARP回复。
本地或软件防火墙、主机入侵检测和防御系统(HIDPS)或特定端点安全产品也可用于阻止未请求的ARP回复或通告。
检测ARP中毒的一个流行工具是arpwatch。
• 另一种防御措施是建立静态ARP条目。这可以用作攻击/滥用,也可以用作防御。
但不推荐这样做,因为它消除了系统适应不断变化的网络条件的灵活性,例如在设备进入和离开网络时自动更新。
一旦定义了静态ARP 条目,它将是“永久的“,因为它不会被任何ARP回复覆盖,但它不会在重新启动时保留(该功能被称为持久性)。
每当系统重新启动时,都需要在每个系统上精心编制引导或登录脚本,以重新创建静态条目。
11.9 安全通信协议
为特定应用程序的通信通道提供安全服务的协议被称为安全通信协议。例子包括:
• IPsec(Internet Protocol Security,IPsec)基于IP协议,使用公钥加密系统来提供加密、访问控制、不可否认性和消息验证。
IPsec主要用于虚拟专用网络(VPN),因此IPsec可以在传输或隧道模式下运行。
IPsec是IP安全扩展的标准,被用作IPv4的附加组件,并集成到IPv6中。
第12章将进一步讨论IPsec。
• Kerberos 为用户提供单点登录(SSO)解决方案,并为登录凭证提供保护。
Kerberos的最新实现是使用混合加密来提供可靠的身份认证保护。
Kerberos将在第14章中进一步讨论。
• SSH(Secure Shell,SSH)是端到端加密技术的一个很好的例子。
这种安全工具可用于加密许多明文应用程序(如rep、rlogin和rexec),或用作协议加密(如SFTP),也可用作传输模式VPN(即仅限主机到主机链路加密)。
SSH将在第12章中进一步讨论。
• 信令协议 是一种加密协议,为语音通信、视须会议和文本消息服务提供端到端加密。
信令协议是非联邦(nonfederated)协议,是名为“Signal" 的即时通信APP中的核心元素。
• 安全远程过程调用(Secure Remote Procedure Call,S-RPC)是用于跨网络服务通信的身份认证服务,旨在防止在远程系统上未经授权执行代码。
• 传输层安全(Transport Layer Security,TLS)是一种在OSI第4层运行的加密协议(加密TCP通信的有效载荷)。
它主要用于加密HTTPS等Web通信,也可加密应用层协议。
传输层安全取代了安全套接字层(SSL),后者在2015年被正式弃用。
TLS的特点包括如下几点。
• 支持跨不安全网络的安全客户端-服务器通信,同时防止篡改、欺骗和窃听。
• 支持单向身份认证。
• 支持使用数字证书进行双向身份认证。
• 通常应用于TCP包的基本有效载荷,使其能封装更高层协议有效载荷。
• 可用于加密用户数据报协议(UDP)和会话初始协议(SIP)连接。(SIP是与IP语音相关的协议。)
11.10 多层协议的含义
TCP/IP是一种多层协议。TCP/IP从其多层设计中获得了若干好处,这与它的封装机制有关。
例如,当通过典型的网络连接在Web服务器和Web浏览器之间通信时,HTTP会被封装在TCP中,后者被封装在IP中,而IP被封装在以太网中。
这可表述如下:
[Ethernet[IP [TCP [HTTP [Payload]]]]]
但这不是TCP/IP封装支持的程度,还可添加额外的封装层。
例如,如果向通信添加TLS加密,将在HTTP和TCP之间插入新的封装(从技术上讲,这会导致HTTPS,即HTTP的TLS加密形式):
[Ethernet [IP [TCP [HTTP [Payload]]]]]
这反过来可通过网络层加密(如IPsec)进一步封装:
[Ethernet [IPsec [IP [TCP [TLS [HTTP [Payload]]]]]]]
这是VPN的一个示例。
VPN将一个协议封装或隧穿到另一个协议中。
通常,封装协议对原始协议进行加密。有关VPN的更多信息,请参阅第12章。
但封装并不总是用于良性目的。
有许多隐蔽通道通信机制使用封装来隐藏或隔离另一个授权协议内的未授权协议。
例如,如果网络阻止使用FTP但允许使用HTTP, 则可使用HTTP隧道等工具来绕过此限制。
这可能导致如下的封装结构:
[Ethernet [IP [TCP [HTTP [FTP [Payload]]]]]]
通常,HTTP携带自己的与Web相关的有效负载,但若使用HTTP隧道工具,标准有效负载将被替代协议代替。
这种错误封装甚至可发生在协议栈中。例如,ICMP通常用于网络健康测试,而不用于一般通信。
然而,利用Loki等实用工具,ICMP被转换成支持TCP通信的隧道协议。
Loki的封装结构如下:
[Ethernet [IP [ICMP [TCP [HTTP [Payload]]]]]]
由无限封装支持引起的另一个值得关注的领域是在虚拟局域网(VLAN)之间跳跃的能力。
请参阅第12章关于VLAN 的内容。
多层协议具有以下优点:
•可在更高层使用各种协议。
•加密可包含在各个层中。
•支持复杂网络结构中的灵活性和弹性。
多层协议有一些缺点:
•允许隐蔽通道。
•可以绕过过滤器。
•逻辑上强加的网段边界可被超越。
————————————————————————————————————————
DNP3
DNP3(分布式网络协议3)主要用于电力和水利行业。
它用于支持数据采集系统和系统控制设备之间的通信。
这包括变电站计算机、远程终端(RTU, 由嵌入式微处理器控制的设备)、智能电子设备(IED)和SCADA主站(即控制中心)。
DNP3是一个开放的公共标准,具有多层协议,功能与TCP/IP类似,具有链路、传输和应用层。
————————————————————————————————————————
11.10.1 融合协议
融合协议是专业(或专有)协议与标准协议的结合,如那些源自TCP/IP套件的协议。
融合协议的主要好处是:
能使用现有的TCP/IP支持网络基础设施来托管特殊服务或专有服务,不需要独立部署备用网络硬件。
下面描述了融合协议的一些常见示例。
存储区域网络(Storage Area Network, SAN)
SAN是一个辅助网络(与基础通信网络不同),用于将各种存储设备整合、管理到一个网络可访问的存储容器中。
SAN通常用于增强网络存储设备,如硬盘驱动器、硬盘阵列、光盘机和磁带库,使它们在服务器上显示为本地存储。
SAN的运作方式是将数据存储信号封装或聚合到TCP/IP通信中,以实现分离存储和接近性。
SAN可能导致单点故障,因此需要进行冗余集成以保证可用性。
在一些实例中,SAN以不保留同一文件的副本,通过实施重复数据消除来节省空间。
但是如果保留的原件损坏,这可能会导致数据丢失。
以太网光纤通道(Fibre Channel over Ethernet, FCoE)
光纤通道是一种网络数据存储解决方案(SAN或NAS),允许高达128 Gbps的文件传输速率。
它在第2层运行,被设计用于光纤电缆;后来增加了对铜缆的支持,以提供更便宜的选择。
光纤通道通常需要自己的专用基础设施(单独电缆)。但可以利用FCoE通过现有网络基础架构支持它。
FCoE用于封装以太网网络上的光纤通道通信。它通常需要10 Gbps的以太网来支持光纤通道协议。
利用这项技术,光纤通道可作为网络层或OSI第3层协议运行,将IP替换为标准以太网网络的有效载荷。
FCIP进一步扩展了光纤通道信令的使用,不再需要指定网络速度。这类似于VoIP传输在SAN上。
多协议标签交换(Multiprotocol Label Switching, MPLS)
MPLS是一种高吞吐量的高性能网络技术。
它基于短路径标签(而不是更长的网络地址)来引导网络上的数据。
相比于比传统的基于IP的路由过程,这种技术节省了大量时间,但可能非常复杂。
此外,MPLS旨在通过封装处理各种协议。因此,网络不仅限于TCP/IP和兼容的协议。
这使人们能够使用许多其他网络技术,包括Tl/El、ATM、帧中继、SONET和DSL。
互联网小型计算机系统接口(Internet Small Computer System Interface, iSCSI)
iSCSI是一种基于lP的网络存储标准,运行在第3层。
利用此技术,可通过LAN、WAN或公共互联网连接启用与位置无关的文件存储、传输和检索。
iSCSI通常被视为光纤通道的低成本替代方案。
其他可能被视为融合技术示例的概念包括:
VPN、SDN、云、虚拟化、SOA、微服务(microservices)、基础设施即代码(IaC)和无服务器架构(serverless architecture)。
11.10.2 网络电话(Voice over IP, VoIP)
网络电话是一种隧道机制,它将音频、视频和其他数据封装到IP数据包中,以支持语音呼叫和多媒体协作。
VoIP已经成为全世界公司和个人的一种流行且廉价的电话解决方案。
VoIP有可能取代PSTN, 因为它通常更便宜,并提供更多选择和功能。
VoIP可用作计算机网络和移动设备上的直接电话替代品。
VoIP被认为是一种附合协议,因为它将音频(和视频)封装技术(作为应用层协议运行)与已建立的TCP/IP多层协议栈相结合。
VoIP可用于商业和开源项目。
一些VoIP解决方案需要专门的硬件来取代传统的电话手机/基站,或者允许它们连接到VoIP系统并在VoIP系统上运行。
某些VoIP解决方案仅限于软件,例如Skype, 并允许用户使用现有的扬声器、麦克风或耳机取代传统的电话听筒。
其他的基于硬件,例如magicJack允许使用插入USB适配器的现有PSTN电话设备来利用互联网上的VoIP 。
商用VoIP设备的外观和功能与传统PSTN设备非常相似,但只是用VoIP连接取代以前的普通老式电话服务(POTS)线路。
通常,VoIP到VoIP呼叫是免费的(假设双方使用相同或兼容的VoIP技术),而VoIP到传统电话或手机的呼叫一般按分钟收费。
黑客可以对VoIP解决方案发起多种潜在攻击。
•许多VoIP工具都可以轻易用来伪造来电显示,因此黑客可以执行vishing(VoIP网络钓鱼)攻击或语音垃圾邮件(SPIT)攻击。
•呼叫管理器系统和VoIP电话本身可能容易受到主机操作系统攻击和DoS攻击。
如果设备或软件的主机操作系统或固件存在漏洞,则风险会增加。
•攻击者可能通过伪造呼叫管理器或端点连接协商或响应消息来执行MITM/路径攻击。
•根据部署情况,如果在与桌面和服务器系统相同的交换机上部署VoIP电话,也存在相关风险。
这可能允许802.1X身份认证伪造以及VLAN和VoIP跳转(即跨越己验证通道跳转)。
•由于VoIP流量是未加密网络流量,可通过解码VoIP流量来监听VoIP通信。
安全实时传输协议或安全RTP(SRTP,security Real-time Transport Protocol),是对VoIP通信中使用的实时传输协议(RTP)的安全改进。
SRTP旨在通过强加密和可靠的身份认证,将拒绝服务、路径攻击和其他VoIP攻击的风险降至最低。
RTP或SRTP在会话初始协议(SIP)建立端点之间的通信链路后接管。
11.10.3 软件定义网络(software-defined networking, SDN)
软件定义网络是一种独特的网络操作、设计和管理方法。
该概念基于以下理论:
传统网络与设备(即路由器和交换机)上配置的复杂性经常迫使组织坚待使用单一设备供应商,因而限制了网络的灵活性,使其难以适应不断变化的物理和商业条件,且难以优化购买新设备的成本。
旨在将基础设施层(亦称数据平面和转发平面——硬件和基于硬件的设置)与控制层(即数据传输管理的网络服务)分离。
控制平面使用协议来决定向何处发送流量,而数据平面包含决定是否转发流量的规则。
这种形式的流量管理还涉及访问控制,即规定什么系统可以将哪些协议传递给谁。
这种类型的访问控制通常基于属性的访问控制(ABAC)。
SDN解决方案取代了路由器和交换机等传统网络设备,使组织可以选择使用更简单的网络设备(接受SDN控制器的指令)处理流量路由。
这消除了传统网络协议的复杂性。
此外,这还消除了IP寻址、子网、路由等传统网络概念,不必将其编写到托管应用程序中或由托管应用程序解密。
SDN提供了一种新的网络设计,该设计可直接从集中位置编程,它灵活,独立于供应商,并且基于开放标准。
使用SDN后,组织将不必从单个供应商处购买设备。
SDN允许组织根据需要混合和匹配硬件,例如选择最具成本效益或最高吞吐量的设备,而不会被某个供应商锁定。
然后,可通过集中管理接口控制硬件的配置和管理。
此外,可根据需要动态更改和调整应用于硬件的设置。
另外,SDN其实也可以被看作网络虚拟化。
它允许数据传输路径、通信决策树和流控制在SDN控制层中虚拟化,而不是以每个设备为基础在硬件上处理。
虚拟化网络概念带来的另一个有趣的发展是虚拟SAN(VSAN)。
SAN是一种网络技术,它将多个单独的存储设备组合到一个网络可访问的存储容器中。
它们通常用于需要高速访问单个共享数据集的多个或集群服务器。
由于SAN复杂的硬件要求,这些设备过去一直很昂贵。
VSAN通过虚拟化绕过了这些复杂性。
虚拟SAN或软件定义的共享存储系统是SAN在虚拟化网络或SDN上的虚拟重现。
软件定义存储(SDS),是SDN的另一个衍生产品。
SDS是SAN或NAS的SDN版本。
SDS是一种策略驱动的存储管理和资源调配解决方案,它独立于实际的底层存储硬件。
它是有效的虚拟存储。
软件定义广域网(SDWAN 或SD-WAN),是SDN的一种演变,用于远程数据中心、远端位置和WAN链路上的互服务之间的连接管理和服务控制。