Module 05 · 对应课件 sld5

Web 安全、防火墙与入侵检测:把密码学用到网络上

Web Security (SSL, TLS, SET) · Firewalls · Intrusion Detection

约 60 分钟11 道小测2 个动手实验Quiz 样题 Part 5 · 18 题

模块 4 学了加密、签名、证书、混合系统这些“零件”,这一章看它们怎么组装成你每天都在用的 HTTPS。后半章讲网络的“门卫”防火墙和“监控摄像头”入侵检测系统。建议先学完模块 4 再来。

学完这一章,你应该能:

  • 说出 HTTP 为什么不安全,HTTPS 加了什么(端口 80 vs 443);
  • 画出 SSL/TLS 的协议分层,说出 Record、Handshake、Alert、Change Cipher Spec 各管什么;
  • 按顺序讲出一次 TLS 握手,并说清 TLS 1.3 为什么去掉了 RSA 密钥交换(前向保密);
  • 比较 SSL 和 SET;
  • 区分包过滤、状态检测(SPI)、代理防火墙,手算规则匹配和防火墙吞吐量;
  • 认出四种防火墙架构,尤其是带 DMZ 的 screened subnet;
  • 区分 HIDS 和 NIDS、特征检测和异常检测、IDS 和 IPS。
老师课上强调 · 录音 W8
  • Quiz 范围到 Part 5 为止(P6 不考)。
  • 老师重点讲了:HTTPS 端口、为什么不认证客户端、SSL/TLS 版本时间线、TLS 1.3 为什么去掉 RSA 密钥交换(前向保密,改用临时 DH)。

1HTTP 为什么不安全,HTTPS 加了什么

你在浏览器里打开一个网页,浏览器(客户端)用 HTTP 协议向服务器发请求,服务器返回网页。HTTP 是一问一答式的请求-响应模型,而且无状态:每个请求都是独立的,网站靠 cookie 记住你是谁(所以模块 1 说 cookie 记录太多信息时会变成“间谍”)。常见请求方法:GET 取数据,POST 提交数据,PUT 更新,DELETE 删除,HEAD 只取头部。

问题在于:HTTP 是明文的。课件 P5-3 列出了它面临的威胁,正好对上 CIA 和认证:

威胁具体表现
Integrity 完整性数据在传输途中被修改、插入内容
Confidentiality 机密性网络上被窃听;服务器上的数据被偷
Authentication 认证冒充网站、伪造数据
Denial of serviceWeb 服务器被黑、被打瘫

HTTPS = HTTP + TLS

HTTPHTTPS
端口80443
加密无,明文TLS/SSL 加密
认证无验证服务器身份(证书)
完整性数据可被修改数据不能被篡改
速度略快略慢(要先做 TLS 握手)
类比

HTTP 像寄明信片:邮递员、分拣员谁都能看,甚至能改上面的字。HTTPS 像把信装进上锁的保险袋,而且袋子上有收件方的防伪印章。

课件 P5-6 说:如果你今天网购过、叫过 Grab、用过 WhatsApp 或 Zoom、刷过 YouTube、查过邮件,或者见过地址栏里的小锁,你就已经用过 SSL/TLS 了。网页和邮件是 99% 成功入侵的关键入口,所以 Web 安全格外重要。

HTTPS 默认使用哪个端口?

HTTP 用 80,HTTPS 用 443(22 是 SSH)。

老师课上强调 · W8

HTTP 用 80 端口、不加密;HTTPS 用 443 端口。按协议客户端也可以认证,但几乎从不这样做:每个用户都要买证书,速度慢、不好用。所以只有服务器必须有证书。

2SSL/TLS 的来历与分层结构

历史(P5-8~P5-10)

时间事件
1994Netscape 内部设计 SSL;SSLv1 在发布会上就被观众当场破解
1994–95SSLv2 随 Navigator 发布,但有中间人攻击漏洞
1996SSLv3,Netscape 和密码学家 Paul Kocher 设计,公开征求意见
1999IETF 接手,把 SSL 3.0 改名为 TLS 1.0(可以看作 SSL 3.1)
2006 / 2008TLS 1.1;TLS 1.2(支持 AES、SHA-256,至今仍广泛使用)
2015SSL 3.0 被禁用(POODLE 攻击),SSL 正式淘汰
2018TLS 1.3 定稿:握手更快、前向保密、去掉弱算法
2020TLS 1.0 和 1.1 被弃用

很多人还习惯说“SSL”,但现在实际用的都是 TLS。

老师课上强调 · W8
  • SSL 由 Netscape 在 1994 年推出(ElGamal 主导),SSL 3.0 在 1996 年;1999 年交给 IETF,改名 TLS 1.0;TLS 1.1 在 2006 年、1.2 在 2008 年、1.3 在 2018 年 3 月。
  • SSL 3.0 在 2015 年禁用,TLS 1.0/1.1 在 2020 年禁用。原计划 2020 年底全部改用 1.3,但因疫情没有强制执行。
  • 老师用 SSL Labs 演示:微信、Facebook、Google 还开着 1.0/1.1,评分 B(为了用户量和广告收入);Microsoft、NTU 关掉了,评分 A+。

SSL 的目标

机密性和完整性(靠加密),以及认证(用数字证书认证服务器,认证客户端的情况很少见)。它内置在所有主流浏览器和服务器里,开箱即用(样题 Q5-5:True)。

两层协议(P5-12)

Handshake握手:认证 + 协商 Change CipherSpec:启用新参数 Alert告警 HTTP应用数据 SSL/TLS Record Protocol 记录协议提供机密性 + 消息完整性(用握手协商出的密钥) TCP IP
SSL/TLS 夹在 HTTP 和 TCP 之间:上层三个子协议,下层是记录协议。
  • Session(会话):客户端和服务器之间的一种关联,由握手协议建立,定义了一组安全参数,可以被多个连接共享;
  • Connection(连接):一条端到端的可靠安全通道,每个连接都属于某个会话。

Record 协议怎么处理数据(P5-14)

应用数据 → ① Fragment 分片 → ② Compress 压缩 → ③ Add MAC 加消息认证码 → ④ Encrypt 加密 → ⑤ 加 SSL 记录头

MAC 保证完整性,加密保证机密性(样题 Q5-3:记录协议提供 message integrity 和 confidentiality)。为什么先压缩再加密?因为密文看起来是随机的,压缩不了。

另外两个小协议

  • Change Cipher Spec:非常简单,只做一件事:把“待定”(pending)的参数切换成“当前”(current),也就是正式启用协商好的加密套件;
  • Alert:向对方发送告警(样题 Q5-4),每条 2 字节:一个字节表示 fatal 或 warning,一个字节是告警代码,比如 bad record MAC、handshake failure、bad certificate、certificate expired、certificate revoked。
老师课上强调 · W8

证书出问题(过期、被吊销、未知 CA、不支持的证书)时由 Alert 协议报警,还包括坏的 MAC、解压失败、握手失败等。四个子协议里最复杂的是 Handshake。

密钥长度(P5-11)

SSL/TLS 用两种密钥:公私钥建议 2048 位(512 位弱,1024 位也能被破解);会话密钥每次连接时生成,一般 40–256 位,低于 128 位就不安全。如果浏览器支持 256 位而服务器只支持 128 位,连接按 128 位建立。会话密钥可以比公钥短,因为它被破解只影响一次会话,而且能减轻服务器负担。

SSL 记录协议为连接提供的两项服务是消息完整性和什么?(样题 Q5-3)

记录协议负责“加 MAC(完整性)+ 加密(机密性)”。认证是握手协议做的事。

老师课上强调 · W8

公钥(RSA/DH):512 位很弱,1024 位能被破,至少 2048 位。会话密钥:128 位就够了,低于 128 位不安全,浏览器最高支持 256 位。

3一次 TLS 握手:最复杂的部分

握手协议是 SSL/TLS 最复杂的部分(样题 Q5-1)。它要完成三件事:双方互相认证、协商加密和 MAC 算法、协商出密钥。其实就是模块 4 的混合系统在真实世界里的样子。

经典 TLS 握手(RSA 密钥交换,P5-17)

① ClientHello(客户端 → 服务器)

“你好,我想建立安全连接。我支持这些算法组合:……”这份算法组合的列表就是 cipher suite(密码套件)(样题 Q5-2)。一个套件包括:密钥交换算法 + 加密算法 + 哈希/MAC 算法,例如 RSA + AES-128 + SHA-256。

② ServerHello(服务器 → 客户端)

“好的,我们就用这个套件。”服务器从客户端的列表里选一个。

③ Certificate(服务器 → 客户端)

服务器发来自己的数字证书,里面有它的公钥。客户端按模块 4 的三步验证证书:CA 签名、有效期、吊销状态。

④ ServerHelloDone

“我这边说完了。”

⑤ ClientKeyExchange(客户端 → 服务器)

客户端随机生成一把对称会话密钥,用服务器的公钥加密后发过去。服务器用自己的私钥解开,现在双方都有了同一把会话密钥,Eve 没有。

⑥ ChangeCipherSpec

客户端把选定的加密套件从“待定”切换为“启用”。

⑦ Finished

客户端表示握手结束。从此进入正常通信阶段,所有数据都用对称会话密钥加密,由记录协议负责。

把模块 4 串起来

证书(认证服务器)+ 公钥加密(安全地送出会话密钥)+ 对称加密(快速加密数据)+ MAC/哈希(完整性)。一次握手把整章密码学都用上了。

深入一步:密钥是怎么一步步算出来的

上面第 ⑤ 步说“客户端生成会话密钥”,严格来说过程是这样的:

  1. ClientHello 和 ServerHello 里,双方各自带了一个随机数(Client Random、Server Random),明文传输;
  2. 客户端生成一个 pre-master secret(预主密钥),用服务器公钥加密后发出,只有服务器能解开;
  3. 双方用同一个公式算出 master secret(主密钥) = 函数(pre-master secret, Client Random, Server Random);
  4. 再从主密钥里切分出 4 把具体的钥匙:
钥匙用途
客户端 → 服务器的加密密钥Record 加密(机密性)
服务器 → 客户端的加密密钥Record 加密
客户端 → 服务器的 MAC 密钥Record 加 MAC(完整性)
服务器 → 客户端的 MAC 密钥Record 加 MAC

Finished 消息:检查握手有没有被动过手脚

第 ⑦ 步的 Finished 不只是说“我完了”。客户端把到目前为止双方交换的所有握手消息放在一起,用主密钥算出一个校验值(本质上是一个 MAC),加密后发出。服务器自己也算一遍:一致,说明每一步都没被中间人篡改(比如没人偷偷把 cipher suite 换成更弱的);不一致,就发 Alert(handshake failure),中断连接。服务器随后也回一组 ChangeCipherSpec + Finished。

MAC 到底在哪个部分

MAC 不属于某一个单独的步骤,它贯穿整个过程:

阶段MAC 的角色
Handshake ① ②选定 MAC 算法:cipher suite 里的最后一段,例如 TLS_RSA_WITH_AES_128_CBC_SHA256(依次是密钥交换、加密算法、MAC/哈希算法)
Handshake ⑤生成 MAC 密钥:从主密钥推导出来
Handshake ⑦ Finished用 MAC 式的校验值保护握手过程本身
Record 协议(之后每一条数据)真正使用 MAC:分片 → 压缩 → 加 MAC → 加密 → 加记录头
一句话

握手负责“定好用哪种 MAC、生成 MAC 密钥”,Record 负责“给每条数据加上 MAC”。所以样题 Q5-3 说 Record 协议提供的是 integrity(靠 MAC)和 confidentiality(靠加密);authentication 是握手负责的(验证证书)。

为什么用 MAC,而不是普通哈希

普通哈希谁都能算:Eve 改了数据,可以顺手重算一个新哈希附上,接收方发现不了。MAC 是带密钥的哈希:必须知道 MAC 密钥才能算出正确的值,而这把密钥是握手时双方私下推导的,Eve 不知道,所以她改了数据也伪造不出正确的 MAC。

类比

普通哈希像谁都能盖的普通印章;MAC 像只有你们两人才有的私章。

TLS 1.3 的变化(只考概念)

TLS 1.3 不再用 RSA 加密 pre-master secret,改用 ephemeral DH(见下一节);MAC 和加密合并成一体(AEAD,例如 AES-GCM),完整性仍然有,只是不再单独做“加 MAC”这一步。考试按课件的 TLS 1.2 流程回答即可。

TLS 中,给每条应用数据加上 MAC 的是哪个协议?

握手只负责选定 MAC 算法、生成 MAC 密钥;真正给每条数据加 MAC 的是 Record 协议。

客户端在 ClientHello 里列出的“自己支持的密码算法组合”叫什么?

Cipher suite(样题 Q5-2)。服务器在 ServerHello 里从中选一个。

4TLS 1.3:为什么去掉了 RSA 密钥交换

TLS 有两种交换密钥的方式(P5-18~P5-20):

  1. RSA 密钥交换:上一节那种,客户端决定会话密钥,用服务器公钥加密后发出;
  2. Diffie-Hellman 密钥协商:双方各自生成密钥对,交换公开部分,各自算出同一个值(pre-master secret)。服务器用数字签名保证交换没被篡改。如果每次连接都换一对新的密钥,就叫 ephemeral(临时的)DH。

RSA 方式的致命问题:没有前向保密

一个故事

Eve 没法破解你和银行的通信,于是她先全部录下来存着。三年后,银行服务器被黑,RSA 私钥泄露。Eve 拿出三年前的录音,用这把私钥解开当年加密的会话密钥,你过去三年的所有通信全部被解密。

这就是课件说的 “RSA mode … is not forward secret”。前向保密(Forward Secrecy / PFS)的意思是:即使长期私钥日后泄露,过去的会话也依然安全。ephemeral DH 能做到这一点,因为每次会话的密钥都是临时生成、用完就扔的,私钥泄露也推不出当年的会话密钥。

所以 TLS 1.3 去掉了 RSA 密钥交换,只保留 ephemeral Diffie-Hellman。RSA 仍可以在 TLS 1.3 里用于签名(另外两种签名算法是 ECDSA 和 EdDSA)。

老师课上强调 · W8

老师的讲法:RSA 密钥交换下,服务器的私钥长期不变,几十亿用户共用同一把。攻击者先把密文录下来,有朝一日破了这把私钥,所有历史通信都能解开。固定参数的 DH 也有同样的问题,所以 TLS 1.3 用临时(ephemeral)DH:每次会话都重新选数字,最坏情况也只泄露一个客户的一次会话。RSA 仍可用于签名。

TLS 1.3 的其他改进(P5-21、P5-26、P5-27)

  • 支持的密码套件从 37 个减到 5 个,客户端可以直接猜对方用哪种,并提前发出自己的密钥份额;
  • 握手往返从 2 次减到 1 次(1-RTT),更快;
  • 去掉了已知有漏洞的旧算法:DES、3DES、MD5、RC4、SHA-1、RSA 密钥交换;
  • 更强的加密(AES、ChaCha20);
  • 协议更简单,管理员更不容易配置出错,而这正是 TLS 1.2 的主要问题;
  • 取消了对 SSL 的向后兼容。
老师课上强调 · W8

算法套件从 37 个减到 5 个,去掉了 DES、3DES、SHA-1、MD5。研究显示服务器出问题多半是管理员配错算法,选项少了就不容易配错。握手更短更快,回访同一服务器还能复用参数。

常见攻击与最佳实践(P5-28、P5-29)

攻击说明对策
MITM中间人截获通信用 HTTPS,验证证书
Downgrade逼双方降级到旧的、不安全的版本禁用 TLS 1.0/1.1,强制 1.2 或 1.3
BEAST利用 TLS 1.0 的弱点升级到 1.2 或 1.3
POODLESSL 3.0 漏洞禁用 SSL 3.0
HeartbleedOpenSSL 漏洞,会泄露内存给 OpenSSL 打补丁
DROWN利用配置不当的服务器上的 SSLv2禁用 SSLv2 和弱密码套件

服务器端:只用 TLS 1.2/1.3、强密码套件、开启 PFS、开启 HSTS(强制 HTTPS)、用 OCSP Stapling 检查证书、及时更新 OpenSSL。客户端:验证证书、用证书固定(certificate pinning)防中间人、在浏览器里禁用弱协议。另外要选有信誉的 CA,保管好私钥。

TLS 1.3 为什么去掉了 RSA 密钥交换?

RSA 在 TLS 1.3 里仍可用于签名,被去掉的只是“用 RSA 加密会话密钥”这种交换方式。

课件逐页详解:TLS 1.3 密钥交换与握手 P5-18~P5-29、P5-39

RSA 密钥交换(P5-18)

TLS 是一个混合密码系统:先用公钥密码让双方安全地拿到同一把密钥,再用这把密钥加密数据。在 RSA 密钥交换里,共享秘密由客户端决定:客户端从服务器证书里取出公钥,用它加密共享秘密后发给服务器。

Diffie-Hellman 密钥协商(P5-19)

  1. 客户端和服务器各自生成一对公私钥(基于公开的素数和生成元);
  2. 把自己的公开份额(key share)发给对方;
  3. 每一方用“对方的公开份额 + 自己的私钥”算出同一个值,这就是 pre-master secret(和模块 4 的 DH 计算完全一样);
  4. 服务器对这次交换做数字签名,证明交换没被篡改;
  5. 如果每次连接都换一对新密钥,就叫 ephemeral(临时)DH。

TLS 1.3 的握手只要三步(P5-21)

TLS 1.3 握手(1-RTT)

① Client Hello:TLS 1.3 把支持的密码套件从 37 个减到 5 个,客户端可以直接猜服务器会用哪种密钥协商方式,并在第一条消息里就附上自己的 key share,不用像 1.2 那样先等服务器回话。

② Server Hello:服务器回复 Server Hello,同时发来证书和自己的 key share。此时服务器已经能算出会话密钥,最后发出 server Finished。

③ Client Finished:客户端验证证书,用两份 key share 算出自己的那份会话密钥,然后发出 Finished。握手完成,只用了一个往返。

密钥用 Ephemeral Diffie-Hellman(EDH / DHE)生成;允许的签名算法有三种:RSA(只用于签名)、ECDSA、EdDSA。

TLS 1.2TLS 1.3
握手往返2 次(2-RTT)1 次(1-RTT)
密码套件37 个5 个
密钥交换RSA 或 DH只有 ephemeral DH
前向保密用 RSA 交换时没有总是有
主要风险配置不当会留下漏洞协议简化,管理员更难配错

为什么 TLS 1.3 更安全(P5-26)

TLS 1.2 只要配置正确就是安全的,问题是很多网站配置错了。1.3 直接删掉了有已知漏洞的旧功能:3DES、DES、MD5、RC4、SHA-1 等。协议简单了,管理员犯错的机会就少了。

各版本现状汇总(P5-27)

版本状态要点
SSL 2.0已淘汰加密很弱
SSL 3.0已弃用受 POODLE 攻击
TLS 1.0已弃用易受降级攻击
TLS 1.1已弃用改进过,但已过时
TLS 1.2安全支持 AES-GCM、SHA-256
TLS 1.3最安全去掉弱算法、握手更快、加密更强

TLS 1.3 的四项改进:① 去掉过时算法(RSA 密钥交换、SHA-1);② 握手往返从 2 次减到 1 次;③ 完美前向保密(PFS):即使某把密钥泄露,过去的通信仍然安全;④ 更强的加密(ChaCha20、AES)。

SSL/TLS 最佳实践(P5-29、P5-39)

服务器端客户端
只用 TLS 1.2 或 1.3,禁用旧版本
使用强密码套件(AES、ChaCha20)
开启 PFS
开启 HSTS(HTTP Strict Transport Security,强制浏览器只用 HTTPS)
用 OCSP Stapling 检查证书是否有效
定期更新 OpenSSL 和 TLS 库
连接前验证证书
用证书固定(certificate pinning)防中间人
在浏览器里禁用弱协议和弱密码套件

课件 P5-39 再补三条:选可靠的 CA(证书只和签发它的 CA 一样可信);保护好私钥(公钥可以广泛分发,私钥要尽可能安全地保管);使用 TLS 1.3(TLS 1.2 目前用得最多,但 1.3 通过 ephemeral DH 为所有会话提供前向保密,更快也更安全)。

课件 P5-29 的结论:应该用 TLS 而不是 SSL;TLS 1.3 最安全;证书保证认证和数据安全;定期安全更新必不可少。

5SSL 的局限与 SET

SSL/TLS 做不到什么(P5-30)

  • 会拖慢服务器;只保护传输中的数据,不保护数据库里的数据;
  • 不能认证电脑前真正操作的人,不能认证网店老板,不能认证真正的消费者;
  • 不能防止有人用偷来的信用卡网购;
  • 证书要花钱;它是两方协议。

SET:专门为刷卡支付设计的协议

1996 年,MasterCard、Visa、Microsoft、IBM、Netscape 等一起设计了 SET(Secure Electronic Transaction),专门保护在开放网络上的银行卡支付。它不是一个支付系统,而是一套安全协议和格式。

SSL/TLSSET
目的加密交换数据电商支付
参与方两方(浏览器和服务器)多方:持卡人、商家、银行、支付网关
认证主要认证服务器,不太强所有参与方都有数字证书,认证很强
加密对象信道消息
商家欺诈风险有,客户把卡号交给了商家小,商家看不到卡号,卡号交给支付网关
客户欺诈风险有,客户事后可以拒付小,客户要对支付指令数字签名,不能抵赖
出了问题谁负责商家支付网关
实际使用非常广泛几乎没人用,因为银行、商家、客户都要装专门的软件

SET 用到的密码学:对称加密保证机密性,RSA 公钥做授权,哈希保证完整性。课件的几个问答:SET 会取代 SSL 吗?不会,两者除了都用密码学和证书,没有技术上的相似之处。SSL 对电商够用吗?不够,但没有别的选择。SSL 下商家知道客户是谁吗?不知道。

关于 SET 和 SSL,哪项正确?

SSL 才是两方协议;SET 几乎没人用。

课件逐页详解:SET 的组成与交易流程 P5-31~P5-38

SET 的几个关键点(P5-31、P5-33)

  • SET 为卡支付中的所有参与者建模:持卡人、商家、银行,以及它们之间的信任关系和数字签名的法律含义;
  • 为交易中的每一方提供密码学身份认证,也就是多方安全(multiparty security);
  • 加密的是消息,而不是信道;
  • 每个持卡人都会被发一个数字签名,它加上会说 SET 协议的软件,就组成了 SET 电子钱包;
  • SET 的消息和传统银行网络多年来使用的消息基本一样,SET 只是让它们能在不安全的开放互联网上传输;
  • SSL 只在两台电脑之间建立安全连接,SET 则定义了银行、商家、持卡人之间所有必要的通信;
  • 对商家:持卡人事后不能说“不是我买的”,银行有证据;对持卡人:能确认商家是合法的。

一笔 SET 交易的 10 步(P5-34)

  1. 客户开户;
  2. 客户收到一张证书;
  3. 商家也有自己的证书;
  4. 客户下单;
  5. 验证商家身份;
  6. 发送订单和支付信息;
  7. 商家请求支付授权;
  8. 商家确认订单;
  9. 商家提供商品或服务;
  10. 商家请求付款。

SET 用到的密码学(P5-33、P5-36)

目标用什么
机密性 Confidentiality对称密钥加密
授权 Authorization公钥密码 RSA
完整性 Integrity哈希
认证 Authentication所有参与方都用数字证书认证

SET 的优点:商家看不到客户的账户信息(保护金融隐私);它是完整的刷卡支付系统,包括支付传输、确认和查询。SET 的缺点:银行网络、商家和消费者电脑上都必须装相应的软件,这也是它几乎没人用的原因。

SET vs SSL 的根本区别(P5-37)

SSL 不能提供不可抵赖性,而且只做服务器端认证;SET 用数字证书同时认证持卡人和商家,所以付款很难被否认,商家也能确定收到的订单没被改过。

6防火墙基础:网络的门卫

Firewall 是一种网络安全设备或软件,根据组织事先制定的安全策略,监控和过滤进出网络的流量。它是内部私有网络和公共互联网之间的那道墙,目的就是放行无害流量、挡住危险流量(样题 Q5-8)。

  • 防火墙可以是单台计算机,也可以是两台或更多系统协同完成(样题 Q5-6:True);
  • 硬件防火墙:保护整个网络,部署在路由器层面,一般更贵、更难配置;
  • 软件防火墙:保护单台电脑,便宜、易配置。

进入网络的流量叫 ingress,离开网络的叫 egress。课件有一句很重要的话:防火墙只丢弃能被证明是攻击的包,所以总有一些“看起来正常”的攻击包能溜进来,防火墙不是万能的。

类比:房子与房间(P5-51)

把 IP 地址想成房子,端口号想成房子里的房间。只有可信的人(源地址)能进这栋房子(目的地址),进来以后还要看身份决定能进哪些房间(目的端口):主人哪个房间都能进,孩子和客人只能进某些房间。

动手:防火墙规则匹配(P5-52)

规则从上到下逐条检查,第一条完全匹配的规则说了算,后面的不再看。最后一条通常是 “Any Any Any → Deny”(默认拒绝)。

规则匹配器

规则表就是课件上的那三条。改一改数据包的源地址、目的地址和端口,看它命中哪一条。

#源 IP目的 IP端口动作

试试课件的三个例子:① 192.168.1.25 → 8.8.8.8 : 80(Allow,Rule 1);② 172.16.5.10 → 10.0.0.5 : 22(Deny,Rule 2);③ 192.168.1.30 → 10.0.0.5 : 443(Deny,Rule 3)。

IP 地址欺骗

入侵者从外部发送数据包,却把源地址填成内部主机的地址,冒充自己人,这叫 IP address spoofing(样题 Q5-10)。好在外部接口上不可能出现合法的“内部源地址”,包过滤防火墙很容易识别并丢弃这种包。

个人防火墙(P5-53)

保护单台联网电脑的软件(样题 Q5-11 把 personal 误印成了 personnel)。能做:阻止黑客访问电脑、保护个人信息、拦截弹窗和某些 cookie、决定哪些程序能上网。不能做:防邮件病毒(要靠杀毒软件);装好以后就不管(规则和软件都需要定期更新)。

防火墙的优缺点(P5-54)

优点:阻止未授权访问、过滤流量、记录日志并告警。缺点:降低网络速度、配置复杂、防不了内部人员、能被隧道和加密流量绕过、挡不住社会工程和零日漏洞。所以样题 Q5-12“防火墙能防御绕过它的攻击”是 False。

“The firewall can protect against attacks that bypass the firewall.”

FALSE(样题 Q5-12)。流量不经过它,它就管不着:内鬼、U 盘、私接的热点都能绕过。

课件逐页详解:网络安全控制与防火墙工作方式 P5-40~P5-54

网络安全控制(P5-40)

网络是一组用有线或无线方式连起来的设备。网络安全控制指用来加强网络安全的各种措施:访问控制、认证、授权、密码学、Web 安全、安全策略等。防火墙是其中最常见的一种。

防火墙怎么挡住蠕虫和黑客(P5-45)

你向互联网请求东西时,防火墙会假装是它自己发出的请求,而不是你的电脑。互联网根本看不到你的电脑,蠕虫和黑客能探测、攻击的就只剩防火墙,而防火墙只是一个“笨盒子”(dumb box),没什么可以被利用的。

防火墙的基本运作(P5-47~P5-49)

  1. 合法主机发送正常的包,攻击者发送攻击包;
  2. 进入站点的叫 ingress(入站),离开站点的叫 egress(出站);
  3. 防火墙丢弃并记录能够证明是攻击的包;
  4. 防火墙只在能证明是攻击时才丢包,所以有些“无法证明”的攻击包会穿过防火墙。

软件防火墙怎么工作(P5-44)

它检查到达防火墙任何一侧的每一个“包”(进入你电脑的,或从你电脑出去的),决定让它通过还是拦下。

防火墙策略(P5-50)

防火墙按一组预先定义的规则,即防火墙策略(firewall policies),过滤进出的流量,以保护私有网络和单台机器免受互联网威胁。一边是可信的内网(trusted internal network),一边是不可信的互联网(un-trusted Internet)。

7防火墙的类型:看得越深越安全,也越慢

类型怎么工作特点
Packet filtering 包过滤逐个检查包头:源 IP、目的 IP、端口,按规则放行或丢弃(样题 Q5-9)快、便宜;无状态,不记得之前的包,也不看更高层的内容(样题 Q5-7:True)
Stateful inspection(SPI) 状态检测除了包头,还用状态表记录每条连接(IP、端口、序列号),只放行“内网主动发起的连接”的回包比包过滤更安全,资源消耗更多;维护状态表可能被 DoS 拖垮;如今几乎所有边界防火墙都用它
Proxy / Application gateway 代理作为中间人:用户向代理请求,代理检查请求合法后替你去取,再把结果返回能看懂完整的应用协议,最安全,日志审计方便;但最慢
NGFW 下一代防火墙传统功能 + 入侵防御(IPS)+ 深度包检测(DPI)+ 应用识别更先进,也更贵;“下一代”没有统一定义
Cloud firewall部署在云上,保护远程用户(Firewall-as-a-Service)弹性好,但依赖第三方
WAF专门保护 Web 应用防 SQL 注入、XSS

包过滤又分三种:static(按固定规则匹配)、dynamic(能根据突发事件临时更新规则)、stateful(即 SPI)。

类比:小区门卫
  • 包过滤:只看车牌,名单上有就放行,不记得这辆车刚才有没有出去过;
  • SPI:有一本登记簿,“这辆车是业主刚开出去的,现在回来,放行”;陌生车想主动进来就拦下;
  • 代理:外人一律不准进,你要什么,门卫替你出去拿回来,还会检查东西里面有没有问题。
(数字越小越好)安全性性能
Packet filter31(最快)
SPI22
App gateway1(最安全)4(最慢)

课件 P5-68 的对比表

吞吐量计算(P5-76~P5-78)

和模块 1 的 Ping flood 是同一个公式:所需包速率 = 带宽 ÷ (包大小 × 8),再和防火墙的处理能力比较。

防火墙吞吐量计算器

“A traditional packet filter makes filtering decisions on an individual packet basis and does not take into consideration any higher layer context.”

传统包过滤就是无状态、逐包判断(样题 Q5-7)。

课件逐页详解:每种防火墙的课件原文要点 P5-55~P5-68

包过滤防火墙(P5-57)

成本低,对网络性能影响小。它有三种子类型:

  • Static filtering(静态过滤):包符合规则就放行或丢弃;
  • Dynamic filtering(动态过滤):能理解协议怎么工作,根据包头信息对突发事件作出反应,更新或新建规则;
  • Stateful inspection(状态检测):用状态表跟踪内部和外部系统之间的每一条连接。

静态包过滤(P5-58)

  • 最早的防火墙过滤机制;
  • 一次只看一个包,孤立地看;只看部分网络层和传输层头部;
  • 所以很多攻击它挡不住,但能挡住伪造 IP 地址的包;
  • 如今不再作为边界防火墙的主要过滤机制,但可以作为主边界防火墙上的辅助过滤。

状态包检测 SPI(P5-59)

  • 检查和包过滤一样的包信息,此外还记录 TCP 连接的信息;
  • 用状态表跟踪内部和外部系统之间建立的每一条连接,记录哪台机器在什么时候发了什么包;
  • 能判断一个包是不是属于内网发起的合法会话;
  • 状态表记录每条活动连接的 IP 地址、端口和序列号;
  • 因此只放行“作为内网发起连接的回复”的入站 TCP 包;
  • 主要缺点:管理和核对状态表需要额外处理,可能让系统被 DoS 攻击拖垮。

连接的状态(P5-60)

一条连接分为三个阶段:建立(opening)→ 通信中(ongoing communication)→ 关闭(closing)。不同阶段面临不同的攻击,所以 SPI 对不同状态使用不同的过滤规则。

为什么 SPI 成了主流(P5-64)

理由课件原意
Low cost 成本低绝大多数包都不是“建立连接”的包,处理起来简单便宜;建立连接的包处理成本更高,但很少
Safety 安全除了应用层攻击,其他攻击通常过不了 SPI;需要时 SPI 还能叠加其他过滤方式
Dominance 主导地位安全性高加上成本低,使它极其流行,如今几乎所有主边界防火墙都用 SPI

应用网关 / 代理服务器(P5-65)

  • 通常装在一台专用计算机上,也叫代理服务器(proxy server);
  • 它常被放在网络中不安全的区域(例如 DMZ),面对的风险更高;这样暴露在外的是代理服务器,而不是 Web 服务器;
  • 代理后面还可以再加过滤路由器;
  • 配置成 Web 代理的网关不放行 FTP、Gopher、Telnet 等其他流量;
  • 它能完整理解协议:用户向代理请求服务,代理验证请求合法后代为执行,再把结果返回给用户;
  • 比包过滤更安全:只需要审查少数几个允许的应用,而且容易记录和审计所有进入的流量。

综合性能对比(P5-68)

技术速度灵活性智能程度
Packet filtering很好很好低
Application proxy低低很好
Stateful inspection好好好

8防火墙架构:从单个路由器到 DMZ

选哪种架构,取决于网络的目标、组织的实施能力和预算。课件介绍了四种(P5-69~P5-75):

  1. Packet filtering router:用连接互联网的路由器做包过滤,是第一代防火墙。缺点:缺少审计,也没有强认证;
  2. Screened host(单主机):路由器先预筛一遍,后面再接一台专门的防火墙(比如应用代理)。这台主机叫 bastion host(堡垒主机)或牺牲主机,会直接面对外部攻击,必须加固。它被攻破,整个防线就没了;
  3. Dual-homed host(双宿主机):防火墙有两块网卡,一块接互联网,一块接内网,还能做 NAT(内网用私有地址)。比 screened host 更安全,但仍是单点故障;
  4. Screened subnet(屏蔽子网,带 DMZ):用两台过滤路由器或防火墙,中间夹一块 DMZ(非军事区),对外提供服务的 Web 服务器放在 DMZ 里。
互联网不可信 外部过滤路由器 DMZ Web 服务器 邮件 / 代理 内部过滤路由器 内网可信 外部路由器只对互联网宣告 DMZ,内网对互联网“隐身”:一共三层防御
Screened subnet:考试看到 DMZ 就选它(P5-74、P5-75)。

它的优点:入侵者要过三层防御;外部路由器只向互联网宣告 DMZ 的存在,内网对互联网不可见;内部路由器只向内网宣告 DMZ,所以内网主机也无法直接建立通往互联网的路由。

“边界已死”?防火墙还需要吗(P5-79~P5-82)

传统思路是“内网可信、外网不可信”,防火墙守在边界上。但云计算、远程办公和 BYOD、零信任、越来越多的加密流量、钓鱼和内鬼这类复杂威胁,让“固定边界”逐渐瓦解。课件的结论是:边界没有消失,只是移动了,从固定位置变成跟着用户、设备和数据走的、以身份为基础的边界。防火墙仍然重要,但不再是唯一防线,要和下一代防火墙、云防火墙、网络分段、零信任一起用。

推荐做法(P5-84)

  • 允许内网流量出站;防火墙设备本身不能从公网直接访问;
  • SMTP 邮件通过配置好的邮件网关转发;拒绝所有 ICMP;阻止外部对内部服务器的 telnet;
  • 对外提供 Web 服务时,用代理或 DMZ,不让 HTTP 流量直接进入内网。

永恒的权衡:和外界沟通的程度 vs 安全级别。安全规则一旦和业务冲突,安全往往会让步,因为组织宁可接受潜在风险,也不愿接受确定的业务中断。

用两台过滤路由器、中间放置面向公众服务器的架构是?

两台路由器 + DMZ = screened subnet。

课件逐页详解:架构选择、配置与管理 P5-69~P5-84

选架构看三件事(P5-69)

  1. 网络的目标;
  2. 组织开发和实施这种架构的能力;
  3. 可用的预算。

四种架构的课件要点

架构课件要点
Packet filtering router(P5-69、P5-70)大多数联网组织都有一台路由器作为通往互联网的接口,很多路由器可以配置成拒绝组织不允许的包。它是第一代防火墙。缺点:缺少审计,也没有强认证
Screened host(P5-71、P5-72)包过滤路由器加上一台独立的专用防火墙(例如应用代理)。路由器先预筛,减轻内部代理的负担。这台单独的主机叫 bastion host(堡垒主机)或 sacrificial host(牺牲主机),会成为外部攻击的目标,必须彻底加固。结构简单,但这台防火墙一旦被攻破就全线失守
Dual-homed host(P5-71、P5-73)防火墙有两块网卡:一块连互联网,一块连内网。可以做 NAT:对外用公网 IP,内网用 NAT 分配的本地地址。比 screened host 更安全,但仍是单点故障
Screened subnet(P5-74、P5-75)用两台防火墙形成 DMZ,把面向公众的服务(如 Web 服务器)放在里面,在内部系统和互联网之间再加一层隔离。三层防御;外部路由器只向互联网宣告屏蔽子网,内网对互联网不可见;内部路由器只向内网宣告屏蔽子网,内网主机无法直接建立到互联网的路由

课件 P5-74 的结论:防火墙对网络安全至关重要,但必须配合 IDS、终端防护等措施;组织应按安全需求、网络规模和预算选择防火墙类型和架构;单靠防火墙不能防住所有威胁,需要分层的安全方法。

“边界已死”的五个原因(P5-79、P5-80)

  1. 云计算:数据存放在 AWS、Azure、Google Cloud 等云环境里,员工从任何地方访问,绕开了传统防火墙;
  2. 远程办公与 BYOD:员工用个人设备和家庭网络访问公司数据,传统防火墙无法对远程用户执行策略;
  3. 零信任模型:“永不信任,总是验证”取代了基于边界的信任;访问权限基于身份、上下文和最小权限,而不是网络位置;
  4. 加密流量增加:很多攻击本身就用加密,防火墙难以检查;攻击者用 SSL/TLS 隧道绕过传统防火墙;
  5. 更复杂的威胁:恶意软件和黑客通过钓鱼、内部人员、被盗凭证进入网络内部,基于边界的防火墙就失效了。

我们还需要防火墙吗(P5-81、P5-82)

需要,但单靠它不够。现代做法包括:

  • 下一代防火墙(NGFW):深度包检测(DPI)、入侵防御(IPS)、应用层过滤、基于机器学习的威胁检测;还能检查加密流量、监控用户行为,从而执行零信任原则;
  • 云防火墙(FWaaS):不需要本地硬件就能保护云上工作负载和远程用户,例如 Zscaler、Palo Alto Prisma、Cloudflare Gateway;
  • 网络分段:不再只靠一道边界防火墙,而是把网络分成多个隔离的小区域,攻击者攻破一段也不能在网内自由移动。

结论:边界没有消失,而是变得动态和分散;防火墙在演进而不是消亡,要和零信任、终端安全、云安全结合起来。

选择防火墙时要问的问题(P5-83)

  • 哪种防火墙技术在防护功能和成本之间最适合本组织?
  • 基础价格包含哪些功能?哪些要额外付费?所有成本都清楚了吗?
  • 安装和配置难不难?有没有熟练的技术人员能做好?
  • 它能否适应组织网络的增长?

配置和管理防火墙(P5-83)

每台防火墙都有自己的一套配置规则;一个小错误就可能把它变成网络的瓶颈(choke point)。当安全规则和业务表现冲突时,安全往往会输,因为组织宁可承受“可能的风险”,也不愿接受“肯定的业务中断”。

9入侵检测(IDS)与入侵防御(IPS)

防火墙是门卫,IDS 是监控摄像头:它监视网络或系统的活动,发现可疑行为就告警。它的基本假设是:入侵者的行为和合法用户不同,而且这种差异可以量化(样题 Q5-13:True)。

优点:早期发现威胁、实时监控、提供取证日志、帮助满足合规。缺点:会有误报和漏报,消耗计算资源,而且只告警、不拦截。

按“看哪里”分:HIDS vs NIDS

HIDS 主机型NIDS 网络型
监视什么单台主机上的活动:日志、审计记录、进出该主机的流量(样题 Q5-15)网段的流量,分析网络层、传输层、应用层协议(样题 Q5-16)
告警线索登录失败、非正常时段登录、权限提升、新增用户账户流量里出现已知的攻击特征
优点能看解密后的数据;误报少;可以针对具体操作系统和应用少量设备就能覆盖整个网段;部署和维护成本低;能关联多台机器上的攻击
缺点每台要监视的机器都要装,拥有成本高,占用本机资源流量加密后就失效;看不到主机内部的活动

HIDS 还分被动的(只分析、告警)和主动的(能执行脚本、终止进程);现代的 HIDS 常被称为 HIPS,集成了主机防火墙、行为和特征检测、恶意软件防护。

按“怎么判断”分:特征检测 vs 异常检测

Signature-based 特征检测Anomaly-based 异常检测
别名knowledge-based 基于知识statistical / behavior-based 基于统计或行为
原理拿流量和已知攻击模式(特征库)比对,像杀毒软件的病毒库先收集合法用户在一段时间内的正常行为,建立基线;之后定期采样比较,超出阈值(clipping level)就告警
擅长已知攻击,误报少能发现新型攻击
缺点特征库要不断更新;对新攻击会漏报(false negative)误报多(false positive);细微变化可能察觉不到
类比

特征检测像拿着通缉令认人:照片上的人一眼就能认出,没上过通缉令的新罪犯认不出来。异常检测像小区保安对住户很熟,“这人平时不这样”就会起疑心,能发现陌生的坏人,但也常误会正常住户。

易错点(样题 Q5-14、Q5-17)
  • Q5-14 说“signature 定义正常行为,anomaly 定义恰当行为”,这是把两者说反了,答 FALSE。
  • Q5-17“定义一组规则或攻击模式,用来判断某行为是否来自入侵者”:按定义应该是 Signature detection,但样题 PDF 标的是 Anomaly detection,疑似标错。刷题本里两个都判对。正式考试遇到原题时,请留意老师的口径。
  • Q5-18“收集合法用户在一段时间内的行为数据”是 Anomaly detection,没有争议。

IDS vs IPS(P5-94)

IDS 入侵检测IPS 入侵防御
做什么检测并告警检测并拦截
性质被动(记录日志、告警)主动(实时阻断)
位置监视网络或主机在流量到达系统之前检查
适合取证分析和监控实时执行安全策略
工具Snort、Zeek、OSSECPalo Alto NGFW、Suricata、Cisco Firepower

蜜罐 Honeypot(P5-95)

故意设置一台诱饵系统,看起来像真的(比如假的客户计费系统),还故意留下漏洞,吸引攻击者进来。用途:观察攻击者的手法,改进真实网络的防护;或者把攻击者从真实目标引开。局限:它发现不了真实系统上的入侵,也不一定能查出攻击者是谁。

公司的流量大部分走 HTTPS 加密,想检查解密后的内容,应该更依赖?

NIDS 遇到加密流量就“失明”;HIDS 在主机上,能看到解密后的数据。

一种全新的攻击(零日),哪种检测方法更有可能发现它?

零日攻击不在特征库里;但它的行为偏离了正常基线,异常检测有机会发现,代价是误报多。

课件逐页详解:IDS 与 IPS 的课件细节 P5-86~P5-97

IDS 的优缺点(P5-86)

优点缺点
早期发现威胁:在造成重大损失前发现可疑活动
实时监控:持续分析系统和网络活动
取证分析:留下攻击尝试的日志和记录
执行安全策略:帮助满足合规要求
误报(false positive):异常检测可能把正常活动当成威胁
漏报(false negative):特征检测可能漏掉新出现的威胁
资源消耗大:处理大量流量需要算力
不会主动防护:只检测和告警,不拦截(IPS 才会)

IDS 的分类(P5-87)

按部署位置分为 HIDS 和 NIDS;按检测方法分为 signature-based(依赖预定义的攻击和流量模式,即“特征”)和 anomaly-based(heuristic,启发式)(监控活动,把它分类为“正常”或“异常”)。

NIDS 的工作方式(P5-87~P5-89)

  • NIDS 是解析网络流量的引擎;
  • 它抓取全部网络流量,与一组预先分类的攻击特征比对;
  • 一旦在包里发现特征,就启动保护动作,阻止并记录攻击;
  • 部署容易,不需要大改网络;
  • 优点:覆盖整个网络需要的设备少;部署、维护和升级成本通常较低;能看到全部网络流量,可以关联多台系统上的攻击;
  • 缺点:流量加密后就无效;不知道主机自身发生了什么。

HIDS 的工作方式(P5-90~P5-92)

  • 只检查某一台主机上的活动:日志、审计记录、进出该主机的流量;可以实时检查,也可以定期检查;
  • 会触发告警的迹象:登录失败、非正常时段登录、权限提升、新增用户账户;
  • 优点:可以针对具体操作系统和具体应用;能降低误报率;能检查解密之后的数据;能判断一次告警会对系统造成什么影响;
  • 缺点:要监视的每台机器都得处理信息;拥有和维护成本可能很高;占用本机资源;
  • Passive HIDS(被动):观察、分析活动并发出告警;
  • Active HIDS(主动):能力相同,还能作出反应,比如运行脚本、终止进程;
  • 现代 HIDS 常被称为 HIPS(主机入侵防御系统),用三样东西来阻止攻击:集成的系统防火墙、基于行为和特征的 IDS、恶意软件检测与防护。

课件 P5-91 的示意:Host IDS 检查主机上存储的文件,有变化就通知管理员;Network IDS 检查网络上的包,发现异常模式就通知管理员。

两种检测方法的课件原文(P5-93)

Signature-based IDSStatistical anomaly-based IDS
也叫 knowledge-based IDS
检查流量里有没有和特征匹配的东西,特征是预先配置好的、已经确定的攻击模式
问题:一旦发现新的攻击策略,特征就必须更新
也叫 behavior-based IDS
从正常流量中收集数据,建立基线(baseline)
之后用统计方法定期采样网络活动,与基线比较
活动超出基线参数(即 clipping level)就通知管理员
因为它寻找的是任何类型的异常,所以能发现新型攻击
但可能察觉不到细微变化,而且会产生大量误报

入侵防御系统 IPS(P5-94)

IPS 是一种主动的安全技术,实时检测并拦截恶意活动;IDS 只检测和告警。IPS 常集成在下一代防火墙(NGFW)里。

蜜罐(P5-95)

  • 一台牺牲性的计算机系统,像诱饵一样吸引网络攻击;
  • 它模仿黑客的目标,利用入侵尝试来了解攻击者的手法,或者把攻击者从其他目标引开;
  • 看起来像真实系统,有应用和数据,比如模仿公司的客户账单系统(这是想偷信用卡号的罪犯常攻击的目标);
  • 黑客进来后就可以被追踪,他们的行为能为加强真实网络提供线索;
  • 蜜罐会故意留下安全漏洞,让攻击者觉得有吸引力;
  • 局限:发现不了真实系统里的入侵,也不一定能查出攻击者是谁。

网络攻击带来的影响(P5-97)

每年有超过一半的企业成为网络攻击目标。影响包括四类:

影响具体表现
Financial 财务从几万到几百万美元不等,还不包括恢复成本
Productivity 生产力时间就是金钱:修复社会工程攻击和处理损失要花大量时间,影响 IT 团队、普通员工,最终影响盈利
Operational disruption 运营中断影响会传导到整个供应链和服务交付,造成物流延误
Reputational damage 声誉损失客户不再觉得安全,信任很难重新建立

10本章小结

一页纸总结
  • HTTP 明文、无状态、端口 80;HTTPS = HTTP + TLS、端口 443,提供机密性、完整性和服务器认证。
  • SSL 由 Netscape 设计 → 1999 年改名 TLS 1.0 → 2018 年 TLS 1.3;SSL 在 2015 年淘汰。
  • 分层:Handshake、Change Cipher Spec、Alert 在上,Record 在下(机密性 + 完整性:分片 → 压缩 → MAC → 加密 → 加头)。
  • 握手最复杂:ClientHello(列出 cipher suites)→ ServerHello(选一个)→ Certificate → ServerHelloDone → ClientKeyExchange(用服务器公钥加密会话密钥)→ ChangeCipherSpec → Finished。
  • TLS 1.3:去掉 RSA 密钥交换(没有前向保密),只用 ephemeral DH;1-RTT;去掉 DES、3DES、MD5、RC4、SHA-1。会话密钥 ≥ 128 位。
  • SSL 是两方协议,用得多;SET 是多方协议,所有参与方都有证书、商家看不到卡号,但几乎没人用。
  • 防火墙:只挡能证明是攻击的包;防不了绕过它的攻击和内鬼。包过滤无状态最快,SPI 有状态表,代理最安全最慢。
  • 规则从上到下,第一条匹配即生效,最后一条默认拒绝;吞吐量 pps = 带宽 ÷ (包大小 × 8)。
  • 架构:包过滤路由器 → screened host(堡垒主机)→ dual-homed(双网卡 + NAT)→ screened subnet(两台路由器 + DMZ)。
  • HIDS 看单机、能看解密后的数据;NIDS 看网段、怕加密。Signature 认已知攻击(漏报新攻击),Anomaly 认正常基线(能发现新攻击,误报多)。IDS 只告警,IPS 会拦截;蜜罐是诱饵。
去刷题

本章对应 Sample Quiz Part 5(18 题)和刷题本 P5 的 18 道自编题。去刷题本,在章节里选 P5。