网络安全深度网络层

IP - 互联网协议

IP 用于跨网络通信,不仅跨物理链路,还跨路由器网络。 使用的寻址方案是 IPv4("IP 版本 4")或 IPv6("IP 版本 6")。

IP 网络可以分成不同的部分,通常称为子网。 这是通过添加一条额外的信息以及 IP 地址来实现的,称为 网络掩码。 网络掩码指示网络有多大,哪些数据包在网络内路由,哪些数据包应该在网络外路由。

网络掩码可以用十进制数字或斜线表示法表示。使用斜线表示法时,斜线跟随系统 IP 地址。 她是一些例子:

IP地址 斜线符号 网络掩码
10.0.0.1 /8   - 示例: 10.0.0.1/8 255.0.0.0
172.16.1.1 /12 - 示例: 172.16.1.1/12 255.240.0.0
192.168.0.1 /16 - 示例: 192.168.0.1/16 255.255.0.0
192.168.0.1 /24 - 示例: 192.168.0.1/24 255.255.255.0

某些 IP 网络仅用于特定类型的流量。 上表中的 IP 地址仅供内部组织使用,这意味着它们不会出现在 Internet 路由中。 这些类型的 IP 地址通常称为内网地址( RFC1918 )。


不同的内网网络

让我们看看内网地址( RFC1918 )中的不同网络以及网络的规模:

  • 10.0.0.0/8 - 超过 1600 万个 IP 地址
  • 172.16.0.0/12 - 大约 100 万个 IP 地址
  • 192.168.0.0/16 - 65534 个 IP 地址

IP 段可以进一步分解为更小、更细化的网络。

每个网络都有一个保留地址,用于向网络中的每个主机广播流量,这称为广播地址。广播数据意味着将数据发送给网络上的每个人,而不是只发送给单个主机。有许多应用程序和协议依赖于广播流量才能工作。

对于每个网段,广播始终是网络中的最后一个 IP 地址。例如在192.168.0.0/24网络中,广播地址为192.168.0.255。

可能的最小网络掩码是 255.255.255.255,表示为 /32。此网络只有一个 IP 地址。

如果需要将流量发送回主机,例如对于应用程序之间的通信,它被发送到本地主机地址。此地址始终为 127.0.0.1,并且是 /8 网络。

在 IP 网络中,流量由路由器路由。路由器是一种网络设备,它了解 IP 格式并可以在网络之间转发数据包。这与交换机不同,因为交换机在网络内转发数据,而路由器在网络之间转发。

Router and Switch

网络上的数据包具有标头,这些标头描述了我们已经在 IP 协议中讨论过的许多重要细节。 IPv4 标头如下所示:

IP Header

图片来源:Michel Bakni - Postel, J.(1981 年 9 月)RFC 791,互联网协议,DARPA 互联网程序协议规范,互联网协会,p。 11 DOI:10.17487/RFC0791.,CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=79949694

源地址是发送数据包的系统的 IP 地址,目标是数据包的目标地址。 头部中还有其他字段被 IP 协议的许多特性所使用,但不在本介绍类的范围内。

您可以通过在命令行窗口中运行命令 ipconfig 来检查您在 Windows 上的 IP 地址。 在 Linux 上,这是通过 ip addr showifconfig 命令完成的。

当计算机需要与 LAN 上找不到的东西进行通信时,它会根据系统的配置方式将流量发送到默认网关。 默认网关是能够将流量转发到目标 IP 地址的路由器。



NAT("网络地址转换")

NAT 允许系统接受公共 IP 地址上的连接,将这些请求映射到内部 RFC 1918 IP 地址,反之亦然。 进行 NAT 的系统通常是防火墙和路由器。

NAT 的典型实现是外部 IP 地址用作多个内部 IP 地址的前面,目标端口号用于决定数据应该发送到哪个服务器。 这允许内部 IP 地址接收来自外部系统的流量。

NAT Port

另一个非常常见的实现是允许内部 IP 地址使用外部 IP 地址访问互联网。 NAT 跟踪从内部地址到目标地址的连接,并通过连接转发流量。

NAT 可以通过多种方式进行配置,但在本节课中我们不会详细介绍该方法。

注意:NAT 让网络工程师的部署更加灵活,允许展开许多不同的用例。

IPv6 - IP 版本 6

IP 版本 6 是最新的 IP 标准,旨在支持更多 IP 地址。 IP 地址不是使用 32 位寻址,而是使用 128 位。 这允许在可预见的未来有足够的 IP 地址,而 IPv4 已经用完。

IPv6 地址使用 8 组,每组 4 个十六进制数字。 IPv6 地址如下所示:2a00:1450:400f:80a::200e:。 请注意,它没有 8 组 4 个十六进制数字。 这是因为 IPv6 地址可以通过简单的规则缩短:

  • 前导 0 可以缩短
  • 双冒号 (::) 可用于表示连续的 0 字符串。

扩展的 IPv6 地址为:2a00:1450:400f:080a:0000:0000:0000:200e。

localhost 可以简化为 ::1 和 ::.

IPv6 有网络,即子网,就像 IPv4 一样。

IPv6 标头如下所示:

IPv6 Header

我们可以看到一个更简单的标头,为 IP 寻址提供更多空间。

IPv6 的使用越来越多,许多工具都内置了对该协议的支持。 例如,使用 ping 我们可以分别使用 -4 和 -6 标志在 IPv4 和 IPv6 之间切换。

运行 ipconfig 并查看是否看到任何 IPv6 地址。 如果您启用了 IPv6,请尝试 ping -6 google.comping -4 google.com。 看看该命令如何允许我们使用 IPv4 或 IPv6?

注意:如果您今天没有 IPv6,那么今天有许多公共云服务会授予您一个公共 IPv6 地址,您可以使用它来进行试验和探索。

ICMP

ICMP 通常与 Ping 和 Traceroute 相关联。 ICMP 可用于其他事情,例如向节点询问其时间,称为 ICMP 时间戳请求。 ICMP 时间戳请求仅允许例如 一个路由器请求另一个路由器同步它们的时间,这是网络通信中的一个重要属性。

攻击者检查系统是否在网络上可用的常用策略是执行 Ping 扫描。 此类活动的目标是使网络范围内的目标设备回复 ping 请求,以便攻击者知道它可用。 这种方法很幼稚,因为许多系统默认会阻止传入的 ping。


Traceroute("路由跟踪")

路由跟踪是一种确定哪些路由器参与将数据包从系统 A 发送到 B 的方法。了解我们的数据包通过哪些路由器有助于更好地了解我们的网络和了解攻击面。 路由器负责将包路由到正确的方向。 将其想象为在道路上行驶,十字路口的路标引导您前往目的地。 十字路口的这些标志代表路由器。 Traceroute 会识别这些标志和交叉路口,并告诉您它们有多远,以毫秒 (ms) 为单位。

IPv4 TTL 和 IPv6 Hop Limit 标头具有相同的功能。 每个路由数据包的路由器都会将该值减1,如果该值达到0,路由器将丢弃该数据包并向发送者返回一个ICMP Time Exceeded数据包。

在 Windows 上执行路由跟踪:

tracert google.com

在 Linux 上执行路由跟踪(默认未安装):

traceroute google.com

通过这些工具追踪路由的过程很简单:

  1. 操作系统发送一个数据包google.com,TTL值设置为1。
  2. 数据包在网络上路由,第一个路由器将 TTL 减 1,保持为 0。这会导致路由器丢弃数据包并将"ICMP Time Exceeded"发送回源。
  3. 客户端增加 TTL 1,允许数据包通过一个额外的跃点路由。

重复此过程,将 TTL 增加 1,直到到达目的地。


DNS("域名系统")

DNS 用于通过名称将应用程序映射到 IP 地址。例如,如果您想使用浏览器访问 http://google.com,则浏览器必须首先向 DNS 服务器发出请求,以解析 google.com 后面的 IP 地址

系统通常配置有主域名服务器和辅助域名服务器。这些设置可以手动配置或由 DHCP 服务器提供。这允许我们的计算机系统访问 DNS 服务器,以便它为我们解析。

然后 DNS 服务器负责解析请求。然后它将继续检查自己的缓存以查看它是否已经知道答案。每个 DNS 答案都可以被缓存,临时存储以加速未来的请求,用于特定的 TTL("生存时间")。 TTL 通常设置为几分钟,例如 10 分钟。

如果 DNS 服务器在其缓存中没有答案,它将继续检查谁负责提供答案。这是通过递归过程完成的,该过程涉及询问名称服务器的分层系统,这不可避免地会使 DNS 请求最终到达权威名称服务器。

您现在可以尝试使用 Windows 或 Linux 进行 DNS 查找。从 Windows 上的命令行终端输入 nslookup w3schools.com ,或在 Linux 上输入 dig w3schools.com。您应该会看到如下输出:

DNS Dig

w3schools.com 的 IP 地址可以在 应答部分 中看到。截屏时,w3schools.com 名称后面的 IP 地址是 66.29.212.110

权威名称服务器是负责对问题给出明确答案的 DNS 服务器。 例如 google.com 的 IP 地址将由他们的权威名称服务器来回答,我们可以通过查询来看到这个服务器:

在 Windows 上查找权威名称服务器:

nslookup -type=SOA google.com

在 Linux 上寻找权威名称服务器:

dig -t SOA google.com

DHCP("动态主机配置协议")

顾名思义,DHCP 协议允许网络上的任何系统访问服务器并接收配置。 这种配置通常意味着接收 IP 地址和网络范围、默认网关和 DNS 服务器。

DHCP 允许轻松管理加入和离开网络的客户端。

如果您想知道您现在是否正在使用 DHCP,您可以在 Windows 系统上键入 ipconfig /all 并在输出中查找"DHCP Enabled: Yes"。 您的计算机可能有多个网络接口


VPN("虚拟专用网络")

VPN 是一种系统,它使两个系统能够建立加密形式的通信,从而使网络流量在传输过程中得到加密。 许多 VPN 是客户端到服务器架构,允许客户端访问 VPN 后面的多个服务。 由您的工作场所托管的 VPN 也可能提供对资源的访问,否则只能从内部访问。

VPN

某些 VPN 服务专为保护用户隐私和对传输中的数据进行加密而设计。 这些服务使用户能够通过 VPN 发送网络数据,从而在浏览 Internet 时有效地伪装用户 IP 地址。

使用 VPN 来保护您的网络通信通常是一种很好的做法,但我们不应使用任何类型的 VPN 服务。 免费 VPN 服务有时可能是恶意的,会检查、读取和存储您的敏感数据。

Malicious VPN