VPS 一上线就是公网 IP,扫描器和暴力破解脚本分分钟就到。不夸张,新机器开机几小时就能在 auth.log 里看到一堆失败登录。下面这几步不复杂,但做和不做差别很大。

换掉 SSH 默认端口

22 端口是所有扫描器的第一个目标。改到别的端口,能挡掉绝大多数无差别扫描。

编辑 /etc/ssh/sshd_config

Port 2222
PermitRootLogin no
PasswordAuthentication no

改完重启:systemctl restart sshd

注意先确认新端口能连上再断开当前会话,不然就把自己锁外面了。

防火墙只开需要的端口

UFW 配置很简单:

ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

原则就是默认拒绝入站,只放行你确实在用的服务。

装 Fail2Ban,自动封 IP

有人反复试密码?让 Fail2Ban 自动把它封了。

apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban

/etc/fail2ban/jail.local 里调一下:

[sshd]
enabled = true
maxretry = 3
bantime = 3600

试错 3 次,封一小时。简单粗暴但有效。

自动安全更新

手动 apt upgrade 你肯定会忘,自动更新省心:

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

它只装安全补丁,不会乱升大版本,还算靠谱。

用密钥登录,关掉密码

密码登录迟早被试出来,密钥登录才是正经方案。

ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id -p 2222 user@your-vps-ip

公钥传到服务器后,把 sshd_config 里的 PasswordAuthentication 设成 no,密码登录就彻底关了。

加个 2FA

密钥加 2FA,双保险。Google Authenticator 的 PAM 模块可以直接装:

apt install libpam-google-authenticator -y
google-authenticator

然后在 /etc/pam.d/sshd 加一行:

auth required pam_google_authenticator.so

这步看你需求,有些人觉得密钥已经够了,加不加随你。

看看谁在登你的机器

偶尔翻翻日志,看有没有奇怪的登录:

last -a | head -20
journalctl -u ssh -n 50

如果看到不认识的 IP 成功登录了,赶紧改密钥、查后门。

备份,备份,备份

安全做得再好也不能保证万无一失。定期把数据同步到别的地方:

rsync -avz /var/www/ backup-server:/backups/www/

写个 cron 每天跑一次,出事了至少数据还在。

以上几步花不了多少时间,但能拦住绝大部分低级攻击。做完之后偶尔看看日志就行,不用天天盯着。