海外服务器SSH安全加固:禁用密码登录、改端口、配置Fail2Ban全流程

你的海外服务器从上线那一刻起,就会有来自全球的自动化扫描程序尝试暴力破解你的 SSH 密码。很多人以为"密码设复杂一点就行",但事实上,面对每秒数千次的暴力尝试,光靠复杂密码还不够。本文提供一套完整的 SSH 安全加固方案,加固完成后可将被入侵概率降低 99% 以上。


一、为什么 SSH 默认配置非常危险?

默认的 SSH 配置存在以下风险:

  • 监听 22 端口:全网扫描工具的首要目标,每天收到的暴力破解尝试通常在数千到数万次
  • 允许密码登录:只要密码不够强,就有被破解的可能
  • 允许 root 账户直接登录:一旦破解 root,攻击者获得完全控制权

查看你服务器上有多少次 SSH 登录失败尝试:

sudo grep "Failed password" /var/log/auth.log | wc -l

很多新购买的 VPS,上线几天后这个数字就能达到几万次。


一、第一步:生成 SSH 密钥对

SSH 密钥登录用"数学难题"代替密码,即使暴力破解也无法攻克。在本地电脑上执行:

# 生成 RSA 4096 位密钥对(更安全)或 Ed25519(更高效)
ssh-keygen -t ed25519 -C "your_comment"

# 按提示设置密钥保存路径(直接回车使用默认路径)
# 建议设置密钥口令(passphrase),增加一层保护

生成完成后:

  • ~/.ssh/id_ed25519 → 私钥(绝对不能泄露,永远保存在本地)
  • ~/.ssh/id_ed25519.pub → 公钥(上传到服务器)

二、第二步:将公钥上传到服务器

方法一:使用 ssh-copy-id(推荐)

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

方法二:手动上传

# 在服务器上执行
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# 将本地公钥内容粘贴进去,保存
chmod 600 ~/.ssh/authorized_keys

验证密钥登录是否成功

ssh -i ~/.ssh/id_ed25519 username@your_server_ip

⚠️ 重要:在禁用密码登录前,务必先确认密钥登录成功! 否则你可能把自己锁在服务器外面。


三、第三步:修改 SSH 配置——禁用密码登录 + 改端口

确认密钥登录成功后,编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

找到以下配置项并修改(如果没有就新增):

# 修改 SSH 监听端口(选一个 1024~65535 之间的非常用端口)
Port 22222

# 禁止 root 用户直接 SSH 登录
PermitRootLogin no

# 禁用密码登录(关键!)
PasswordAuthentication no

# 禁用空密码登录
PermitEmptyPasswords no

# 只允许公钥认证
PubkeyAuthentication yes

# 可选:限制允许 SSH 登录的用户(只允许指定用户)
AllowUsers yourusername

保存后,先不要关闭当前 SSH 会话,重启 SSH 服务:

sudo systemctl restart sshd

另开一个终端窗口,用新端口测试登录:

ssh -p 22222 -i ~/.ssh/id_ed25519 username@your_server_ip

登录成功后,才可以关闭原来的 SSH 会话。


四、第四步:配置防火墙(UFW)

# 安装 UFW
sudo apt install ufw -y

# 添加新 SSH 端口规则(必须先加,否则开启后会断连!)
sudo ufw allow 22222/tcp comment 'SSH new port'

# 添加其他必要端口
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# 启用防火墙
sudo ufw enable

# 验证规则
sudo ufw status verbose

⚠️ 确认新 SSH 端口已在 UFW 中放行后再启用,否则会把自己踢出去。


五、第五步:安装配置 Fail2Ban

Fail2Ban 会监控系统日志,自动封禁短时间内登录失败次数过多的 IP,是防暴力破解的最后一道防线。

安装 Fail2Ban

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

创建本地配置文件(不要直接修改默认配置)

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

找到 [sshd] 段落,修改为:

[sshd]
enabled = true
port = 22222          # 改为你修改后的 SSH 端口
filter = sshd
logpath = /var/log/auth.log
maxretry = 5          # 允许失败 5 次
bantime = 3600        # 封禁 1 小时(3600秒)
findtime = 600        # 10分钟内超过 maxretry 次则封禁
ignoreip = 127.0.0.1  # 白名单(可添加你的固定IP)
sudo systemctl restart fail2ban

查看 Fail2Ban 运行状态

# 查看被封禁的 IP 列表
sudo fail2ban-client status sshd

# 手动解封某个 IP
sudo fail2ban-client set sshd unbanip 1.2.3.4

六、进阶加固:限制 SSH 登录来源 IP

如果你有固定的办公 IP 或家庭 IP,可以在 UFW 中只允许该 IP 访问 SSH,彻底关闭其他来源:

# 删除原有规则
sudo ufw delete allow 22222/tcp

# 只允许指定 IP 访问 SSH
sudo ufw allow from 你的固定IP to any port 22222 proto tcp

sudo ufw reload

这是最严格也最安全的方案,适合 IP 固定的用户。


七、加固后的安全效果对比

安全措施防护效果实施难度
改 SSH 端口拦截 99% 的自动扫描(针对22端口)⭐(极易)
禁用密码登录彻底杜绝密码暴力破解⭐⭐(简单)
禁止 root 登录入侵后无法直接获得 root 权限⭐(极易)
UFW 防火墙关闭不必要端口,减少攻击面⭐⭐(简单)
Fail2Ban自动封禁暴力破解 IP⭐⭐(简单)
限制来源 IP只有白名单 IP 才能 SSH,最高安全⭐⭐⭐(需固定IP)

总结

完成以上五步加固后,你的海外服务器 SSH 安全性将从"门没锁"升级到"银行金库级"。核心三步,每步只需 5 分钟:

  1. 🔑 配置 SSH 密钥登录
  2. 🚫 禁用密码登录 + 改端口
  3. 🛡️ 安装 Fail2Ban + 配置 UFW

如果你刚购买了后浪云香港云服务器,建议在部署任何业务之前,先完成本文的安全加固配置,把安全基础打牢。有任何技术问题欢迎通过 Telegram 或工单联系我们的技术团队。

THE END