海外服务器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 分钟:
- 🔑 配置 SSH 密钥登录
- 🚫 禁用密码登录 + 改端口
- 🛡️ 安装 Fail2Ban + 配置 UFW
如果你刚购买了后浪云香港云服务器,建议在部署任何业务之前,先完成本文的安全加固配置,把安全基础打牢。有任何技术问题欢迎通过 Telegram 或工单联系我们的技术团队。
版权声明:
作者:后浪云
链接:https://idc.net/help/442596/
文章版权归作者所有,未经允许请勿转载。
THE END
