«

服务器被暴力SSH爆破,如何防护与封禁IP

时间:2026-10-20 07:29     作者:emer     分类: 无


前言

公网服务器的22端口每天都会被机器人字典爆破,日志里满是 Failed password。口令弱就容易被撞库拿到root。本篇从"先排查→临时封禁→加固配置→自动防护"给出一套可落地的做法。

一、先确认是不是被爆破

# 统计失败次数最多的IP
lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head
# 或看secure日志里的失败记录
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -rn | head

出现大量同一IP的失败尝试,就是爆破。

二、手动封禁恶意IP(应急)

firewalld 临时/永久拉黑:

# 临时封禁
firewall-cmd --add-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'
# 永久封禁
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'
firewall-cmd --reload
# 查看已加规则
firewall-cmd --list-rich-rules
# 解除封禁
firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'

也可用 iptables -A INPUT -s 1.2.3.4 -j DROP。

三、加固sshd配置(根本)

编辑 /etc/ssh/sshd_config:

# 修改默认端口,别再用22
Port 2222
# 禁止root直接密码登录
PermitRootLogin no
# 禁用空密码
PermitEmptyPasswords no
# 建议改用密钥登录后关闭密码
PasswordAuthentication no
# 最大尝试次数
MaxAuthTries 3
# 10分钟无活动断开
ClientAliveInterval 600

改完 systemctl restart sshd,先保留当前会话再重启,防止把自己锁外面;新端口记得在防火墙放行。

四、自动防爆:fail2ban

自动统计失败次数并封IP,最省事:

yum install -y fail2ban fail2ban-firewalld

新建 /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 600
bantime = 86400

启动并自启:

systemctl enable --now fail2ban
# 查看封禁名单
fail2ban-client status sshd

五、常见坑

  1. 改端口只改sshd忘了防火墙放行:自己也连不上,务必先 firewall-cmd --permanent --add-port=2222/tcp;
  2. 关密码登录前没配好密钥:直接被锁门外;
  3. 只封一次IP:机器人换段继续扫,要用fail2ban自动封;
  4. 云安全组没限制:在安全组只放行你常用IP访问SSH端口,比本机防护更前置;
  5. 弱密码root:PermitRootLogin no + 密钥才是正解,改端口只是提高门槛。

总结

应急用firewalld拉黑,长期靠改端口、禁root密码、上密钥,再用fail2ban自动封高频失败IP,云安全组白名单兜底。层层叠加,爆破就很难成功。

遇到问题加QQ23979811 协助处理

标签: SSH 防火墙 服务器安全 暴力破解 fail2ban