首页 > Technology > 正文

VPS 新机 9 步安全加固清单:从防火墙到入侵检测

fenij 2026-08-11 48 Technology

VPS 开通那一刻起,自动化扫描器就开始光探测——几分钟之内就有人来猜 root 密码、扫常见端口。「新机即裸奔」是最容易翻车的状态。这套清单覆盖自动化脚本重点光顾的入口(SSH、防火墙、补丁、登录风控),半小时内能把九成自动攻击挡在门外。

第一步:把系统补丁打齐

镜像可能是几周前做的,漏洞数据库每天在涨,先 patch 再做后面所有事:

sudo apt update && sudo apt upgrade -y(Debian/Ubuntu)
sudo dnf update -y(AlmaLinux/Rocky)

如果内核有更新,会需要 reboot,提前在控制台留个备用连接防掉线。

第二步:禁用 root 登录,用 SSH 密钥

root + 密码是最容易被光顾的组合。建一个非 root 管理员账号,全部日常操作用它:

adduser opsadmin && usermod -aG sudo opsadmin

本地生成密钥对(不是服务器上),把公钥推到服务器:

ssh-copy-id -i ~/.ssh/id_ed25519.pub opsadmin@your.server.ip

然后改 /etc/ssh/sshd_config,把三个关键配置改成:

配置项 推荐值
PermitRootLogin no
PasswordAuthentication no
Port 改成非默认(如 2222)
PermitEmptyPasswords no

重启 SSH 服务前,保留当前会话——验证新窗口能连进去再退旧会话:

sudo systemctl restart sshd

第三步:装 Fail2ban 自动封禁

即使禁用密码登录,还是会有人扫 SSH 端口看哪些服务还在跑。Fail2ban 看 auth.log 里连续失败 N 次的 IP,自动调用 iptables 封禁一段时间:

sudo apt install fail2ban -y

新建 /etc/fail2ban/jail.local 覆盖默认配置:

[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port    = 2222
logpath = %(sshd_log)s

启用并开机自启:sudo systemctl enable --now fail2ban。半小时后用 sudo fail2ban-client status sshd 就能看到被封的 IP 列表。

第四步:开 UFW 防火墙,只暴露必要端口

默认全禁、按需开白名单,是最直接的攻击面收缩:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable

MySQL / Redis / MongoDB / Elasticsearch 这些数据库端口永远不应该对外开——绑 127.0.0.1 即可。

第五步:开自动安全更新

手动更新一定会忘,自动安全更新把高危补丁应用上:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

需要的话再配 /etc/apt/apt.conf.d/50unattended-upgrades,把 -security 源留启用、-updates 源按需。

第六步:装入侵检测(可选但推荐)

AIDE、rkhunter、ClamAV 三个常见组合:

  • AIDE:文件完整性监控,敏感目录一旦被改会报警
  • rkhunter:扫 rootkit,特征库日更
  • ClamAV:通用杀毒,扫 web 上传的 webshell 很有用

每日凌晨跑一次 cron,结果发到邮箱:

0 3 * * * /usr/bin/aide --check | mail -s 'AIDE Report' opsadmin@yourdomain.com

第七步:备份策略

被攻破后还能快速恢复,关键靠备份。规则:

  • 每日全量 + 每周全量
  • 至少一份异地(对象存储 OSS / S3 / Backblaze B2)
  • 每月抽一次做恢复演练,不演练的备份等于没备份

自动备份脚本可以用 restic + rclone,或者直接用主机商自带的快照功能(Contabo / Hetzner / DigitalOcean 都支持)。

第八步:日志监控

重点看三个文件:

/var/log/auth.log(登录失败、sudo 使用)
/var/log/syslog(系统消息)
/var/log/nginx/(Web 访问与错误)

简易方案用 Logwatch 每日汇总发邮件,进阶方案接 ELK / Loki / Grafana。

检查清单

任务 完成 优先级 预计耗时
系统补丁更新 关键 2min
建非 root 管理员 关键 2min
SSH 密钥 + 禁密码 关键 5min
禁用 root 登录 关键 2min
UFW 防火墙 关键 3min
Fail2ban 关键 3min
自动安全更新 重要 2min
入侵检测 重要 10min
备份策略 重要 15min
日志监控 加分 10min

常见问题

Q:都做了这些还需要云厂商的硬件防火墙吗?
A:需要。硬件防火墙在 OS 之前就过滤了大部分网络层垃圾,自己装的 UFW 是 OS 层。两层结合效果最好——Contabo / Hetzner / DigitalOcean 都在控制面板免费提供基础网络层防火墙。

Q:禁用了密码登录,万一密钥丢了怎么办?
A:在主机控制台用 VNC / 串行控制台连上去,恢复密码登录临时登录。或者一开始就做两套密钥,两个不同设备各存一份,再加一份加密 U 盘异地备份。

Q:SSH 改了端口真的有用吗?
A:有用但有限。自动化扫描器会扫全端口,改了非默认端口能让 90% 的低水平扫描脚本直接跳过。但对有针对性的攻击没用——他们会做端口扫描。所以这是「减少噪音」的一招,不是核心防线。

按这个清单做完,VPS 已经能挡住绝大多数自动攻击了。剩下的定期看日志 + 每周 apt list –upgradable 检查一次就行了。如果被某条记录卡住或者哪个工具装不上,贴到 fenij.com 留言我帮你接着看。

🔗 延伸阅读

第一步就建议改强密码,可用随机密码生成器快速生成

相关完整手册

系统化的排查与配置思路,建议顺手收藏这几篇完整手册: