网络安全 网络层深度剖析
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 地址仅保留供内部组织使用,这意味着它们不应在互联网上路由。这些类型的 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 格式,并且可以在网络之间转发数据包。这与交换机不同,交换机在网络内转发数据,而路由器在网络之间转发数据。
网络上的数据包有标题,描述了我们在 IP 协议中讨论过的许多重要细节。IPv4 标题如下所示
图片来源:由 Michel Bakni - Postel, J. (September 1981) RFC 791, Internet Protocol, DARPA Internet Program Protocol Specification, The Internet Society, p. 11 DOI: 10.17487/RFC0791., CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=79949694
源地址是发送数据包的系统 IP 地址,目标地址是数据包的目的地。标题中还有其他字段,用于 IP 协议的许多功能,但不在本入门课程的范围之内。
您可以在 Windows 上运行 ipconfig
命令在命令行窗口中检查您的 IP 地址。在 Linux 上,可以使用 ip addr show
或 ifconfig
命令。
当计算机需要与 LAN 上找不到的东西通信时,它会根据系统配置将流量发送到默认网关。默认网关是一个路由器,能够将流量转发到目标 IP 地址。
NAT(“网络地址转换”)
NAT 允许接受公共 IP 地址连接的系统将这些请求映射到内部 RFC 1918 IP 地址,反之亦然。执行 NAT 的系统通常是防火墙和路由器。
NAT 的典型实现是,外部 IP 地址用作多个内部 IP 地址的前面,目标端口号用于决定应将数据发送到哪个服务器。这允许内部 IP 地址接收来自外部系统的流量。
另一种非常常见的实现是允许内部 IP 地址使用外部 IP 地址访问互联网。NAT 跟踪从内部到目标地址的连接,并在连接之间转发流量。
NAT 可以通过多种方式进行配置,但本课程不会详细介绍该方法。
IPv6 - IP 第 6 版
IP 第 6 版是 IP 的最新标准,旨在支持更多 IP 地址。它不使用 32 位 IP 地址寻址,而是使用 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。
本地主机可以缩短为 ::1 和 ::。
IPv6 具有网络,即子网,就像 IPv4 一样。
IPv6 标题如下所示
我们可以看到一个更简单的标题,它为 IP 寻址留出了更多空间。
IPv6 的使用越来越广泛,许多工具都内置了对该协议的支持。例如,使用 ping
,我们可以分别使用 -4 和 -6 标志在 IPv4 和 IPv6 之间切换。
运行 ipconfig
看看你是否看到任何 IPv6 地址。如果你启用了 IPv6,尝试 ping -6 google.com
和 ping -4 google.com
。看看命令如何让我们使用 IPv4 或 IPv6?
ICMP
ICMP 通常与 Ping 和 Traceroute 相关联。ICMP 可以用于其他用途,例如请求节点的时间,称为 ICMP 时间戳请求。ICMP 时间戳请求只需允许例如路由器请求另一个路由器同步时间,这是网络通信中一个重要的属性。
攻击者检查系统是否在网络上可用的常见策略是执行 Ping 扫描。这种活动的目的是让网络范围内的目标设备回复 ping 请求,以便攻击者知道它可用。这种方法很幼稚,因为默认情况下许多系统都会阻止传入的 ping。
Traceroute
Traceroute 是一种确定哪些路由器参与将数据包从系统 A 发送到 B 的方法。了解数据包经过的哪些路由器对更好地了解我们的网络以及了解攻击面都很有用。路由器负责将数据包路由到正确的方向。想象一下,这就像在路上行驶,交叉路口的路标引导你到达目的地。这些交叉路口的路标代表路由器。Traceroute 识别这些路标和交叉路口,并告诉你它们有多远,以毫秒 (ms) 为单位。
IPv4 TTL 和 IPv6 跳数限制标题具有相同的功能。每个路由数据包的路由器都会将此值递减 1,如果该值达到 0,则路由器将丢弃该数据包,并向发送者返回一个 ICMP 超时数据包。
在 Windows 上执行 traceroute
tracert google.com
在 Linux 上执行 traceroute(默认情况下未安装)
traceroute google.com
通过这些工具进行 traceroute 的过程很简单
- 操作系统向 google.com 发送数据包,TTL 值设置为 1。
- 数据包在网络上路由,第一个路由器将 TTL 递减 1,使其变为 0。这会导致路由器丢弃数据包并向源发送“ICMP 超时”数据包。
- 客户端将 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
。你应该看到类似于此的输出
w3schools.com 的 IP 地址可以在 ;; ANSWER SECTION. 中看到。当拍摄这张截图时,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 已启用:是”。您的计算机可能具有多个网络接口。
VPN ("虚拟专用网络")
VPN 是一种系统,它使两个系统能够建立加密的通信形式,从而使网络流量在传输过程中加密。许多 VPN 采用客户端-服务器架构,允许客户端访问 VPN 后面的多个服务。由您工作场所托管的 VPN 也可能提供对仅从内部可访问的资源的访问。
一些 VPN 服务旨在为用户提供数据传输过程中的隐私和加密。这些服务允许用户通过 VPN 发送网络数据,有效地伪装用户在浏览互联网时的 IP 地址。
一般来说,使用 VPN 来保护您的网络通信是一个好习惯,但是我们不应该使用任何类型的 VPN 服务。免费 VPN 服务有时可能是恶意的,会检查、读取和存储您的敏感数据。