1. 从 /var/log/secure 里提取所有攻击 IP + 去重 + 统计次数
grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' /var/log/secure | sort | uniq -c | sort -nr统计了最近的几次访问的ip
最多访问的几个ip 搜索看上去都有问题 先拉黑这些
ip拉黑吧
2.用 grep 就能精准统计出每个账号被尝试登录的次数
统计所有登录尝试的账号(含失败、无效用户)
grep -E "(Failed password|Invalid user)" /var/log/secure \
| awk '{
if ($0 ~ /Invalid user/) print $8;
else if ($0 ~ /Failed password/) print $9;
}' \
| sort | uniq -c | sort -nr
只统计「root」账号被暴力破解的次数
grep "Failed password for root" /var/log/secure | wc -l
只统计「无效用户名」的尝试次数(比如不存在的账号)
grep "Invalid user" /var/log/secure \
| awk '{print $8}' \
| sort | uniq -c | sort -nr
按「用户名 + IP」维度统计(看哪个 IP 在猜哪个账号)
grep -E "(Failed password|Invalid user)" /var/log/secure \
| awk '{
if ($0 ~ /Invalid user/) {user=$8; ip=$10}
else if ($0 ~ /Failed password/) {user=$9; ip=$11}
print user " " ip
}' \
| sort | uniq -c | sort -nr
3.只允许你自己的 IP 登录 SSH(最有效)
在阿里云安全组里:
- 允许
222.76.14.104/32访问 22 端口 - 删除
0.0.0.0/0允许规则
这样全世界任何人都无法再扫描、破解你的服务器。

4.安装 fail2ban 自动拉黑攻击 IP
yum install -y fail2ban
systemctl start fail2ban
systemctl enable fail2ban

验证防护是否生效
你可以用下面的命令查看当前被封禁的 IP:
fail2ban-client status sshd
- 默认配置下,fail2ban 会监控 SSH 登录失败次数,短时间内多次输错密码的 IP 会被自动封禁一段时间
- 你之前的暴力破解攻击,现在会被 fail2ban 自动拦截,不用再手动拉黑了
- 服务已经设置为开机自启(
systemctl enable fail2ban),重启服务器后也会自动生效

报错 Sorry but the jail 'sshd' does not exist 说明:
- fail2ban 服务虽然启动了,但默认没有启用
sshd防护规则(jail) - 所以你查询
sshd状态时会提示不存在,也看不到封禁数据
启用 sshd 防护规则
# 复制默认配置文件 cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 编辑配置文件,启用sshd防护 vi /etc/fail2ban/jail.local在文件中找到
[sshd]部分,修改为:
[sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = %(sshd_log)s bantime = 86400 # 封禁1天(可自定义) findtime = 3600 # 1小时内 maxretry = 5 # 失败5次就封禁重启 fail2ban 使配置生效
systemctl restart fail2ban验证是否生效
# 查看所有启用的jail fail2ban-client status # 再查看sshd状态 fail2ban-client status sshd现在没有攻击 IP,所以没有封禁记录 → 不是没效果,是目前没人在攻击你!







