4、网络安全基础:网络分层模型(OSI/TCP/IP)、防火墙与ACL、VPN与加密隧道
聊到网络安全,我习惯先看网络是怎么分层的。你想想看,没有分层,网络就是一锅粥。数据怎么封装?攻击从哪里来?防御又该部署在哪一层?这些问题,分层模型给了我们清晰的答案。
4.1 网络分层模型:OSI与TCP/IP
OSI七层模型,说实话,在实际工程中很少有人真的按七层去搭系统。但它是个绝佳的思维框架。我个人习惯把它当作「安全检查清单」——每一层都有对应的攻击面和防御手段。
| OSI层 | 典型协议 | 常见攻击 | 防御手段 |
|---|---|---|---|
| 应用层(7) | HTTP, FTP, SMTP | SQL注入, XSS | WAF, 输入校验 |
| 表示层(6) | SSL/TLS, JPEG | 加密降级攻击 | 强制TLS 1.2+ |
| 会话层(5) | NetBIOS, RPC | 会话劫持 | Token绑定 |
| 传输层(4) | TCP, UDP | SYN Flood | SYN Cookie |
| 网络层(3) | IP, ICMP | IP欺骗, DDoS | ACL, 反欺骗 |
| 数据链路层(2) | Ethernet, PPP | ARP欺骗 | DAI, 端口安全 |
| 物理层(1) | RJ45, 光纤 | 物理窃听 | 光纤加密, 机柜锁 |
TCP/IP模型更实用,它把上面七层压缩成了四层。我在做安全架构时,重点关注的是网络层和传输层——因为防火墙和ACL主要在这两层干活。
核心观点:分层不是理论游戏。每一层都有独立的信任边界。我见过太多事故,都是因为「以为上层安全了,下层就无所谓了」——结果下层被突破,上层全白搭。
4.2 防火墙与ACL:网络的第一道门
防火墙,说白了就是「谁可以进来,谁可以出去」的规则执行者。但这里有个坑——很多人以为装了防火墙就万事大吉了。
我曾经帮一家公司做安全审计,发现他们的防火墙规则有300多条,但其中一半是「允许所有」的宽松规则。问运维为什么这么配?答:「方便调试,后面再改。」结果这个「后面」拖了两年。
4.2.1 防火墙的类型
- 包过滤防火墙:检查IP头、端口号。速度快,但看不懂应用层内容。
- 状态检测防火墙:记住连接状态。比如只允许「内部发起的TCP连接」的返回流量进来。
- 应用层防火墙(WAF):能看懂HTTP请求内容,拦截SQL注入、XSS等。
我个人建议:中小型系统用状态检测防火墙就够了。别一上来就上WAF,规则配不好反而误杀正常业务。
4.2.2 ACL:访问控制列表
ACL是防火墙的「规则表」。每条规则就是一句话:「如果来源是A,目标是B,端口是C,那就允许/拒绝。」
写ACL有个铁律:默认拒绝,显式允许。我见过最蠢的配置是最后一条写「deny any any」——但前面漏了一条「permit any any」,结果等于没配。
避坑指南:我曾经在配置ACL时,把规则顺序搞反了。ACL是顺序匹配的,匹配到第一条就停止。如果你把「拒绝所有」放在「允许特定IP」前面,那所有人都进不来。嗯,那次我差点被运维同事追着打。
# 正确的ACL配置示例(Cisco风格)
access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80
access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 443
access-list 100 deny ip any any log
# 最后一条记录所有被拒绝的流量,方便排障
4.3 VPN与加密隧道:安全的「隐形通道」
VPN不是魔法,它就是在公共网络上挖了一条加密的「隧道」。你想想看,你在咖啡厅连公共WiFi,所有流量都是明文——旁边的人用Wireshark就能看到你访问了什么网站。VPN的作用,就是把你的数据包再包一层加密壳。
4.3.1 隧道协议对比
| 协议 | 加密强度 | 性能 | 适用场景 |
|---|---|---|---|
| IPsec | 高(AES-256) | 中等 | 站点到站点VPN |
| OpenVPN | 高(可自定义) | 中等 | 远程接入 |
| WireGuard | 高(ChaCha20) | 高 | 移动端、高性能场景 |
| PPTP | 低(已破解) | 高 | 不推荐使用 |
我个人现在只用WireGuard。为什么?代码量只有OpenVPN的十分之一,审计起来轻松多了。而且它内置了加密隧道,不需要像IPsec那样手动配一堆复杂的SA(安全关联)。
4.3.2 加密隧道的工作原理
说白了就是「包套包」。原始数据包外面再包一个VPN头,然后用对称加密把整个包加密。接收方解密后,剥掉VPN头,露出原始包,再正常转发。
注意:加密隧道不是万能的。我曾经遇到一个案例,某公司用VPN连接两个数据中心,但VPN网关的证书是自签名的,而且没做证书固定(Certificate Pinning)。结果中间人攻击直接把隧道劫持了。嗯,加密了不等于安全了——密钥管理才是核心。
# WireGuard 配置示例(极简)
[Interface]
PrivateKey = gN65sB...(私钥)
Address = 10.0.0.1/24
[Peer]
PublicKey = xTIB...(对端公钥)
AllowedIPs = 10.0.0.0/24
Endpoint = 203.0.113.5:51820
4.4 实战建议:分层防御
别指望单靠防火墙或VPN就能挡住所有攻击。我习惯用「洋葱模型」——从外到内,层层设防。
- 边界层:防火墙 + ACL,过滤掉明显恶意的流量。
- 传输层:VPN + TLS,保证数据在传输过程中不被窃听或篡改。
- 应用层:WAF + 输入校验,防御应用层攻击。
- 主机层:主机防火墙 + 入侵检测,防止横向移动。
最后说一句:网络安全的本质是信任管理。分层模型给了我们划分信任边界的工具,防火墙和ACL是执行信任策略的抓手,VPN则是跨越不信任网络的安全通道。这三样东西,你理解透了,网络安全的底子就算打牢了。