新开的 VPS 默认是不设防的:root 密码登录、所有端口全开、从不更新。公网上的扫描器几分钟内就会找上门。下面 8 件事按顺序做完,大概半小时,之后再跑业务心里踏实。

服务器安全加固:盾牌守护下的密钥、防火墙、更新与备份

1. 更新系统并打开自动更新

apt update && apt upgrade -y

然后装上无人值守更新,安全补丁自动打:

apt install unattended-upgrades -y

2. 禁用密码登录,只用密钥

  1. 新建普通用户,加 sudo 权限,日常不用 root。
  2. 把你的公钥写入 ~/.ssh/authorized_keys。
  3. /etc/ssh/sshd_config 里设 PasswordAuthentication no,重启 sshd。
  4. 先开一个新终端确认密钥能登录,再断开旧连接——这一步做错会把自己锁在外面。

3. 开防火墙,只放行必要端口

防火墙只开放 22/80/443 端口

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

原则:默认拒绝所有,只开要用的。数据库端口(3306、5432、6379)永远不要对公网开放。

4. 装 fail2ban 防暴力破解

apt install fail2ban -y

默认配置就能挡住大部分 SSH 密码爆破。有 Web 服务的话,可以再加针对 Nginx 的规则。

5. 关掉用不上的服务和端口

ss -tlnp

看一眼监听的端口,认不出的服务先查再关。每多开一个端口就多一个攻击面。

6. 备份:快照 + 异地各一份

  • 在服务商控制台打第一份快照(注意快照可能单独计费)。
  • 重要数据再备一份到服务商之外:对象存储、另一台机器、甚至本地硬盘。
  • 演练一次恢复:没恢复过的备份等于没有备份。

7. 加上基础监控

至少要有:CPU/内存/磁盘告警、服务存活检查。Vultr、DigitalOcean 控制台自带基础监控,够用;想要更细的上 Prometheus 或 Uptime Kuma。磁盘满了导致服务挂,是最常见的”非攻击性宕机”。

8. 应用层也别裸奔

  • 全站 HTTPS,证书自动续期(看从零上线网站第 4 节)。
  • 应用依赖定期更新,别留着有 CVE 的旧版本跑。
  • 数据库设强密码,只允许本地或内网连接。

打勾表

  • 系统已更新,自动更新已开
  • root 禁密码登录,密钥登录已验证
  • 防火墙启用,只放行 22/80/443
  • fail2ban 运行中
  • 无用端口已关闭
  • 快照 + 异地备份各一份,且演练过恢复
  • 监控告警已配置
  • HTTPS 生效,应用依赖无已知高危漏洞

服务器刚开机的话,先看新手上机指南走完前置步骤,再回来逐项打勾。