SSH暴力破解频发?Fail2Ban + 邮件通知构建自动封禁系统

你打开服务器日志,发现 auth.log 里满是这样的信息:

text
Failed password for invalid user admin from 45.XX.XX.XX port 53720 ssh2

这些不是“误输密码”,而是来自全球各地机器人的暴力破解尝试,几分钟上百次,严重时甚至影响 SSH 稳定性和系统负载。

这种攻击虽然不一定立即成功,但长期来看是巨大的安全隐患。Fail2Ban 就是针对这类攻击的利器——实时分析日志,自动识别异常IP并临时封禁,还能邮件通知你异常行为

下面我们一步一步搭建一个轻量高效的“SSH入侵自封锁系统”。


一、Fail2Ban 是什么?为什么适合 SSH 防护?

Fail2Ban 是一款开源轻量级安全工具:

  • 会监控系统日志文件,如 /var/log/auth.log
  • 匹配暴力攻击特征(如登录失败次数)
  • 一旦触发设定阈值,即调用 iptablesfirewalld 封禁攻击源IP
  • 支持发送通知邮件、自定义脚本联动

它非常适合 VPS、轻量云主机等资源有限的服务器,无需额外代理或商业防火墙服务即可实现有效防护。


二、安装 Fail2Ban(以 Debian/Ubuntu 为例)

bash
sudo apt update
sudo apt install fail2ban

安装后,它会自动创建系统服务,并默认启用 sshd 的基础防护。


三、基础配置:封禁策略设定

Fail2Ban 主配置文件为 /etc/fail2ban/jail.conf,但推荐自定义配置写在 /etc/fail2ban/jail.local 中避免更新被覆盖。

✅ 示例配置(jail.local):

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

maxretry = 5
findtime = 10m
bantime = 1h

说明:

  • maxretry:失败次数阈值
  • findtime:计算窗口时间(10分钟内失败5次)
  • bantime:封禁时长,单位为秒(可设为 -1 永久封禁)

四、添加邮件通知(可选但推荐)

Fail2Ban 支持触发行为后发送邮件提醒,适合你实时知道谁在尝试攻击你的服务器。

✅ 修改 /etc/fail2ban/jail.local 增加:

ini
destemail = your_email@example.com
sender = fail2ban@yourdomain.com
mta = sendmail
action = %(action_mwl)s

如果你使用 Gmail 发送,建议使用 msmtppostfix 配置外发。


五、查看封禁情况与解封命令

✅ 查看当前被封禁的 IP:

bash
sudo fail2ban-client status sshd

返回示例:

text
Status for the jail: sshd
Banned IP list: 45.88.xx.xx 185.22.xx.xx

✅ 解封某个 IP:

bash
sudo fail2ban-client set sshd unbanip 1.2.3.4

六、拓展防护场景:不仅限于 SSH

Fail2Ban 还可以用来防护其他服务,如:

服务类型日志路径匹配对象
Nginx 登录/var/log/nginx/access.log登录失败 / POST 攻击
WordPress使用 fail2ban-wordpress 插件规则wp-login 攻击频率
FTP/SFTP/var/log/auth.log登录失败
邮件服务器/var/log/mail.logSMTP暴力破解

七、安全建议与实战建议

项目建议操作
SSH端口建议更换为非默认(如2222)
只允许密钥登录禁用密码登录,增强安全性
配合UFW或firewalld限制允许国家或固定IP范围
使用 fail2ban + GeoIP按国家封锁恶意IP(需安装额外模块)

暴力破解不可怕,可怕的是你服务器在静静挨打却毫无反应。Fail2Ban 就像一个 24小时站岗的卫兵,帮你把坏人自动请出门外。

加上邮件通知机制,你不仅可以自动封禁,还能第一时间了解谁、何时、从哪儿试图入侵。

实操指南知识库

用 cron + shell 脚本实现服务器定时监控与自动重启机制

2025-4-2 11:19:49

实操指南知识库

服务器买来后第一步该做什么?新手部署全流程指南

2025-4-7 11:31:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧