目 录CONTENT

文章目录

别再让VPS裸奔!保姆级Linux安全加固教程,彻底告别SSH暴力破解

传家宝VPS
2026-01-24 / 0 评论 / 0 点赞 / 65 阅读 / 0 字
RackNerd Mobile Leaderboard Banner

▎ 前言:为什么要折腾这个?

我们先做一个测试:

在你的Linux控制台执行:grep "Failed password" /var/log/auth.log

你应该能看到一大片的 Failed password的错误

不同发行版可能命令不一样,这里通过Debian12 做演示,这条命令可能刷屏,谨慎执行。

iShot_2026-01-24_20.04.05.webp
  • 问题描述:刚买的 VPS 日志里全是 Failed password?这是全网脚本在扫描默认 22 端口。因为你的服务器默认是有公网IP的,在公网的环境下无时无刻不能其他人访问或者恶意攻击,所以你的SSH端口无时无刻都有人尝试去登入扫描。

风险提示:如果你的SSH是弱密码请尽快更改,或者往下看跟着教程走。不然被不明人员攻破你的服务器,,服务器变“肉鸡”(挖矿、DDoS),商家删机/关机都是小事,如果做非法业务受牵连就得不偿失了。

▎ 前期准备工作

  • 环境:一台刚开通的 VPS(Debian/Ubuntu/CentOS),我这里演示的操作系统以Debian12,虽然Debian13也出来了,但是还是习惯使用Debian12,作为我的主力使用的操作系统。

  • 链接SSH的工具:SSH 客户端(Xshell, XTerminal, FinalShell),三选其一就可以,我这里放上了XTerminal的下载链接。

    注意!:在所有设置确认成功前,绝对不要关闭当前的 SSH 连接窗口!,否则使用商家的VNC链接或者只能重装系统了。

▎ 第一步 更新软件源和同步时间

  1. 为什么需要更新软件源呢?只是为了下载最新的软件,不然软件是旧版本可能存在一直漏洞,这样就有一点本末倒置了,所以第一步先更新软件源和系统软件,升级到最新版本。

  • Debian/Ubuntu: apt update && apt upgrade -y

有的时候会无法安装软件,也可以先更新软件源。

  1. 同步服务器时间(因为是国内时间,我习惯同步到上海时间,这一步不是必须的)

  • 校准时间:将服务器时间设置为上海时间,方便后续看日志排查问题。

    • 命令:timedatectl set-timezone Asia/Shanghai

▎ 第二步:创建普通管理员账号(避免 Root 裸奔,这里是强烈建议的,如果觉得麻烦可以不做)

Root用户权限最高,也是最方便的,所以很多人喜欢直接使用Root用户执行命令和运行程序。但是风险也是最高的,如果弱密码被破解或者秘钥被泄露,导致的结果也是最原则的,因为人家已经拥有了Root权限(进你的服务器如无人之境)。

  1. 新建用户adduser myadmin (名字自定义)。

  2. 赋予权限usermod -aG sudo myadmin

  • 验证:退出 Root,用新用户登录并测试 sudo apt update,确保权限生效。

sudo命令就是把普通用户的权限提权成root权限执行,在平时权限不够的时候可以使用。

▎ 第三步:配置 SSH 密钥登录(给大门换把锁)

  • 生成密钥对

    • 推荐算法:使用 Ed25519 算法(比 RSA 更安全高效)。

    • 命令:ssh-keygen -t ed25519 -C "your_email"

  • 上传公钥到服务器

    • 方法A(推荐):使用 ssh-copy-id myadmin@ip_address 自动部署。

    • 方法B(手动)mkdir -p ~/.ssh && echo "公钥内容" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

  • 测试连接:新开窗口,使用私钥登录成功后再继续。

这里聊个题外话,在秘钥安全这方面,默认使用秘钥,禁止Root账户使用密码登入的商家还是比较少的,无接触最多的也就是DMIT,它家默认创建的服务器是使用秘钥登入的。

参考教程:DMIT 新机无法连接?手把手教你配置 SSH 密钥登录 (图文版)

▎ 第四步:修改 SSH 端口与防火墙设置

  • 修改配置文件,开放其他端口nano /etc/ssh/sshd_config

    • 策略:保留 Port 22,新增一行 Port 10086(双端口并行,防止配置错误失联)。

      很多厂商其实在重装系统的时候,就可以指定其他端口作为SSH连接端口,这样可以防止很多默认扫描行为,因为SSH在22端口是默认的,导致很多恶意扫描只针对SSH,如果其他高位端口,它还需要扫描你服务器的所有端口才能确定。

      iShot_2026-01-24_20.33.46.webp
  • 配置防火墙(UFW/Firewalld)

    • 重点:必须先放行新端口,再启用防火墙!,这一点至关重要,如果没搞定就退出SSH,容易整个服务器都失联,那就有意思了。

    • Debian/Ubuntu (UFW):

      ufw allow 10086/tcp  # 放行新SSH端口
      ufw allow 80/tcp     # 预留Web端口
      ufw allow 443/tcp
      ufw enable           # 启用防火墙
  • 验证:尝试通过新端口 10086 连接。成功后,回到配置文件删除 Port 22 并重启 SSH 服务。

80和443是网站搭建必备的端口,如果你是有其他的端口需要使用,修改上面的命令后面的端口号就好了,这一步是为了安全不暴露端口,如果懒得弄也可以不做,不是必须的。

▎ 第五步:禁止密码与 Root 登录 完成漏洞封堵

  • 修改配置nano /etc/ssh/sshd_config

    • PermitRootLogin no:彻底禁止 Root 登录(因为我们已经有了 sudo 用户)所以不必要担心。

    • PasswordAuthentication no:彻底关闭密码验证,这样只能通过秘钥登入了。

  • 重启服务systemctl restart sshd 完成新配置的加载。

完成这一步之后只能通过秘钥登入,root账户无法使用普通密码登入,密码登入方式作废。如果秘钥要使用穷举法暴力破解,那基本上是痴心妄想了。你只要不主动泄露基本上密码无忧。

iShot_2026-01-24_20.39.54.webp

▎ 第五步:安装 Fail2Ban 这里是加强工具(非必要)

  • 痛点:即使改了端口,可能还有人扫;Fail2Ban 可以自动拉黑多次试错的 IP,就跟一开始一样很烦,日志里面都是尝试登入的日志,有时候会你的日志会变得很大,很大原因就是因为尝试SSH登入惹得锅。

  • 安装apt install fail2ban -y

  • 配置:复制配置文件 cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local,设置 bantime (封禁时间) 和 maxretry (最大尝试次数)。

fail2ban的配置文件位于/etc/fail2ban目录中。主要的配置文件是jail.conf,你可以在这个文件中定义全局设置,或者为不同的服务创建特定的规则。

  • 配置文件介绍:

  • bantime:在检测到攻击后,攻击者被禁止的秒数。

  • unbantime:定期检查和解除禁止的时间,以秒为单位。

  • maxretry:在执行ban之前允许的最大失败尝试次数。

  • findtime:在maxretry次数内允许的时间窗口,以秒为单位。

▎ 最后救援大法

如果真的在执行过程中出现意外,或者防火墙忘了开放端口,或者秘钥丢失找不到了,也不要着急下面提供一个解决思路。

  • VNC 直连大法

    • 场景:防火墙没开就重启了?密钥丢了?

    • 操作:登录 VPS 商家后台(基本上所有的商家都有),打开 VNC 控制台。VNC 相当于直连显示器,不受 SSH 限制,可直接登录修改配置,配置好新的秘钥或者开启SSH密码登入更换新的密码,在重新开始。

      实在没救了,那就只能挂壁了,如果是新的服务器也就无所谓去商家后台重装系统就好了。

▎ 总结

总结下来就这几个步骤,基本上能让你的VPS高枕无忧,不用担心恶意的扫描和暴力破解。防火墙也能有效的防护端口,把不必要暴露外部的应用端口给好好保护起来。比如MYSQL的3306、Redis的6379很多人都是使用的纯数字简单密码或者根本就没密码,这也是十分危险的行为。

  • 系统已更新且时间已校准

  • 新建 Sudo 用户,且 Root 远程登录已禁用

  • SSH 密钥登录测试通过,密码登录已关闭

  • SSH 端口已修改,且防火墙 (UFW) 已正确放行

  • Fail2Ban 已开启监控

广告 广告
博主关闭了所有页面的评论