前言:分层安全的重要性

要正确理解网络安全,首先需要了解网络是如何工作的。OSI七层模型和TCP/IP模型是理解网络通信的核心框架,每一层都存在其特有的安全威胁和防御方法。

本篇将复习OSI模型,详细介绍各层的典型攻击技术及其应对方法。同时,我们还将学习实际网络流量分析必不可少的Wireshark使用方法。

1. OSI七层模型回顾

OSI(开放系统互联)模型是一个将网络通信分为七个层次来说明的参考模型。

名称 主要功能 协议/设备 PDU
7 应用层 (Application) 用户接口、应用服务 HTTP, FTP, SMTP, DNS Data
6 表示层 (Presentation) 数据格式转换、加密、压缩 SSL/TLS, JPEG, ASCII Data
5 会话层 (Session) 会话建立、维护、终止 NetBIOS, RPC Data
4 传输层 (Transport) 端到端通信、流量控制、错误恢复 TCP, UDP Segment
3 网络层 (Network) 逻辑地址分配、路由 IP, ICMP, 路由器 Packet
2 数据链路层 (Data Link) 物理地址分配、帧生成、错误检测 Ethernet, ARP, 交换机 Frame
1 物理层 (Physical) 比特传输、物理连接 电缆、集线器、中继器 Bit

OSI vs TCP/IP模型比较

OSI 7层                TCP/IP 4层
+------------+     +------------+
| 应用层     |     |            |
+------------+     |  应用层    |
| 表示层     |     |            |
+------------+     +------------+
| 会话层     |     |            |
+------------+     +------------+
| 传输层     |     |  传输层    |
+------------+     +------------+
| 网络层     |     |  网际层    |
+------------+     +------------+
| 数据链路层 |     |            |
+------------+     |  网络接口  |
| 物理层     |     |  层        |
+------------+     +------------+

2. 物理层安全 (Layer 1)

物理层是网络最基础的层,处理实际硬件和电信号。

2.1 物理层威胁

  • 窃听 (Wiretapping):物理接触电缆截取信号
  • 设备盗窃/损坏:服务器、路由器、交换机等的物理盗取或破坏
  • 电磁干扰 (EMI):干扰电缆信号或窃听
  • 无线窃听:收集和分析无线信号

2.2 物理层安全措施

  • 物理访问控制:机房锁、门禁卡、监控摄像头安装
  • 电缆保护:使用屏蔽电缆(STP)、安装电缆导管
  • 使用光纤:抗电磁干扰且难以窃听
  • 环境监控:温度、湿度、水浸检测传感器
  • 无线安全:WPA3加密、隐藏SSID、MAC过滤

3. 数据链路层安全 (Layer 2)

数据链路层负责同一网络段内节点之间的通信。使用MAC地址,交换机在此层工作。

3.1 ARP欺骗 (ARP Spoofing)

ARP(地址解析协议)是将IP地址转换为MAC地址的协议。ARP欺骗是利用此协议漏洞的攻击。

攻击原理

正常ARP操作:
PC-A: "192.168.1.1的MAC地址是什么?" (ARP Request - 广播)
网关: "我的MAC地址是 AA:BB:CC:DD:EE:FF" (ARP Reply)

ARP欺骗攻击:
攻击者: "192.168.1.1的MAC地址是我的MAC(XX:XX:XX:XX:XX:XX)!" (伪造的ARP Reply)
PC-A: 将攻击者的MAC误认为是网关 → 所有流量发送给攻击者

攻击结果

  • 中间人攻击(MITM)成为可能
  • 会话劫持
  • 流量窃听和篡改
  • 拒绝服务(DoS)

应对方法

  • 静态ARP表:手动固定重要设备的MAC地址
  • 动态ARP检测 (DAI):在交换机上验证ARP数据包
  • ARP监控工具:使用arpwatch、XArp等监控ARP表变化
  • 加密通信:使用HTTPS、VPN,即使被窃听也能保护内容

3.2 MAC泛洪 (MAC Flooding)

这是用虚假MAC地址填满交换机的MAC地址表(CAM表)以妨碍正常操作的攻击。

攻击原理

正常交换机操作:
- 根据MAC地址表中学习到的MAC,仅向特定端口转发帧
- 单播通信实现高效网络运营

MAC泛洪攻击时:
1. 攻击者发送数千~数万个虚假MAC地址
2. 交换机的CAM表被填满(通常8K~32K条目)
3. 交换机像集线器一样工作(向所有端口广播帧)
4. 攻击者可接收所有网络流量

应对方法

  • 端口安全 (Port Security):限制每端口允许的MAC地址数量
  • 802.1X认证:网络接入前进行用户/设备认证
  • VLAN细分:分离广播域
# Cisco交换机端口安全配置示例
Switch(config)# interface FastEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 2
Switch(config-if)# switchport port-security violation shutdown
Switch(config-if)# switchport port-security mac-address sticky

3.3 VLAN跳跃 (VLAN Hopping)

未授权访问其他VLAN的攻击,有交换机欺骗和双标签两种方法。

  • 交换机欺骗:攻击者伪装成交换机尝试连接Trunk端口
  • 双标签:使用两个VLAN标签向其他VLAN发送数据包

应对方法

  • 禁用未使用的端口
  • 在Access端口禁用DTP(动态中继协议)
  • 将Native VLAN更改为未使用的VLAN
  • 明确配置Trunk端口

4. 网络层安全 (Layer 3)

网络层负责使用IP地址进行逻辑寻址和路由。

4.1 IP欺骗 (IP Spoofing)

伪造源IP地址以隐藏身份或冒充其他主机的攻击。

攻击用途

  • 获取匿名性:隐藏攻击来源
  • 绕过认证:绕过基于IP的访问控制
  • DDoS攻击:在反射/放大攻击中伪装成受害者IP
  • 会话劫持:接管现有连接
IP欺骗示例(DDoS反射攻击):

1. 攻击者 → DNS服务器 (源: 受害者IP, 目的: DNS服务器)
   "DNS查询请求"

2. DNS服务器 → 受害者 (源: DNS服务器, 目的: 受害者IP)
   "DNS响应(比请求大得多)"

结果: 受害者收到大量未请求的响应流量

应对方法

  • 入口/出口过滤:阻止带有异常源IP的数据包
  • BCP38/BCP84:在ISP级别应用防欺骗措施
  • uRPF(单播反向路径转发):在路由器上验证源IP
  • 加密认证:使用加密方法而非IP地址进行认证

4.2 ICMP攻击

ICMP(互联网控制消息协议)用于网络诊断和错误报告,但可能被滥用于攻击。

主要ICMP攻击类型

攻击类型 描述 影响
Ping Flood 发送大量ICMP Echo Request 带宽耗尽,DoS
Ping of Death 发送异常大的ICMP数据包 系统崩溃(旧系统)
Smurf Attack 向广播地址发送欺骗的Ping 放大的DDoS
ICMP Redirect 注入恶意路由信息 流量劫持
ICMP Tunneling 在ICMP数据包中隐藏数据 绕过防火墙,数据泄露

应对方法

  • ICMP速率限制:对ICMP流量应用速率限制
  • 阻止不必要的ICMP类型:阻止Redirect、Timestamp等
  • 禁用广播ping:防止Smurf攻击
  • 深度数据包检测(DPI):检测ICMP隧道
# Linux iptables ICMP速率限制
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# 忽略ICMP Redirect设置
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

5. 传输层安全 (Layer 4)

传输层通过TCP和UDP协议提供端到端通信。

5.1 TCP SYN Flood

这是利用TCP三次握手漏洞的典型DoS攻击。

TCP三次握手回顾

正常TCP连接建立:

客户端              服务器
    |                    |
    |------- SYN ------->|  (连接请求)
    |                    |
    |<---- SYN-ACK ------|  (连接接受)
    |                    |
    |------- ACK ------->|  (确认)
    |                    |
    |==== 连接建立 =====|

SYN Flood攻击原理

SYN Flood攻击:

攻击者                  服务器
    |                    |
    |------- SYN ------->|  (使用欺骗IP发送SYN)
    |<---- SYN-ACK ------|  (服务器等待响应 - 半开连接)
    |------- SYN ------->|
    |<---- SYN-ACK ------|
    |------- SYN ------->|
    |<---- SYN-ACK ------|
    ...
    (创建数千~数万个半开连接)

结果: 服务器的连接表被填满 → 正常用户无法连接

应对方法

  • SYN Cookies:不使用SYN队列,用加密cookie管理连接
  • SYN代理:防火墙/负载均衡器完成握手后再转发给服务器
  • 速率限制:限制每IP的SYN数据包数量
  • 增加积压队列:增加允许的半开连接数
  • 减少超时:缩短半开连接保持时间
# Linux启用SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# 增加SYN积压队列
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog

# 减少SYN-ACK重试次数
echo 2 > /proc/sys/net/ipv4/tcp_synack_retries

5.2 端口扫描 (Port Scanning)

端口扫描是识别目标系统上开放端口和运行服务的技术,主要用于侦察阶段。

主要扫描类型

扫描类型 方法 特点
TCP Connect扫描 建立完整TCP连接 准确但会被记录
SYN扫描 (半开) 只发送SYN,用RST代替ACK 快速且隐蔽
FIN/NULL/Xmas扫描 使用异常标志组合 尝试绕过防火墙
UDP扫描 发送UDP数据包 较慢但可检测UDP服务
ACK扫描 只发送ACK标志 映射防火墙规则
# Nmap各种扫描示例

# TCP Connect扫描
nmap -sT 192.168.1.100

# SYN扫描(需要管理员权限)
nmap -sS 192.168.1.100

# UDP扫描
nmap -sU 192.168.1.100

# 服务版本检测
nmap -sV 192.168.1.100

# 操作系统检测
nmap -O 192.168.1.100

# 全端口扫描
nmap -p- 192.168.1.100

应对方法

  • 关闭不必要的端口:禁用未使用的服务
  • 防火墙规则:只允许授权的IP/端口通过
  • IDS/IPS:检测和阻止扫描模式
  • 端口敲门:通过特定序列打开端口
  • 蜜罐:用虚假服务引诱和分析攻击者

5.3 其他传输层攻击

  • 会话劫持:预测TCP序列号接管现有会话
  • TCP RST攻击:用伪造的RST数据包强制终止连接
  • UDP Flood:用大量UDP数据包耗尽带宽

6. 应用层安全 (Layer 7)

应用层是直接与用户交互的层,各种协议和应用程序在此运行。

6.1 主要应用层威胁

  • SQL注入:操纵数据库查询
  • XSS(跨站脚本):注入恶意脚本
  • CSRF(跨站请求伪造):滥用用户权限
  • DNS攻击:DNS欺骗、DNS放大、缓存投毒
  • HTTP攻击:Slowloris、HTTP Flood
  • 邮件攻击:钓鱼、垃圾邮件、恶意附件

6.2 应对方法

  • WAF(Web应用防火墙):阻止Web应用攻击
  • 输入验证:验证和转义所有用户输入
  • DNSSEC:验证DNS响应的完整性
  • 邮件安全:应用SPF、DKIM、DMARC
  • 强制HTTPS:加密所有通信

7. 使用Wireshark进行数据包分析基础

Wireshark是最广泛使用的开源数据包分析工具。它是网络故障排除、安全分析和协议学习必不可少的工具。

7.1 Wireshark基本界面

Wireshark主界面组成:

+--------------------------------------------------+
| 菜单栏 / 工具栏                                   |
+--------------------------------------------------+
| 过滤器栏 (Display Filter)                        |
+--------------------------------------------------+
|                                                  |
| 数据包列表窗格 (Packet List Pane)                |
| - 所有捕获数据包的摘要信息                       |
|                                                  |
+--------------------------------------------------+
|                                                  |
| 数据包详情窗格 (Packet Details Pane)             |
| - 选定数据包的协议层详细信息                     |
|                                                  |
+--------------------------------------------------+
|                                                  |
| 数据包字节窗格 (Packet Bytes Pane)               |
| - 选定数据包的原始数据(十六进制)               |
|                                                  |
+--------------------------------------------------+

7.2 基本显示过滤器

过滤器 描述
ip.addr == 192.168.1.100 特定IP相关数据包
tcp.port == 80 特定TCP端口
http 仅HTTP协议
dns 仅DNS流量
tcp.flags.syn == 1 设置了SYN标志的数据包
arp 仅ARP数据包
icmp 仅ICMP数据包
!(arp or dns or icmp) 排除ARP、DNS、ICMP
tcp.analysis.flags TCP分析标志(重传等)
frame contains "password" 包含特定字符串的数据包

7.3 安全分析应用示例

ARP欺骗检测

# ARP数据包过滤
过滤器: arp

# 查找可疑模式
- 同一IP对应不同MAC地址响应
- 异常多的ARP Reply
- 大量Gratuitous ARP数据包

# 有用的过滤器
arp.duplicate-address-detected
arp.opcode == 2  # 仅ARP Reply

SYN Flood检测

# SYN数据包过滤
过滤器: tcp.flags.syn == 1 && tcp.flags.ack == 0

# 分析要点
- 大量SYN数据包发往同一目的地
- 多个源IP(欺骗迹象)
- 只有SYN没有SYN-ACK持续出现

# 统计检查
Statistics > Conversations > TCP选项卡
Statistics > Endpoints

端口扫描检测

# 检查向多个端口的连接尝试
过滤器: ip.src == [可疑IP] && tcp.flags.syn == 1

# 分析要点
- 短时间内向多个端口发送SYN
- 连续端口号模式
- 大量RST响应(关闭的端口)

# 有用功能
Statistics > Conversations
Statistics > Protocol Hierarchy

7.4 实践技巧

  • 捕获过滤器 vs 显示过滤器:捕获过滤器在保存时应用,显示过滤器在显示时应用
  • Follow TCP Stream:查看特定连接的完整对话内容
  • Expert Information:查看自动分析的警告和错误
  • 协议统计:在Statistics菜单中进行各种分析
  • 保存和共享:以pcap/pcapng格式保存以共享分析

注意:使用Wireshark进行数据包捕获必须仅在授权的网络上进行。未经授权的数据包捕获是违法的。

8. 分层安全总结

主要威胁 核心应对措施
物理层 (1) 窃听、设备损坏 物理访问控制、屏蔽电缆
数据链路层 (2) ARP欺骗、MAC泛洪 DAI、端口安全、802.1X
网络层 (3) IP欺骗、ICMP攻击 入口过滤、uRPF、ICMP限制
传输层 (4) SYN Flood、端口扫描 SYN Cookies、IDS/IPS、防火墙
应用层 (7) SQL注入、XSS、钓鱼 WAF、输入验证、HTTPS

结论及下篇预告

本篇我们了解了OSI七层模型各层的安全威胁和应对方法。每一层都存在其特有的漏洞,有效的安全需要对所有层进行综合防御。

特别是ARP欺骗、IP欺骗、TCP SYN Flood等攻击是实际环境中经常发生的威胁,因此准确理解其原理并准备适当的应对措施非常重要。利用Wireshark等数据包分析工具可以培养检测和分析这些攻击的能力。

下一篇将介绍防火墙的类型和配置、IDS/IPS系统以及网络访问控制(NAC)。我们将讨论实际网络安全设备如何工作以及如何配置等实战内容。

建议实践:配置虚拟环境(VirtualBox、VMware),使用Wireshark直接捕获和分析数据包。这可以培养仅靠理论无法获得的实战感觉。