网络接口层，通常也称为数据链路层或数据链路，是TCP/IP模型的最底层。这一特定的层次有多个特有的能被黑客发掘利用的安全漏洞。

网络接口层
-----

网络接口层，通常也称为資料連結層，是在主机系统和网络硬件之间的物理接口。它定义了数据包如何被格式化之后进行发送和路由。一些常见的数据链路层协议包括IEEE802.2和X.25。 数据链路层以及与这一层相关的的协议管理着电脑主机和网络硬件之间的硬件物理接口。这一层的工作目的是给连接在网络中的主机之间提供可靠的通信。一些由这一网络协议栈提供的服务包括。

* **数据帧** - 将数据流分解为独立的帧或包。
* **校验和** - 为每一帧数据发送校验和数据，以便让接受数据的节点确定接收到的数据是否是没有错误的。
* **确认信号** - 从接收方向发送方发送一个正面的（数据正在被接受）或者负面的（数据没有接受到但是希望接受）的确认信号以便确保数据传输的可靠性。
* **流控制** - 缓冲发送数据以确保一个快速的发送方不会压制一个较慢的接收方。

脆弱性和防守策略
--------

### 有线网络

#### 内容地址内存（CAM）表耗尽攻击

数据链路层基于目标硬件的物理媒体访问控制（MAC）地址给每个数据包添加地址。网络中的交换机维护着映射了交换机端口到特定MAC地址的CAM表。这些表让交换机能够将数据包只分发到他们各自指向的物理地址。用交换机来连接那些正在通信的系统比像网络集线器那样直接将所有的流量广播到所有端口要更加安全， 后者会让窃听者能够拦截和监视所有的网络流量。一个CAM表耗尽攻击基本做的就是把一个交换机变成一个集线器。 攻击者们用大量新的MAC-到-端口的映射覆盖CAM表一直到表的固定大小的内存分配被用光。在这个时刻，交换机将不再知道如何分发那些基于MAC-到-端口映射的流量，只能默认地将流量广播到所有端口。一个敌人接下来就可以截获和监视所有通过交换机的流量，这些流量包括密码，邮件，即时消息等等。 CAM表溢出攻击可以通过配置交换机上面的端口安全设置来预防。这一选项要么规定了交换机上特定端口的MAC地址，要么规定了一个交换机端口可以记住的MAC地址数量。当一个无效的MAC地址被从一个端口检测到，那么交换机可以封锁这个恶意的MAC地址或者关闭该端口

#### 地址路由协议(ARP)欺骗

在数据链路层一个被网络层指定的逻辑IP地址被转译成一个物理MAC地址。为了确保可靠的数据通信，所有的网络中的交换机必须维护一个最新的映射了ip逻辑地址到MAC物理地址的表格。如果一个客户端或者交换机不确定一个它接受到的数据包的IP到MAC的映射，它将会发送一个ARP请求信息给最近的交换机查询与这个特定IP相关联的MAC地址。当完成这个过程后，客户端或者交换机会更新他的表格以反映最新的映射。在一个ARP欺骗攻击中，攻击者会广播他要攻击的机器的IP地址和他自己的MAC地址。所有的附近的交换机接下来会更新他们的映射表并且开始将发送数据的目的地址设置为攻击者系统的IP地址对应的MAC地址。 这种攻击通常被称为"中间人"攻击。 防御ARP欺骗通常依靠一些形式的证书或者ARP回应的交叉对比。没有认证的ARP回应会被封锁。这些技术可能被集成到动态主机配置协议(DHCP)服务中，所以动态和静态IP都会被认证。这一能力也会被在一些独立的主机上被实现或者集成到以太网交换机或其他网络设备上。

#### 动态主机配置协议(DHCP)耗竭攻击

当一个没有IP地址的客户端系统进入网络时他会从常驻的DHCP服务器那里索求一个IP地址。DHCP服务器会保留一个IP地址（所以任何其他人索要IP地址时将不会被授予这个IP地址），然后他会发送IP地址以及该IP地址最长有效租期给那些需要IP地址的设备。通常来说，从这一刻开始，设备会通过确认IP地址与DHCP服务器进行响应，并且DHCP服务器也会最终回复一个确认响应。

在一个DHCP耗竭攻击中，一旦攻击者从DHCP服务器那里接收到了IP地址和租赁期，攻击者不会回复确认信号。取而代之的是攻击者会让DHCP服务器充斥着IP地址请求，直到服务器内所有的地址空间都被分配（耗竭）掉。在这时，任何其他想要加入网络的主机都会被拒绝接入，从而导致拒绝服务。攻击者接下来可以设置一个流氓DHCP服务器，所以客户端会接收到不正确的网络设置并且导致数据被发送到攻击者的机器上。

防御这种攻击的一种方法是使用许多网络交换机上具备的IP源防护功能。IP源仿佛功能一开始会封锁除了DHCP包外的其他所有流量。当一个客户端从一个DHCP服务器那里接收到了一个有效的IP地址，IP地址和交换机端口的关系会绑定到访问控制表(ACL)中。ACL会接下来会将流量限制到那些只有被配置绑定了的IP地址中。

### 无线网络

#### 隐藏节点攻击

在一个无线网络中，许多主机和节点共用一个共同的媒介。如果节点A和B都是无线笔记本电脑，他们在同一个办公室环境下通信，他们的通信因为物理上的分隔从而需要通过一个无线接入点进行中转。但是为了避免数据包碰撞，一个时刻只可以有一个设备可以发送数据。在发送数据前，节点A发送一个准备好发送(RTS)信号，如果无线接入点不在接受其他任何数据流量，他将会通过网络逛过一个可以发送(CTS)信号。节点A会接下来开始发送数据而节点B会知道要暂时停止发送他的数据。即使它不能直接和节点A通信，也就是说节点A是隐藏起来的，通过和AP通信，他知道要等待A的发送完成。一个攻击者可以利用这一功能大量发送带有CTS的信息来泛滥攻击整个网络。然后每个节点会假定有一个隐藏的节点在尝试发送数据所以他们会停止他们自己的发送，从而导致拒绝服务发生。

阻止隐藏网络攻击需要一个类似于NetEqualizer的网络工具。 这样的工具监视着AP的流量并且会开发一个流量的基线。所有CTS/RTS信号的峰值会被假定为一个隐藏节点攻击并且将被封锁掉。

#### Deauth（去认证）攻击

任何客户端进入一个无线网络前必须先获得一个AP接入点的认证，在这之后跟这个AP相关联。当一个客户端离开时，他会发送一个去除认证信息去不再和AP进行关联。攻击者可以向绑定到客户端IP地址的接入点发送去除认证消息，从而使用户离线并且需要重新认证，从而让攻击者可以观察到重新认证握手时候的有价值的信息。

为了防御这种攻击，可以设置接入点延迟解除认证或者解除关联请求（比如这样的请求需要排队等待5到10秒），从而给接入点机会来观测客户端后续发送过来的数据包。如果一个数据包在一个解除认证或者解除关联请求被放入等待队列之后到达，那么该请求会被丢弃，因为合法客户端将不会以该顺序生成数据包。

参考资料
----

1. ↑ .  [8 February 2013]. （原始内容存档于2021-02-27）.
2. ↑ .  [8 February 2013]. （原始内容存档于2021-02-27）.
3. ↑   (PDF). Polytechnic Institute of New York University.  [8 February 2013]. （原始内容存档 (PDF)于2010-06-13）.
4. 1 2  O'Connor, Terrence.. SANS Institute.  [8 February 2013]. （原始内容存档于2013-03-22）.
5. ↑  Akeung, Darryl..  [8 February 2013]. （原始内容存档于2013年2月2日）.
6. ↑ . Javvin Network Management & Security.  [14 February 2013]. （原始内容存档于2013年4月11日）.
7. ↑  Gmoskov..  [14 February 2013]. （原始内容存档于2018-08-16）.
8. ↑  Dmitry, Davletbaev.. SourceForge.net.  [14 February 2013]. （原始内容存档于2021-04-14）.
9. ↑   (PDF).  [14 February 2013]. [永久]
10. 1 2 . NetEqualizer.  [14 February 2013]. （原始内容存档于2020-08-15）.
11. ↑ . Aircrack-ng.  [14 February 2013]. （原始内容存档于2021-05-02）.
12. ↑  Bellado, John.. Proceedings of the USENIX Security Symposium, Aug 2003.  [14 February 2013]. （原始内容存档于2017-12-14）.