Appearance
本模块涵盖网络层和系统层安全的核心知识,包括中间人攻击、DDoS 攻防、防火墙、IDS/IPS、供应链安全、最小权限原则、安全测试方法等。是安全工程师和运维开发的必备知识。
Q1: 什么是中间人攻击(MITM)?怎么防御? 「🟡 中级」
考察点:考察网络安全基础。筛掉对 HTTPS 原理、证书体系不了解的开发和运维人员。
参考答案:
中间人攻击(Man-in-the-Middle Attack,MITM)是指攻击者在通信双方之间,秘密地中继和篡改通信数据,而双方误以为在直接对话。
攻击原理:
正常通信: 客户端 ←——————————→ 服务器
MITM 攻击:客户端 ←—→ 攻击者 ←—→ 服务器
(攻击者分别与两端建立连接,中转并篡改数据)常见实现方式:
ARP 欺骗(ARP Spoofing)
- 攻击者在局域网内发送伪造的 ARP 响应
- 将网关 IP 映射到攻击者的 MAC 地址
- 受害者的所有流量都经过攻击者转发
- 适用于同一局域网内的攻击
DNS 劫持(DNS Hijacking)
- 篡改 DNS 解析结果,将域名指向攻击者的 IP
- 实现方式:路由器劫持、本地 hosts 文件篡改、运营商 DNS 污染
HTTP 劫持
- 针对 HTTP 明文流量,直接篡改响应内容
- 运营商广告注入就是典型的 HTTP 劫持
SSL 剥离(SSL Stripping)
- 攻击者将 HTTPS 连接降级为 HTTP 连接
- 用户以为在使用加密连接,实际是明文传输
- 配合 ARP 欺骗实现
伪造证书攻击
- 攻击者向客户端出示伪造的服务器证书
- 如果客户端不验证证书有效性,攻击即可成功
- 需要配合 DNS 劫持或 IP 劫持
防御方案:
HTTPS + 证书校验
- 全站使用 HTTPS,强制加密传输
- 客户端严格验证证书链和域名
- 不忽略证书警告
HSTS(HTTP Strict Transport Security)
- 通过响应头
Strict-Transport-Security强制浏览器使用 HTTPS - 防止 SSL 剥离攻击
- 配合 HSTS Preload List 效果更好
- 通过响应头
证书透明度(Certificate Transparency)
- 检测和防止恶意颁发的证书
- 浏览器会检查证书是否在 CT 日志中
公钥固定(HPKP)
- 固定服务器公钥,只接受指定的证书
- 已逐渐被废弃(风险高,配置错误会导致站点无法访问)
DNS 安全
- 使用 DNSSEC(DNS 安全扩展)
- 使用可信的 DNS 服务器(DoH/DoT)
网络层防护
- 企业环境使用 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,以极慢速度发送请求,占用连接
防御方案:
流量清洗(Anti-DDoS 清洗中心)
- 将流量引流到清洗中心,过滤恶意流量后回注
- 云厂商的高防服务(阿里云高防、AWS Shield 等)
CDN 加速
- 静态资源缓存到边缘节点,源站不直接暴露
- CDN 节点具备一定的 DDoS 防护能力
带宽扩容 + Anycast
- 增加带宽冗余,提高攻击门槛
- Anycast 将流量分散到多个节点
限流与黑名单
- 基于 IP 的速率限制
- 异常流量特征识别和封禁
- 地理封禁(非目标地区流量直接拦截)
SYN 防护
- SYN Cookie:不保存半开连接,用 Cookie 验证
- SYN Proxy:代理完成 TCP 握手
应用层防护
- WAF 防护 CC 攻击
- 人机识别(验证码、JS 挑战)
- 基于行为的异常检测
架构层面
- 弹性伸缩,自动扩容
- 多活部署,单点故障不影响全局
- 服务降级预案
追问延伸:
- SYN Flood 的原理是什么?SYN Cookie 如何防御?
- 什么是放大攻击?为什么 DNS/NTP/Memcached 可以被利用?
- CC 攻击和 SYN Flood 有什么区别?防御思路有什么不同?
- 什么是慢连接攻击(Slowloris)?如何防御?
- 如何区分正常的业务高峰和 DDoS 攻击?
Q3: 什么是防火墙?有哪些类型? 「🟢 校招/初级」
考察点:考察网络安全基础知识。筛掉对网络隔离和访问控制基本概念不了解的候选人。
参考答案:
防火墙(Firewall)是一种网络安全设备,位于两个或多个网络之间,根据预设的安全规则,对进出的网络流量进行监控和控制,阻止未授权的访问和恶意流量。
按技术原理分类:
包过滤防火墙(Packet Filtering)
- 工作在网络层和传输层
- 根据源 IP、目的 IP、端口号、协议类型等过滤数据包
- 速度快,但不检查数据包内容,无法应对应用层攻击
状态检测防火墙(Stateful Inspection)
- 也叫动态包过滤防火墙
- 维护连接状态表,跟踪 TCP 连接的完整状态
- 只允许属于已建立连接的数据包通过
- 比包过滤更安全,是目前主流的防火墙类型
应用层防火墙(Application Layer Firewall)
- 工作在应用层,理解应用协议
- 可以检测 HTTP、FTP 等协议的具体内容
- WAF(Web 应用防火墙)就是典型的应用层防火墙
代理防火墙(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 的基础上增加了阻断能力,不仅检测攻击,还能主动拦截和阻止攻击行为。它部署在网络路径上,实时过滤恶意流量。
与防火墙的区别:
| 特性 | 防火墙 | IDS | IPS |
|---|---|---|---|
| 工作方式 | 基于规则放行/阻断 | 旁路监听,检测告警 | 串接部署,检测并阻断 |
| 关注点 | 访问控制(能不能过) | 攻击检测(有没有攻击) | 实时防护(检测+阻断) |
| 部署位置 | 网络边界 | 旁路镜像 | 串接在链路中 |
| 对性能影响 | 有影响 | 无影响(旁路) | 有影响(串接) |
检测原理分类:
基于特征的检测(Signature-based)
- 也叫误用检测(Misuse Detection)
- 维护已知攻击的特征库,匹配特征即告警
- 优点:准确率高,误报少
- 缺点:无法检测未知攻击(0day),特征库需要持续更新
基于异常的检测(Anomaly-based)
- 建立正常行为基线,偏离基线即视为异常
- 优点:可以检测未知攻击
- 缺点:误报率高,正常行为变化需要重新学习
基于协议分析的检测
- 深度解析网络协议,检测协议异常
- 如 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: 什么是供应链安全?如何防范? 「🔴 高级」
考察点:考察软件供应链安全的理解。筛掉对第三方依赖风险无意识的开发和架构人员。
参考答案:
软件供应链安全是指保护软件开发、分发、使用全过程中的安全,防止攻击者通过篡改依赖组件、开发工具、分发渠道等方式植入恶意代码或漏洞。
典型攻击方式:
依赖漏洞利用
- 开源组件存在已知漏洞(如 Log4j、Heartbleed)
- 项目引入有漏洞的依赖,攻击者利用漏洞入侵
恶意包投毒
- 攻击者发布名称相似的恶意包(typosquatting,拼写劫持)
- 如
loadsh冒充lodash,python-dateuti冒充python-dateutil - 开发者手滑输错包名,下载到恶意包
账号劫持
- 窃取开源维护者的账号,发布包含恶意代码的版本
- 如 event-stream 事件:维护者账号被接管,注入窃取加密货币的代码
构建投毒
- 攻击 CI/CD 流水线,在构建过程中注入恶意代码
- 如 SolarWinds 事件:攻击者入侵软件供应商,在更新包中植入后门
源码篡改
- 攻击代码仓库,直接向源码中注入后门
- 如 xz-utils 后门事件:维护者身份被渗透,长期逐步植入后门
防御方案:
依赖漏洞扫描
- 使用 SCA(Software Composition Analysis)工具扫描依赖漏洞
- 工具:Snyk、Dependabot、OWASP Dependency-Check、Trivy
- 集成到 CI/CD 流水线,漏洞阻断上线
依赖锁版本
- 使用 lock 文件(package-lock.json、go.sum、Pipfile.lock)
- 确保每次安装的版本一致,防止供应链攻击
签名校验
- 验证软件包的数字签名,确保来源可信
- npm provenance、Sigstore 等方案
SBOM(软件物料清单)
- 生成软件所有依赖的完整清单
- 出问题时能快速定位影响范围
- 格式:CycloneDX、SPDX
最小依赖原则
- 减少不必要的依赖,降低攻击面
- 定期清理不再使用的依赖
- 评估依赖的维护状态和社区健康度
CI/CD 安全
- 保护流水线凭证和密钥
- 最小权限配置
- 构建环境隔离
- 制品签名和验证
监控和应急
- 订阅安全漏洞通告
- 建立应急响应流程
- 定期做供应链安全审计
追问延伸:
- 你了解哪些著名的供应链攻击事件?(SolarWinds、Log4j、xz-utils、event-stream)
- 什么是 SCA?和 SAST、DAST 有什么区别?
- npm 的 package-lock.json 能防什么?不能防什么?
- 什么是 SBOM?为什么越来越重要?
- 如何评估一个开源依赖是否安全可信?
- 什么是混淆攻击(Provenance Confusion Attack)?
Q6: 什么是最小权限原则? 「🟢 校招/初级」
考察点:考察安全设计的基本原则。筛掉对安全设计理念完全没概念的初级开发和运维。
参考答案:
最小权限原则(Principle of Least Privilege,PoLP)是指每个用户、程序或系统组件,只应该拥有完成其任务所必需的最少权限,不多也不少。
核心思想:
任何主体(用户、进程、服务)只能获得其执行合法任务所需的最小权限集合。
为什么重要:
- 降低攻击面:权限越小,被攻击后的影响范围越小
- 限制横向移动:攻击者攻破一个账号后,无法轻易获取更多权限
- 减少人为失误:权限小,误操作的破坏力也小
- 满足合规要求:等保、GDPR 等法规都要求最小权限
实践场景:
服务账号权限
- Web 服务进程不要用 root/admin 运行
- 使用专用的低权限账号启动服务
- Docker 容器中使用非 root 用户
数据库账号
- 业务账号只授予 SELECT/INSERT/UPDATE 权限
- 不给 DROP、ALTER、FILE 等高危权限
- 不同业务使用不同账号,互不干扰
操作系统权限
- 日常使用普通用户账号,不用管理员账号
- 需要管理员权限时再 sudo 提权
- Linux 的 sudo 配置、Windows 的 UAC
API 权限
- 接口权限最小化,每个接口只开放必要数据
- OAuth 2.0 的 scope 机制就是最小权限的体现
- API Key 粒度细化,不同用途使用不同 Key
文件系统权限
- 配置文件只对应用账号可读
- 可执行文件只授予执行权限,不给写权限
- Web 目录禁止执行权限
云平台权限
- 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 有什么区别?各自适合什么场景?
- 渗透测试中人工的价值体现在哪里?为什么自动化工具无法替代?
- 什么是业务逻辑漏洞?举几个例子。
- 红蓝对抗和渗透测试有什么区别?
- 如何选择漏洞扫描工具?有哪些评估维度?