很多站长把 VPS 买回来、装上宝塔或者一键环境之后,觉得网站能正常访问就算大功告成。可实际上,VPS 从开机那一刻起就直接暴露在公网环境下,端口扫描、弱口令爆破、漏洞探测无时无刻不在发生。本文按真实操作顺序,把 VPS 安全加固从 SSH 防护、防火墙配置到入侵检测一次讲清,照着做就能挡住绝大多数自动化攻击。
一、SSH 安全:先堵最常被打的口子
SSH 是公网服务器被爆破的重灾区,建议按以下顺序逐项加固。
1. 创建普通用户并禁用 root 登录
root 是爆破脚本的第一目标。先创建一个普通用户并授予 sudo 权限,日常操作都用这个用户进行,然后修改 SSH 配置禁止 root 直接登录:
useradd -m deploy
passwd deploy
usermod -aG sudo deploy
# 编辑 /etc/ssh/sshd_config
PermitRootLogin no
修改完执行 systemctl restart sshd 即可生效。
2. 使用密钥登录,关闭密码登录
密码登录即使设置得再复杂,也架不住长期爆破。先在本地生成密钥对,把公钥写入服务器的 authorized_keys,然后关闭密码登录:
ssh-keygen -t ed25519 -C "deploy"
ssh-copy-id deploy@你的服务器IP
# 编辑 /etc/ssh/sshd_config
PasswordAuthentication no
3. 修改 SSH 默认端口(可选)
把 22 端口改成高位端口,可以绕过大量针对 22 端口的自动化扫描,减少日志噪音。注意改完端口后先放行新端口再重启服务,避免把自己锁在门外。
二、防火墙:只放行必要端口
无论用 iptables、firewalld 还是 ufw,原则都一样:默认拒绝,按需放行。一个只跑网站业务的 VPS,通常只需要放行 80/443 和自定义的 SSH 端口:
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 22022/tcp
ufw enable
数据库端口(3306、6379 等)一律不要对公网开放,只允许内网或指定 IP 访问。
三、系统更新:别让漏洞躺在那里
很多入侵都是利用已知漏洞完成的,而补漏洞最省事的方式就是及时更新。开启自动更新,并定期手动执行更新命令,确保内核和常用软件包保持较新版本:
# Debian/Ubuntu
apt update && apt upgrade -y
# CentOS/RHEL
yum update -y
四、入侵检测:让攻击无处遁形
1. fail2ban 自动封禁
fail2ban 会扫描系统日志,把短时间内多次登录失败的 IP 自动拉入防火墙黑名单,是防爆破的一把好手,默认配置即可拦住绝大多数扫描器:
apt install fail2ban -y
systemctl enable --now fail2ban
2. 定期查看登录记录
检查 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL)里的登录记录,重点看有没有陌生的成功登录 IP。
3. 监控网站文件完整性
如果网站被入侵,攻击者常会篡改源码或植入后门。定期比对关键文件的哈希,能在第一时间发现异常。
五、最后的安全检查清单
- 已禁用 root SSH 登录
- 已关闭密码登录、改用密钥认证
- 防火墙仅放行必要端口
- 数据库端口不对公网开放
- 系统开启自动更新
- fail2ban 已安装并启用
做完以上六步,你的 VPS 就不再是裸奔状态。安全加固不是一次性工作,建议每季度复查一遍配置,养成查看登录日志的习惯。毕竟数据无价,防患于未然永远比亡羊补牢划算。