第3章:网络与协议安全

TCP/IP协议族是互联网的基石,但设计之初并未充分考虑安全性。本章聚焦面试中最高频的三大协议安全问题:TCP连接劫持与洪水攻击、DNS解析篡改、HTTPS握手漏洞。掌握它们,等于拿到了网络安全面试的“入场券”。

1. 原理简述 2. 攻击场景 3. 防护措施 4. 实战经验 5. 面试加分点

问答卡片一:TCP三次握手安全与SYN Flood

问题请说明TCP三次握手过程,并分析SYN Flood攻击原理及防御方法。
示例回答三次握手:客户端发送SYN,服务端回复SYN+ACK,客户端再发ACK。SYN Flood是攻击者伪造大量源IP发送SYN,服务端分配资源等待ACK,导致半连接队列满。防御:启用SYN Cookie、增大半连接队列、使用反向代理或防火墙限流。
追问👉 SYN Cookie是如何工作的?👉 如果攻击者使用真实IP但高速重发SYN,怎么办?
避坑❌ 只说理论不说实践。❌ 混淆DoS和DDoS。❌ 忘记提到资源消耗(内存 vs CPU)。

问答卡片二:DNS劫持

问题什么是DNS劫持?攻击者如何实现?如何检测和防御?
示例回答DNS劫持指攻击者篡改DNS解析结果,将域名指向恶意IP。常见手法:本地hosts文件修改、路由器DNS配置篡改、中间人攻击拦截DNS报文、利用DNS缓存投毒。检测:对比不同DNS服务器解析结果,使用DNSSEC。防御:配置DNSSEC验证、使用可信公共DNS(如114.114.114.114)、应用程序内嵌域名白名单。
追问👉 DNS缓存投毒的具体原理?👉 如何通过HTTPS防范DNS劫持?(HSTS vs 证书)
避坑❌ 只说“改hosts”太浅。❌ 忽略HTTPS与DNS劫持的关系。❌ 未区分内网劫持和运营商劫持。

问答卡片三:HTTPS握手与中间人攻击

问题简述TLS 1.3握手过程,并说明可能的中间人攻击方式及防御。
示例回答TLS 1.3握手:Client Hello(含密钥共享)、Server Hello(含证书和签名)、双方计算主密钥,完成握手。中间人攻击:攻击者在客户端和服务端之间截获证书,替换为自己的证书(如果客户端未验证证书链)。防御:证书透明度(CT)、公共密钥固定(HPKP)、HSTS强制HTTPS、客户端严格验证证书。
追问👉 如何破解自签名证书的攻击?👉 什么是TLS回退攻击?👉 如何实现双向认证?
避坑❌ 混淆TLS 1.2与1.3细节。❌ 认为HTTPS安全。❌ 忽略证书吊销(OCSP stapling)。

公司侧重点

  • 阿里云:关注DNS安全、CDN加速中的协议优化、公有云网络防DDoS。
  • 腾讯:侧重HTTPS性能优化(QUIC、TLS 1.3)、游戏场景下的防劫持。
  • 字节跳动:强调TCP拥塞控制与ACL策略、内部DNS架构的安全性。
  • 华为:5G核心网协议安全、自有芯片对加密的支持。

面试官画像

网络安全方向的面试官通常五年以上经验,偏好原理+实践+系统思维。他们不会满足于背诵定义,而是追问“你如何复现攻击?”“你做过哪些加固?”“在压力测试中发现了什么?” 回答时务必结合真实案例(如某次服务器被扫描到SYN Flood后调整了队列参数)。

回答框架(通用五步法)

  1. 一句话定性:用一句话说清楚协议的基本作用。
  2. 核心机制:简述关键步骤/数据包交换。
  3. 安全弱点:指出设计缺陷或常见攻击面。
  4. 防护手段:给出2-3种主流解决方案,并说明原理。
  5. 个人贡献:如果有实际经验,加一句“我曾通过XXX方法解决了XXX问题”。
简短示例(TCP场景)
“某次线上环境出现大量半连接,查看/proc/net/tcp发现SYN_RECV状态激增。我立即启用SYN Cookie,同时将net.ipv4.tcp_max_syn_backlog从128提升到1024,流量恢复正常。后来在代码中增加了连接超时重试机制,彻底避免资源枯竭。”

追问与延伸

方向典型追问
TCP如何区分正常SYN与攻击?如何设置iptables限制SYN速率?
DNSDNSSEC的签名过程?如何通过dnsmasq防止内网劫持?
HTTPSTLS 1.3的0-RTT有何风险?如何用Wireshark抓包分析握手?
综合如果网络延迟高,协议如何影响安全?你如何设计一个安全的协议升级方案?

避坑指南

  • ❌ 空谈理论:面试官问“如何防御”,只说“用防火墙”但不说规则。
  • ❌ 忽略版本:提到HTTPS时只讲TLS 1.2,没有提到1.3的改进。
  • ❌ 混淆层次:把TCP攻击和HTTP攻击混为一谈。
  • ❌ 缺乏量化:没有数字(如半连接队列默认值128,攻击QPS等)。
  • ❌ 死记硬背:回答像背诵大纲,没有个人思考。
面试加分点:主动提到用ss -s查看TCP状态、dig +dnssec验证DNSSEC、openssl s_client调试握手过程,会让面试官认为你动手能力强。