Skip to content

本模块涵盖网络层和系统层安全的核心知识,包括中间人攻击、DDoS 攻防、防火墙、IDS/IPS、供应链安全、最小权限原则、安全测试方法等。是安全工程师和运维开发的必备知识。


Q1: 什么是中间人攻击(MITM)?怎么防御? 「🟡 中级」

考察点:考察网络安全基础。筛掉对 HTTPS 原理、证书体系不了解的开发和运维人员。

参考答案

中间人攻击(Man-in-the-Middle Attack,MITM)是指攻击者在通信双方之间,秘密地中继和篡改通信数据,而双方误以为在直接对话。

攻击原理

正常通信: 客户端 ←——————————→ 服务器
MITM 攻击:客户端 ←—→ 攻击者 ←—→ 服务器
          (攻击者分别与两端建立连接,中转并篡改数据)

常见实现方式

  1. ARP 欺骗(ARP Spoofing)

    • 攻击者在局域网内发送伪造的 ARP 响应
    • 将网关 IP 映射到攻击者的 MAC 地址
    • 受害者的所有流量都经过攻击者转发
    • 适用于同一局域网内的攻击
  2. DNS 劫持(DNS Hijacking)

    • 篡改 DNS 解析结果,将域名指向攻击者的 IP
    • 实现方式:路由器劫持、本地 hosts 文件篡改、运营商 DNS 污染
  3. HTTP 劫持

    • 针对 HTTP 明文流量,直接篡改响应内容
    • 运营商广告注入就是典型的 HTTP 劫持
  4. SSL 剥离(SSL Stripping)

    • 攻击者将 HTTPS 连接降级为 HTTP 连接
    • 用户以为在使用加密连接,实际是明文传输
    • 配合 ARP 欺骗实现
  5. 伪造证书攻击

    • 攻击者向客户端出示伪造的服务器证书
    • 如果客户端不验证证书有效性,攻击即可成功
    • 需要配合 DNS 劫持或 IP 劫持

防御方案

  1. HTTPS + 证书校验

    • 全站使用 HTTPS,强制加密传输
    • 客户端严格验证证书链和域名
    • 不忽略证书警告
  2. HSTS(HTTP Strict Transport Security)

    • 通过响应头 Strict-Transport-Security 强制浏览器使用 HTTPS
    • 防止 SSL 剥离攻击
    • 配合 HSTS Preload List 效果更好
  3. 证书透明度(Certificate Transparency)

    • 检测和防止恶意颁发的证书
    • 浏览器会检查证书是否在 CT 日志中
  4. 公钥固定(HPKP)

    • 固定服务器公钥,只接受指定的证书
    • 已逐渐被废弃(风险高,配置错误会导致站点无法访问)
  5. DNS 安全

    • 使用 DNSSEC(DNS 安全扩展)
    • 使用可信的 DNS 服务器(DoH/DoT)
  6. 网络层防护

    • 企业环境使用 VPN、内网隔离
    • 公共 Wi-Fi 环境使用加密隧道

追问延伸

  • HTTPS 是如何防止中间人攻击的?核心是什么?
  • 如果客户端信任了攻击者的根证书,HTTPS 还安全吗?
  • 什么是自签名证书?有什么安全风险?
  • 什么是 SSL Stripping?HSTS 如何防御它?
  • 国内运营商的 HTTP 劫持属于什么类型的 MITM?如何应对?

Q2: DDoS攻击有哪些类型?怎么防御? 「🟡 中级」

考察点:考察拒绝服务攻击的全面了解。筛掉对高可用防护无概念的运维和后端开发。

参考答案

DDoS(Distributed Denial of Service,分布式拒绝服务攻击)是指攻击者利用大量受控主机(僵尸网络),同时向目标发起大量请求,耗尽目标的带宽、连接数或计算资源,导致正常用户无法访问。

主要攻击类型

1. 网络层攻击(Layer 3/4)

  • SYN Flood

    • 利用 TCP 三次握手缺陷,发送大量 SYN 包但不完成握手
    • 服务器维护大量半开连接,耗尽连接表资源
    • 防御:SYN Cookie、SYN Proxy
  • UDP Flood

    • 发送大量 UDP 数据包,耗尽带宽和处理能力
    • 常见于 DNS、NTP 等 UDP 服务的放大攻击
  • ICMP Flood(Ping Flood)

    • 发送大量 ICMP Echo Request 数据包
    • Smurf 攻击:利用广播地址放大
  • 放大攻击(Amplification Attack)

    • DNS 放大:伪造源 IP 向 DNS 服务器发送小请求,返回大响应
    • NTP 放大:利用 NTP 的 monlist 命令,放大比可达 500+ 倍
    • Memcached 放大:放大比可达 50000+ 倍

2. 应用层攻击(Layer 7)

  • CC 攻击(Challenge Collapsar)

    • 模拟正常用户不断请求动态页面或大文件
    • 消耗服务器 CPU、内存、数据库资源
    • 比网络层攻击更隐蔽,流量不大但杀伤力强
  • HTTP Flood

    • 大量 HTTP 请求冲击 Web 服务器
    • 慢速攻击:Slowloris、Slow POST,以极慢速度发送请求,占用连接

防御方案

  1. 流量清洗(Anti-DDoS 清洗中心)

    • 将流量引流到清洗中心,过滤恶意流量后回注
    • 云厂商的高防服务(阿里云高防、AWS Shield 等)
  2. CDN 加速

    • 静态资源缓存到边缘节点,源站不直接暴露
    • CDN 节点具备一定的 DDoS 防护能力
  3. 带宽扩容 + Anycast

    • 增加带宽冗余,提高攻击门槛
    • Anycast 将流量分散到多个节点
  4. 限流与黑名单

    • 基于 IP 的速率限制
    • 异常流量特征识别和封禁
    • 地理封禁(非目标地区流量直接拦截)
  5. SYN 防护

    • SYN Cookie:不保存半开连接,用 Cookie 验证
    • SYN Proxy:代理完成 TCP 握手
  6. 应用层防护

    • WAF 防护 CC 攻击
    • 人机识别(验证码、JS 挑战)
    • 基于行为的异常检测
  7. 架构层面

    • 弹性伸缩,自动扩容
    • 多活部署,单点故障不影响全局
    • 服务降级预案

追问延伸

  • SYN Flood 的原理是什么?SYN Cookie 如何防御?
  • 什么是放大攻击?为什么 DNS/NTP/Memcached 可以被利用?
  • CC 攻击和 SYN Flood 有什么区别?防御思路有什么不同?
  • 什么是慢连接攻击(Slowloris)?如何防御?
  • 如何区分正常的业务高峰和 DDoS 攻击?

Q3: 什么是防火墙?有哪些类型? 「🟢 校招/初级」

考察点:考察网络安全基础知识。筛掉对网络隔离和访问控制基本概念不了解的候选人。

参考答案

防火墙(Firewall)是一种网络安全设备,位于两个或多个网络之间,根据预设的安全规则,对进出的网络流量进行监控和控制,阻止未授权的访问和恶意流量。

按技术原理分类

  1. 包过滤防火墙(Packet Filtering)

    • 工作在网络层和传输层
    • 根据源 IP、目的 IP、端口号、协议类型等过滤数据包
    • 速度快,但不检查数据包内容,无法应对应用层攻击
  2. 状态检测防火墙(Stateful Inspection)

    • 也叫动态包过滤防火墙
    • 维护连接状态表,跟踪 TCP 连接的完整状态
    • 只允许属于已建立连接的数据包通过
    • 比包过滤更安全,是目前主流的防火墙类型
  3. 应用层防火墙(Application Layer Firewall)

    • 工作在应用层,理解应用协议
    • 可以检测 HTTP、FTP 等协议的具体内容
    • WAF(Web 应用防火墙)就是典型的应用层防火墙
  4. 代理防火墙(Proxy Firewall)

    • 也叫应用网关防火墙
    • 所有流量都经过代理,防火墙作为中间人
    • 安全性高,但性能开销大

按部署形态分类

  • 硬件防火墙:独立硬件设备,性能高,企业边界部署
  • 软件防火墙:安装在服务器上,如 iptables、Windows 防火墙
  • 云防火墙:云厂商提供的 SaaS 化防火墙服务

常见的防火墙产品/概念

  • WAF(Web Application Firewall):Web 应用防火墙,防护 SQL 注入、XSS 等应用层攻击
  • NGFW(Next-Generation Firewall):下一代防火墙,集成传统防火墙 + IPS + 应用识别 + 内容过滤等
  • UTM(Unified Threat Management):统一威胁管理,整合防火墙、杀毒、入侵检测等多种功能

防火墙的核心策略

  • 默认拒绝(Deny by Default):白名单机制,只放行明确允许的流量
  • 最小权限原则:只开放必要的端口和服务
  • 网络隔离:DMZ 区、内网区、管理区等不同安全域的隔离

追问延伸

  • 防火墙和 WAF 有什么区别?各自防护什么?
  • 状态检测防火墙比包过滤防火墙好在哪里?
  • 什么是 DMZ 区?为什么要设计 DMZ?
  • iptables 的四表五链是什么?
  • 防火墙能防 DDoS 吗?有什么局限性?

Q4: 什么是入侵检测/入侵防御系统(IDS/IPS)? 「🟡 中级」

考察点:考察安全监控体系的理解。筛掉对安全检测和防御手段不了解的运维和安全人员。

参考答案

IDS(Intrusion Detection System,入侵检测系统) 是一种监控网络或系统流量,检测可疑活动和安全事件的系统。它侧重于"检测",发现攻击后发出告警,但不主动阻断。

IPS(Intrusion Prevention System,入侵防御系统) 在 IDS 的基础上增加了阻断能力,不仅检测攻击,还能主动拦截和阻止攻击行为。它部署在网络路径上,实时过滤恶意流量。

与防火墙的区别

特性防火墙IDSIPS
工作方式基于规则放行/阻断旁路监听,检测告警串接部署,检测并阻断
关注点访问控制(能不能过)攻击检测(有没有攻击)实时防护(检测+阻断)
部署位置网络边界旁路镜像串接在链路中
对性能影响有影响无影响(旁路)有影响(串接)

检测原理分类

  1. 基于特征的检测(Signature-based)

    • 也叫误用检测(Misuse Detection)
    • 维护已知攻击的特征库,匹配特征即告警
    • 优点:准确率高,误报少
    • 缺点:无法检测未知攻击(0day),特征库需要持续更新
  2. 基于异常的检测(Anomaly-based)

    • 建立正常行为基线,偏离基线即视为异常
    • 优点:可以检测未知攻击
    • 缺点:误报率高,正常行为变化需要重新学习
  3. 基于协议分析的检测

    • 深度解析网络协议,检测协议异常
    • 如 HTTP 协议格式异常、DNS 隧道等

部署方式

  • NIDS(网络型 IDS):部署在网络关键节点,监控整个网段流量
  • HIDS(主机型 IDS):安装在服务器上,监控系统日志、文件变化、进程等
  • NIPS(网络型 IPS):串接在网络链路中,实时阻断攻击
  • HIPS(主机型 IPS):主机级别的防护,如 EDR 产品

常见工具

  • 开源 IDS/IPS:Snort、Suricata、Bro(Zeek)
  • 商业产品:Palo Alto、Fortinet、启明星辰、绿盟等

追问延伸

  • IDS 和 IPS 的主要区别是什么?什么场景下用 IDS,什么场景下用 IPS?
  • 基于特征和基于异常的检测各有什么优缺点?
  • 什么是误报(False Positive)和漏报(False Negative)?如何平衡?
  • WAF 和 IPS 有什么区别?
  • 什么是蜜罐?和 IDS 有什么关系?

Q5: 什么是供应链安全?如何防范? 「🔴 高级」

考察点:考察软件供应链安全的理解。筛掉对第三方依赖风险无意识的开发和架构人员。

参考答案

软件供应链安全是指保护软件开发、分发、使用全过程中的安全,防止攻击者通过篡改依赖组件、开发工具、分发渠道等方式植入恶意代码或漏洞。

典型攻击方式

  1. 依赖漏洞利用

    • 开源组件存在已知漏洞(如 Log4j、Heartbleed)
    • 项目引入有漏洞的依赖,攻击者利用漏洞入侵
  2. 恶意包投毒

    • 攻击者发布名称相似的恶意包(typosquatting,拼写劫持)
    • loadsh 冒充 lodashpython-dateuti 冒充 python-dateutil
    • 开发者手滑输错包名,下载到恶意包
  3. 账号劫持

    • 窃取开源维护者的账号,发布包含恶意代码的版本
    • 如 event-stream 事件:维护者账号被接管,注入窃取加密货币的代码
  4. 构建投毒

    • 攻击 CI/CD 流水线,在构建过程中注入恶意代码
    • 如 SolarWinds 事件:攻击者入侵软件供应商,在更新包中植入后门
  5. 源码篡改

    • 攻击代码仓库,直接向源码中注入后门
    • 如 xz-utils 后门事件:维护者身份被渗透,长期逐步植入后门

防御方案

  1. 依赖漏洞扫描

    • 使用 SCA(Software Composition Analysis)工具扫描依赖漏洞
    • 工具:Snyk、Dependabot、OWASP Dependency-Check、Trivy
    • 集成到 CI/CD 流水线,漏洞阻断上线
  2. 依赖锁版本

    • 使用 lock 文件(package-lock.json、go.sum、Pipfile.lock)
    • 确保每次安装的版本一致,防止供应链攻击
  3. 签名校验

    • 验证软件包的数字签名,确保来源可信
    • npm provenance、Sigstore 等方案
  4. SBOM(软件物料清单)

    • 生成软件所有依赖的完整清单
    • 出问题时能快速定位影响范围
    • 格式:CycloneDX、SPDX
  5. 最小依赖原则

    • 减少不必要的依赖,降低攻击面
    • 定期清理不再使用的依赖
    • 评估依赖的维护状态和社区健康度
  6. CI/CD 安全

    • 保护流水线凭证和密钥
    • 最小权限配置
    • 构建环境隔离
    • 制品签名和验证
  7. 监控和应急

    • 订阅安全漏洞通告
    • 建立应急响应流程
    • 定期做供应链安全审计

追问延伸

  • 你了解哪些著名的供应链攻击事件?(SolarWinds、Log4j、xz-utils、event-stream)
  • 什么是 SCA?和 SAST、DAST 有什么区别?
  • npm 的 package-lock.json 能防什么?不能防什么?
  • 什么是 SBOM?为什么越来越重要?
  • 如何评估一个开源依赖是否安全可信?
  • 什么是混淆攻击(Provenance Confusion Attack)?

Q6: 什么是最小权限原则? 「🟢 校招/初级」

考察点:考察安全设计的基本原则。筛掉对安全设计理念完全没概念的初级开发和运维。

参考答案

最小权限原则(Principle of Least Privilege,PoLP)是指每个用户、程序或系统组件,只应该拥有完成其任务所必需的最少权限,不多也不少。

核心思想

任何主体(用户、进程、服务)只能获得其执行合法任务所需的最小权限集合。

为什么重要

  • 降低攻击面:权限越小,被攻击后的影响范围越小
  • 限制横向移动:攻击者攻破一个账号后,无法轻易获取更多权限
  • 减少人为失误:权限小,误操作的破坏力也小
  • 满足合规要求:等保、GDPR 等法规都要求最小权限

实践场景

  1. 服务账号权限

    • Web 服务进程不要用 root/admin 运行
    • 使用专用的低权限账号启动服务
    • Docker 容器中使用非 root 用户
  2. 数据库账号

    • 业务账号只授予 SELECT/INSERT/UPDATE 权限
    • 不给 DROP、ALTER、FILE 等高危权限
    • 不同业务使用不同账号,互不干扰
  3. 操作系统权限

    • 日常使用普通用户账号,不用管理员账号
    • 需要管理员权限时再 sudo 提权
    • Linux 的 sudo 配置、Windows 的 UAC
  4. API 权限

    • 接口权限最小化,每个接口只开放必要数据
    • OAuth 2.0 的 scope 机制就是最小权限的体现
    • API Key 粒度细化,不同用途使用不同 Key
  5. 文件系统权限

    • 配置文件只对应用账号可读
    • 可执行文件只授予执行权限,不给写权限
    • Web 目录禁止执行权限
  6. 云平台权限

    • IAM 角色遵循最小权限
    • 使用策略限制资源访问范围
    • 临时凭证(STS)替代长期密钥

实施方法

  • 从零权限开始,按需逐步添加(白名单思维)
  • 定期审计权限,回收不再需要的权限
  • 职责分离(SoD):关键操作需要多人配合
  • 自动化权限治理

追问延伸

  • 最小权限和职责分离(Separation of Duties)有什么区别和联系?
  • Docker 容器为什么不建议用 root 运行?有什么安全风险?
  • 什么是权限提升(Privilege Escalation)?和最小权限有什么关系?
  • 微服务架构下如何落地最小权限原则?
  • 数据库的最小权限具体怎么做?读写分离账号怎么设计?

Q7: 漏洞扫描和渗透测试有什么区别? 「🟡 中级」

考察点:考察安全测试方法的理解。筛掉对安全测试手段和边界不清晰的开发和安全人员。

参考答案

漏洞扫描和渗透测试都是发现系统安全问题的手段,但在方式、深度、成本等方面有显著区别。

核心区别

维度漏洞扫描渗透测试
执行方式自动化工具扫描人工为主,工具辅助
广度深度广度大,深度浅广度有限,深度深
成本低,可高频执行高,通常定期执行
误报率较高,需要人工验证低,结果经过验证
发现的问题已知漏洞、配置问题已知+未知漏洞、业务逻辑漏洞
结果利用发现漏洞点完整利用链,验证实际危害

漏洞扫描(Vulnerability Scanning)

  • 定义:使用自动化工具对系统、应用、网络进行扫描,发现已知的安全漏洞
  • 常见工具
    • 主机/网络漏洞扫描:Nessus、OpenVAS、Nmap
    • Web 漏洞扫描:AWVS、AppScan、Burp Scanner、Xray
    • 容器/镜像扫描:Trivy、Aqua
    • 代码漏洞扫描:SonarQube、Semgrep(SAST)
  • 优点:速度快、成本低、可自动化、覆盖范围广
  • 缺点:误报率高、无法发现业务逻辑漏洞、无法验证漏洞的真实危害

渗透测试(Penetration Testing)

  • 定义:模拟真实攻击者的思路和方法,对目标系统进行全面的安全测试,发现漏洞并验证其可利用性和实际危害
  • 渗透测试类型
    • 黑盒测试:测试者不了解系统内部结构
    • 白盒测试:测试者拥有源码和架构信息
    • 灰盒测试:介于两者之间
  • 优点:结果真实可靠、能发现业务逻辑漏洞、能评估实际风险
  • 缺点:成本高、周期长、依赖测试者水平、覆盖面有限

常见的安全测试分类

  • SAST(静态应用安全测试):分析源码找漏洞
  • DAST(动态应用安全测试):运行时扫描,即黑盒扫描
  • IAST(交互式应用安全测试):结合 SAST 和 DAST,插桩检测
  • SCA(软件成分分析):扫描第三方依赖漏洞
  • 渗透测试:人工深度测试

实际应用中的关系

  • 漏洞扫描是渗透测试的前置步骤,先扫出漏洞再人工验证和利用
  • 渗透测试是漏洞扫描的深度补充,发现自动化工具找不到的问题
  • 两者互补,形成完整的安全测试体系

追问延伸

  • SAST 和 DAST 有什么区别?各自适合什么场景?
  • 渗透测试中人工的价值体现在哪里?为什么自动化工具无法替代?
  • 什么是业务逻辑漏洞?举几个例子。
  • 红蓝对抗和渗透测试有什么区别?
  • 如何选择漏洞扫描工具?有哪些评估维度?