新装 VPS 每天收到来自僵尸网络的 1000+ 次 SSH 暴力破解尝试。此 10 分钟设置全部阻挡。已在 Ubuntu 22.04/24.04(Hostiger VPS 主机的默认 OS)上测试。
1. 创建非 root 用户(2 分钟)
adduser deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
# 复制您的公钥
echo "ssh-ed25519 AAAA... you@laptop" > /home/deploy/.ssh/authorized_keys
chmod 600 /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh
2. 禁用密码登录与 root SSH(2 分钟)
编辑 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
ClientAliveInterval 300
然后重启 SSH — 但在另一个终端保持当前会话开启,以防被锁在外面:
systemctl restart ssh
3. 启用 ufw 防火墙(1 分钟)
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
ufw status verbose
4. 安装 fail2ban(2 分钟)
Fail2ban 监视认证日志,登录失败后自动封 IP。
apt install fail2ban -y
cat > /etc/fail2ban/jail.local << EOF
[DEFAULT]
bantime = 24h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
EOF
systemctl restart fail2ban
fail2ban-client status sshd
5. 自动安全更新(2 分钟)
apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades
回答"是"启用。只有安全更新自动安装 — 主版本升级不动。
6. 更改默认 SSH 端口(可选,1 分钟)
不增加真正的安全性但减少日志噪声。在 sshd_config:
Port 2222
然后更新 ufw:ufw allow 2222/tcp && ufw delete allow 22/tcp。
验证一切正常
ss -tlnp— 只显示您预期的服务fail2ban-client status sshd— 显示 "Currently failed" 与 "Total banned"ufw status— 显示您允许的端口
如果安全是最高优先级,请考虑 Hostiger 独立服务器 — 完整硬件隔离,无共享 hypervisor。