服务器暴力破解防护实战指南:3步封堵SSH暴力破解

为什么你的服务器总被暴力破解?

服务器暴力破解是新手站长最容易踩的坑——攻击者用脚本不断尝试SSH用户名和密码,一旦猜中就能直接登录。
我见过很多买来VPS三天,root密码就被破了的案例。
其实只要做几个简单设置,就能挡住99%的扫描。

动手之前,先确认这些条件

开始操作前,请确保:

  • 你有一台Linux服务器(本教程以CentOS 7/8为例,Ubuntu命令也类似,我会顺便标注差异)
  • 已经通过SSH登录到服务器(如果还没连上,可以用Xshell、Putty或者直接终端ssh root@你的IP)
  • 有一个非root的普通用户(如果还没有,先创建一个,因为后面我们要禁止root远程登录)

创建普通用户的命令:

useradd myuser   # 替换成你想要的用户名
passwd myuser    # 设置密码

并给这个用户sudo权限:

usermod -aG wheel myuser    # CentOS
# 或者 Ubuntu: usermod -aG sudo myuser

封堵SSH暴力破解的具体操作

第一步:修改SSH默认端口

默认端口22是攻击者重点扫描对象。
改成高位端口(比如2222或10086)能大幅减少扫描命中率。

编辑SSH配置文件:

vi /etc/ssh/sshd_config

找到 #Port 22 这一行,去掉注释,把22改成你的新端口,比如:

Port 22222

注意: 改完先别重启ssh,等第二步一起做。

第二步:禁止root用户直接密码登录

接着在同一文件里找到 PermitRootLogin yes,改成:

PermitRootLogin prohibit-password

这样root只能通过密钥登录,密码登录被禁止。
如果希望完全禁止root登录,可以改成 PermitRootLogin no,但我建议保留密钥登录方式,方便紧急管理。

然后保存文件,重启SSH服务:

systemctl restart sshd   # CentOS / systemd 系统
# 或者 service ssh restart   # 老系统

千万别直接退出当前会话! 先另开一个终端窗口测试新端口能否连上:

ssh -p 22222 myuser@你的服务器IP

如果能正常登录,再关闭原窗口。
如果连不上,用原端口的窗口排查。

第三步:安装Fail2ban自动封锁IP

Fail2ban能监控SSH登录失败次数,超过阈值(比如5次)就临时封掉来源IP10分钟。

CentOS安装:

yum install epel-release -y
yum install fail2ban -y

Ubuntu:

apt update
apt install fail2ban -y

安装后配置SSH防护:

vim /etc/fail2ban/jail.local

写入以下内容(如果文件不存在则新建):

[DEFAULT]
bantime = 600          # 封禁10分钟
findtime = 600         # 检测窗口10分钟
maxretry = 5           # 失败5次触发

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s

注意:如果你修改了SSH端口,要把 port = ssh 改成实际端口号,比如 port = 22222

启动Fail2ban并设为开机自启:

systemctl start fail2ban
systemctl enable fail2ban

查看当前封禁列表:

fail2ban-client status sshd

这样服务器暴力破解防护的三步就完成了。

避坑:新手最容易忽略的几个地方

  • 防火墙放行新端口:修改SSH端口后,必须在服务器防火墙(firewalld/iptables)和云平台安全组同时放行新端口。以firewalld为例:
    firewall-cmd --permanent --add-port=22222/tcp
    firewall-cmd --reload

云平台(阿里云、腾讯云、AWS等)还要去控制台安全组添加入方向规则。

  • Fail2ban不生效:检查日志路径是否准确,可以手动模拟失败登录然后查 tail -f /var/log/fail2ban.log
  • 密钥登录设置:如果打算彻底抛弃密码,建议先生成SSH密钥对并测试通过,再关闭密码认证。生成密钥命令:ssh-keygen -t rsa -b 4096,然后把公钥传到服务器 ssh-copy-id -p 端口 用户@IP

验证防护效果及高频问题

怎么知道防护起了作用?

用另一个终端模拟暴力破解:

# 用错误的密码连续登录6次,注意替换IP和新端口
for i in {1..6}; do ssh -p 22222 user@你的服务器IP; done

之后再次用正确密码登录,会提示被拒绝或连接被重置。
然后查看Fail2ban状态:

fail2ban-client status sshd

会看到被禁的IP。
过10分钟后再试,应该恢复。

常见问题Q&A

Q:修改端口后自己连不上服务器怎么办?
A:如果在机房/控制台有VNC或救援模式,可以从后台直接修改sshd_config文件恢复;或者用云平台“一键登录”等功能进入系统。所以建议先保留一个root会话不要关闭。

Q:Fail2ban误封自己的IP怎么办?
A:可以手动解封:fail2ban-client set sshd unbanip 你的IP。如果频繁误封,可以调大 maxretry 值或减小 findtime

Q:我不喜欢Fail2ban,有其他替代吗?
A:可以用云平台自带的DDoS高防或安全组黑名单,或者使用DenyHosts等工具。但Fail2ban最通用灵活。

---

如果你正在处理服务器暴力破解防护,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
这套方案我已经帮几十个朋友部署过,只要配置时小心别断连,基本半小时内就能搞定。

分享到:
上一篇
服务器后门检测实操指南:从零开始排查可疑进程与文件
下一篇
零基础搞定服务器CC攻击防护:从入门到落地
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意