CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
网络工程师入门/课时/网络安全
RawBlame
课时目录12 节

网络工程师入门

  1. 01网络工程师是什么
  2. 02OSI 与 TCP/IP
  3. 03IP 寻址与子网
  4. 04网络设备
  5. 05路由协议
  6. 06交换与二层
  7. 07无线网络
  8. 08网络安全
  9. 09云网络与自动化
  10. 10排障与可观测
  11. 11认证与学习路径
  12. 12综合练习

网络安全

防火墙、NAT、VPN、零信任。

35 分钟

网络安全:ACL、VPN 与零信任

这一课你将能做到

  1. 写出正确的 ACL:放行该放的、默认拒绝其余、并验证生效
  2. 说清三种 VPN(IPSec / WireGuard / SSL)的层次与取舍
  3. 用零信任的「永不信任、始终验证」重审自己的服务暴露面

为什么要学

网络安全的 80% 是「少开几个口」。数据库挂公网、Redis 未授权访问、K8s API 裸奔,每年都在批量上新闻。本课给你三件武器:ACL(边界)、VPN(通道)、零信任(方法论),并落在 Nginx + K8s + 云的真实场景里;学完请立刻回到自己的服务,跑一遍步骤 4 的暴露面审计。

先建立图像

传统边界模型(城堡 + 护城河):
  Internet ══[防火墙]══ 内网(进来后基本畅通)→ 内部一失守 = 全域沦陷

零信任模型(每个门都验票):
  用户 ──认证──▶ 应用A   │  每次访问都验:身份 + 设备 + 上下文
  用户 ──认证──▶ 应用B   │  服务之间同样互相验(mTLS)
  数据库只对「明确授权的应用账号」开放,不对网段开放

跟着做

步骤 1:写一条白名单式 ACL(iptables 版)

# 只允许办公网段访问 SSH,其余拒绝
sudo iptables -A INPUT -p tcp --dport 22 -s 203.0.113.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo iptables -L INPUT -n --line-numbers    # 顺序即优先级

云上等价:安全组里「来源 203.0.113.0/24,端口 22,允许」+ 默认拒绝。

步骤 2:Nginx 层再加一道(应用层 ACL)

location /admin/ {
    allow 203.0.113.0/24;
    deny all;
    proxy_pass http://backend;
}
sudo nginx -t && sudo systemctl reload nginx
curl -s -o /dev/null -w '%{http_code}\n' https://你的域名/admin/   # 异地应返回 403

步骤 3:搭一条 WireGuard 隧道(现代 VPN 首选)

sudo apt install wireguard
wg genkey | tee privatekey | wg pubkey > publickey

/etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <服务端私钥>
ListenPort = 51820
Address = 10.66.0.1/24
[Peer]
PublicKey = <客户端公钥>
AllowedIPs = 10.66.0.2/32
sudo systemctl enable --now wg-quick@wg0
sudo wg show    # 看 latest handshake 与 transfer 是否增长

内核级实现、代码量小、性能高;对比:IPSec 重但适合网关对网关,SSL VPN 免客户端适合浏览器直达应用。

步骤 4:审计自己的暴露面

ss -tlnp | awk '$4 ~ /0.0.0.0|::/ {print $4, $6}'   # 全网监听的口
nmap -Pn -p 22,80,443,3306,6379,8080 你的公网IP      # 从外部看

预期只看到 80/443;3306 / 6379 / 22 出现在结果里 = 立即处理。

讲清楚要点

  1. ACL 顺序即逻辑:从上到下首个命中生效;「先 deny all 再 accept」永远不生效——白名单是 accept 在前、默认拒绝兜底。
  2. 分层设防:网络层(安全组 / ACL)管端口,应用层(Nginx / WAF)管内容,主机层(最小权限 + 补丁)管进程;任何单层都可能被绕过。
  • VPN 三形态:IPSec 站点对站点、WireGuard 主机对主机(轻快现代)、SSL/TLS VPN 用户对应用(远程办公);选型看「谁来连谁」。
  • 零信任不是产品是架构:强认证(人 / 服务)+ 设备信任 + 动态授权 + 全程加密(mTLS);K8s 服务网格的 mTLS 就是服务间零信任的落地。
  • 最小暴露面原则:数据库 / Redis / MQ 永不直连公网;管理入口收敛到 VPN / 堡垒机;临时端口用完即关。
  • 策略要记账:每条放行规则都能对上「谁申请的、为什么、何时回收」;临时规则必须带有效期,到期自动删除——不记账的策略迟早变成后门。
  • 你可能会懵的地方

    • DROP 和 REJECT 区别? DROP 静默丢弃(对方等超时,探测更难但浪费重试);REJECT 回拒绝包(立刻失败,体验好)。对外入口建议 DROP,内网用 REJECT 利于排障。

    • 有了 VPN 还要 ACL 吗? 要。VPN 解决「谁能进网络」,ACL 解决「进来后能碰什么」;「VPN 一连全通」正是要消灭的过度授权。

    • mTLS 和 TLS 区别? TLS 只验证服务端;mTLS 双向互验证书,服务间调用靠它确认「对端真的是它声称的服务」,是零信任的通信底座。落地时注意证书轮换:用内部 CA 短周期证书 + 自动续签,别让「加密」变成新的可用性风险。

    • K8s 里 ACL 对应什么? NetworkPolicy + 云安全组。注意 NetworkPolicy 默认全通,且要 CNI 支持才生效;Pod 间东西向流量靠它收敛。

    • 零信任会不会让运维变复杂? 初期会;长期反而简单——策略跟着身份走,不再维护一堆 IP 白名单。分阶段落地:先管管理入口,再收服务间流量。

    错法对照

    错法问题正解
    安全组 0.0.0.0/0 开 22全网爆破源限办公网段或走 VPN,密钥登录
    ACL 先 deny any 再 allowallow 永远匹配不到白名单在前,deny all 兜底
    内网即可信,数据库裸奔拖库一条龙白名单 + 强口令 + 审计,内网也分层
    只在 Nginx 配 HTTPS,后端明文链路后半段裸奔端到端加密或内网 mTLS
    用 IP 白名单管第三方对接对方出口一变就断,被仿冒就放行mTLS 或 API 签名为主,IP 白名单为辅
    规则只加不减策略库膨胀成筛子季度审计,无主规则直接下线
    临时开洞用完不关忘了就是永久后门变更单里写死回收时间与责任人

    卡点急救

    1. 改完 ACL 把自己锁外面:云控制台 VNC / 串口是最后生命线;本地改 iptables 先备份并用定时任务自动回滚再上线。
    2. WireGuard 握手不成功:依次查 UDP 51820 是否放行(安全组 + 系统防火墙)、Peer 的 PublicKey 是否写成了对方公钥、AllowedIPs 是否重叠。
    3. Nginx allow 了还是 403:中间有 LB/CDN,Nginx 看到的是代理 IP;用 real_ip 还原 X-Forwarded-For,或把 allow 列表挪到 LB 层。

    面试常问

    • 描述零信任架构的核心原则? 永不信任、始终验证:所有主体(人 / 服务)先强认证,按身份 + 设备 + 上下文动态授权,最小权限,全程加密与审计;信任边界从「网络位置」变为「身份」。落地顺序建议:管理入口 → 数据库访问 → 服务间 mTLS,分阶段收口。

    • IPSec 两个阶段? 阶段一 IKE 建立加密的管理通道(IKE SA);阶段二在该通道内协商保护业务流量的 IPSec SA(ESP,隧道 / 传输模式)。

    • 如何保证 K8s 集群的东西向安全? NetworkPolicy 默认拒绝 + 按需放行、服务网格 mTLS、最小 RBAC、镜像与运行时安全;网络层只是其中一面。

    自测三问

    1. iptables 规则的匹配顺序是什么?为什么「先 deny any」必错?
    2. IPSec、WireGuard、SSL VPN 各适合什么场景?
    3. 你的服务里哪些组件绝不该暴露公网?现在真的没暴露吗?

    小结一句话

    安全的本质是收敛与验证:口越少越好,每次访问都验身份,而不是信任某个网段;审计自己的暴露面是本课唯一的必做作业。

    延伸

    • NIST SP 800-207:零信任架构
    • 下一课:云网络与自动化——VPC、对等连接与 Ansible。
    加载本节练习…
    ← 上一课无线网络下一课 →云网络与自动化