VPS 安全加固实战:从 SSH 防护到入侵检测一次讲清


很多站长把 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 就不再是裸奔状态。安全加固不是一次性工作,建议每季度复查一遍配置,养成查看登录日志的习惯。毕竟数据无价,防患于未然永远比亡羊补牢划算。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

MP-TEST

网站数据备份实战:从宝塔定时备份到异地容灾的完整方案

评 论