网络安全 网络传输
深入了解传输层和链路层
计算机系统通常需要与其他系统通信;这可以通过将它们置于同一网络中来实现。为了使计算机能够通过不同类型的网络进行通信,已经实施了多种不同的技术。在本节中,我们将深入探讨大多数网络中使用的协议。
我们使用的网络由多个协议组成,其中一些协议在本课程中有所介绍。网络中还有许多其他协议正在使用,所有这些协议都可能与安全风险相关联。
TCP(“传输控制协议”)
就像 IP 使用 IP 地址进行寻址一样,TCP 和 UDP 使用端口。端口用 0 到 65535 之间的数字表示,它指示哪个网络服务应该处理请求。
在下图中,我们可以看到一个 TCP 数据包以及它在任何检查网络流量的人看来会是什么样子。
我们可以看到图形显示源端口和目标端口都有 16 位,这对于 UDP 也是一样的。序列号和确认号用于三次握手以及可靠地传输数据。我们还可以看到用于指示数据包类型的控制位。其他标头也发挥着重要作用,但不在安全课程范围内。
TCP 三次握手
TCP 使用三次握手来允许两个系统进行通信。握手使用 32 位的 PRNG(“伪随机数生成器”)数字来建立握手。握手强制执行两方都打算进行通信。
这是一个说明性的图形
关于 TCP 如何进行通信的解释
- 客户端通过发送一个数据包来发起通信,该数据包在标头中设置了 SYN 控制位,在序列号字段中设置了一个 PRNG 编号,以及一个目标目标端口。网络层(第 3 层)允许数据包被发送到远程系统。此数据包被称为 SYN 数据包。
- 服务器收到数据包,从客户端读取序列号,并创建一个响应。响应使用客户端的序列号加上 1 来设置确认字段。此外,响应还包含设置了 SYN 和 ACK 控制位以及序列号设置为服务器 PRNG 编号的控制位。此数据包被称为 SYN/ACK 数据包。
- 客户端收到 SYN-ACK 数据包,为了完成握手,返回一个设置了 ACK 控制位的数据包。最终的数据包还通过在标头的确认字段中返回它来确认服务器的 PRNG 编号。
这个过程通常被称为 SYN、SYN/ACK、ACK 三次握手。
在下图中,我们可以看到两个主机正在执行三次握手:
屏幕截图显示了用于捕获和检查数据包的工具 Wireshark。Wireshark 是一款非常好的实用工具,因为它允许我们可视化数据包并更深入地检查它们。屏幕截图显示了代表三次握手的 3 个数据包。请注意表示正在通信的两个方的源和目标列。Info 字段显示源端口和目标端口,包括(在方括号内)SYN、SYN/ACK 和 ACK。
下一个屏幕截图显示了三次握手完成后,两方之间正在通信的数据。TCP 数据包中的数据已突出显示在图片底部附近。
上面的屏幕截图中显示了给 W3School 学生的信息。您看到了吗?
欺骗流量
如今,网络上对任何人创建数据包几乎没有限制。任何人都可以创建包含任何他们想要的标头字段值的数据包。这称为欺骗,允许攻击者代表其他人发送流量。
TCP 在协议中内置了安全措施,但它依赖于 PRNG(“伪随机数生成器”)数字生成器的强度。如果可以猜测通信双方的序列号,那么 TCP 的安全性就会受到损害,因为攻击者可以通过 TCP 进行欺骗通信。
许多协议很容易被欺骗,但 TCP 提供了一些抵御此问题的弹性。UDP 和 ICMP 等协议不提供类似的保护。
欺骗数据包通常由具有 root/系统权限的攻击者完成,即操作系统上的最高权限。原因是操作系统强制执行 API 的使用,这迫使用户遵守 RFC(“请求征求意见”)中指定的通信规则。如果攻击者没有最高权限,他们将无法在网络上创建自己的数据包。
UDP(“用户数据报协议”)
UDP 用于不需要 TCP 的弹性和安全性的流量,通常是 VOIP 等应用程序,但在现代世界中,更多应用程序正在使用 UDP 来支持具有在 OSI 模型更高层构建的弹性和安全性的快速数据包传输;QUIC 就是一个例子。
查看 UDP 标头,我们可以看到相同的源端口和目标端口在使用,但没有序列号或控制位。该协议的开销要少得多,从而导致更快的数据传输速度。
由于 UDP 不具备三次握手等功能,因此 UDP 很容易被欺骗。
交换网络
系统通过交换机连接到 LAN(“局域网”)。交换机使用 MAC(“媒体访问控制”)地址进行寻址,而不是更常见的 IP 地址。交换机在局域网之间转发流量,例如您的家庭网络或您组织的分支机构内。MAC 地址旨在是唯一的,但只要有管理员权限,任何人都可以更改其 MAC 地址。
MAC 地址由 6 个八位字节定义,例如:FC:F8:AE:12:34:56
前三个八位字节表示制造通信设备的组织,称为 OUI(“组织唯一标识符”)。上面的 MAC 地址被分配给英特尔公司。您可以在许多地方搜索 MAC 地址,例如:https://www.adminsub.net/mac-address-finder/intel。
最后三个八位字节由制造商确定。
ARP
ARP(“地址解析协议”)是一种协议,它允许计算机系统知道哪个 MAC 地址属于哪个 IP 地址。如果流量需要路由,计算机系统会将流量转发到系统上配置的默认网关。
ARP 与 DNS 一样,是一种将一个地址解析为另一个地址的协议。每次系统尝试与 LAN 上的 IP 地址通信时,它都会检查其 ARP 缓存以查看是否最近已解析。
您可以检查自己的 ARP。只需在 Linux 或 Windows 上运行命令 arp -a
即可。这会显示您的系统最近与哪些系统通信。
爱丽丝:有人知道 192.168.10.10 的 MAC 地址吗?
鲍勃:当然,爱丽丝,这是我的 MAC 地址。
VLAN(“虚拟局域网”)
VLAN,通常称为私有 VLAN,是交换机在帧中嵌入标签(或 VLAN ID)的一种方式。然后,多个交换机可以确保 LAN 上的计算机系统只能与某些其他系统通信,即具有相同 VLAN ID 的其他系统。