个人服务器安全加固方案.md

$ view ~/notes/个人服务器安全加固方案.md

个人服务器安全加固方案

date
2026-04-01
tags
#运维 #安全 #ssh #tailscale #ufw
$ tree --toc
├─ 01 方案核心逻辑 ├─ 02 分步实施指南    阶段一:虚拟组网 (Tailscale)    阶段二:SSH 身份验证加固    阶段三:本地防火墙 (UFW)    阶段四:云端隔离(云平台安全组) ├─ 03 三重兜底机制(紧急救援 SOP)    第一层:Tailscale(主通道)    第二层:公网 SSH(临时救援)    第三层:Serial Console / VNC(终极救援) ├─ 04 可恢复性矩阵 ├─ 05 紧急容灾预案 SOP ├─ 06 配置核对清单 (Checklist) └─ 07 日常运维    如何连接    如何发布 Web 服务
$ tree --toc
  1. ├─ 01 方案核心逻辑
  2. ├─ 02 分步实施指南
  3. 阶段一:虚拟组网 (Tailscale)
  4. 阶段二:SSH 身份验证加固
  5. 阶段三:本地防火墙 (UFW)
  6. 阶段四:云端隔离(云平台安全组)
  7. ├─ 03 三重兜底机制(紧急救援 SOP)
  8. 第一层:Tailscale(主通道)
  9. 第二层:公网 SSH(临时救援)
  10. 第三层:Serial Console / VNC(终极救援)
  11. ├─ 04 可恢复性矩阵
  12. ├─ 05 紧急容灾预案 SOP
  13. ├─ 06 配置核对清单 (Checklist)
  14. └─ 07 日常运维
  15. 如何连接
  16. 如何发布 Web 服务

个人服务器安全加固方案

01

方案核心逻辑

本方案遵循 "最小暴露面" 原则,构建三层递进的防御体系:

  • 网络层 (Network):利用 Tailscale 建立私有隧道,关闭云平台所有公网入站端口,使服务器在公网上"隐身"。
  • 应用层 (SSH):强制 SSH 仅限密钥登录,物理切断密码爆破的可能性。
  • 本地层 (OS):配置 UFW 防火墙作为二次保险,防止内网渗透及 Docker 自动开孔风险。

相关文档:

  • Tailscale 深度原理参见 Tailscale 零公网暴露方案
  • 多机集群架构参见 Oracle 多机集群零公网架构方案(Oracle 免费层专用)

02

分步实施指南

阶段一:虚拟组网 (Tailscale)

  1. 安装与连接:在服务器和本地电脑分别执行 tailscale up 并完成登录。
  2. 获取内网 IP:记录服务器在 Tailscale 内部的 IP(通常为 100.x.y.z)。
  3. 持久化配置:登录 Tailscale Admin Console → Edit machine settings → 勾选 Disable key expiry(避免半年后凭证过期导致无法连接)。

阶段二:SSH 身份验证加固

  1. 注入公钥:将本地电脑的 id_rsa.pub 内容写入服务器的 /root/.ssh/authorized_keys。

  2. 修改配置:编辑 /etc/ssh/sshd_config:

# 只允许 Root 密钥登录
PermitRootLogin prohibit-password
# 彻底关闭密码登录
PasswordAuthentication no
# 启用公钥校验
PubkeyAuthentication yes
  1. 生效:执行 sshd -t 检查语法,无误后执行 systemctl restart ssh。

阶段三:本地防火墙 (UFW)

# 安装并初始化
sudo apt update && sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 核心规则:放行虚拟网卡 (必须优先执行此条)
sudo ufw allow in on tailscale0

# 允许同子网内网互通(请替换为你云平台子网的实际 CIDR)
sudo ufw allow from 10.0.0.0/24

# 启动
sudo ufw enable

阶段四:云端隔离(云平台安全组)

在云平台的安全组 / 防火墙规则中执行以下操作:

  1. 删除:所有源为 0.0.0.0/0 的入站规则(22, 80, 443 等)。
  2. 新增:允许源为你的子网网段(如 10.0.0.0/24)的所有协议入站。

💡 Oracle Cloud 示例:在控制台的 安全列表 (Security Lists) 中操作。 其他平台:AWS 对应 Security Group,GCP 对应 Firewall Rules,腾讯云/阿里云对应安全组。


03

三重兜底机制(紧急救援 SOP)

即使在最坏情况下(Tailscale 故障),仍有三层救援手段。

第一层:Tailscale(主通道)

  • SSH 主入口
  • 不暴露公网
  • 支持多设备

👉 日常使用 99% 依赖它

第二层:公网 SSH(临时救援)

仅作为临时应急通道使用,修复后立即关闭。

操作流程:

  1. 登录云平台控制台
  2. 临时添加入站规则:
0.0.0.0/0 → TCP 22
  1. 使用公网 IP 登录(注意:密码仍不可用,必须有私钥):
ssh root@公网IP
  1. 修复后立即关闭端口

第三层:Serial Console / VNC(终极救援)

即使 SSH 配错、防火墙锁死、Tailscale 挂了,主流云平台都提供控制台级别的远程访问,可 100% 救回服务器。

各平台入口:

云平台 功能名称 路径
Oracle Cloud Serial Console Compute → Instance → Console Connection
AWS EC2 Serial Console EC2 → Instance → Connect → EC2 Serial Console
腾讯云 / 阿里云 VNC 登录 实例详情 → 远程连接 → VNC

能做什么?

# 重启 SSH
systemctl restart ssh

# 关闭防火墙
ufw disable

# 修配置
nano /etc/ssh/sshd_config

👉 100% 救回服务器


04

可恢复性矩阵

场景 是否可救
SSH 配错 ✅
防火墙锁死 ✅
Tailscale 挂 ✅
网络异常 ✅

05

紧急容灾预案 SOP

场景:Tailscale 故障导致无法连接。

  1. 控制台救急:在云平台后台手动临时添加入站规则:源: 0.0.0.0/0, 协议: TCP, 端口: 22。
  2. 密钥登录:使用 ssh root@服务器公网IP 登录(注意:此时密码仍不可用,必须有私钥)。
  3. 修复服务:排查并重启 Tailscale。
  4. 复原隔离:修复后立即删除临时 22 端口规则。

06

配置核对清单 (Checklist)

  • [ ] Tailscale 已设置 Disable Key Expiry
  • [ ] /etc/ssh/sshd_config 已禁用密码登录
  • [ ] UFW 已允许 on tailscale0 流量
  • [ ] 云平台安全组已删除 0.0.0.0/0 的入站规则

07

日常运维

如何连接

# 永远通过 Tailscale IP 访问
ssh root@100.x.y.z

如何发布 Web 服务

推荐使用 Cloudflare Tunnel:

  • 原理:cloudflared 进程从内部向外建立连接,对外提供服务而无需开放端口
  • 优势:无需在云平台安全组或 UFW 中开启 80/443 端口,IP 不对外暴露
  • 详细配置参见 Cloudflare Tunnel 完整方案
Oracle 服务器开机 SOP Cloudflare Tunnel 完整方案