Fail2ban SSH防爆破和邮箱报警服务(beta测试版本)
安全告知:每个人系统版本不一样,环境不一样,请在测试环境下使用,并且进行提前备份
安全检查:SSh一键包,有时效性,风险性,你需要:
检查下载链接是否是官方或者存在劫持风险,SSH是否安全有无第三方修改或者注入后门
SSH执行以下代码
bash <(curl -fsSLk https://help.api.afmax.cn/linux/safe/fail2ban_helper.sh)
如果出现这个不用选择,直接默认,tap回车


fail2ban_helper.sh 脚本内容总结
该脚本是由 afmax.cn 开发的 Fail2ban 自动化管理工具(版本 1.0,发布于 2025-10-25),基于 Bash 编写,核心用途是简化 Linux 系统中 Fail2ban 的安装、配置、维护及卸载流程,同时提供邮件报警功能支持,交互性强且包含多语言提示(中英双语)。
一、前置核心检查(脚本启动必执行)
脚本启动后会先执行两项关键检查,确保操作合法性和安全性:
1. root 权限检查
功能:强制要求以 root 权限运行(通过检查 EUID 是否为 0)。
结果:若非 root,输出红色错误提示并退出脚本。
2. 安全风险提示与确认
核心内容(中英文对照):
支持系统:仅在 CentOS 7+、Debian 9+、Ubuntu 18.04+ 测试通过,其他系统不支持。
来源验证:要求确认脚本来自官方域名 afmax.cn,并自动 ping 检测该域名可达性(不可达则红色警告)。
劫持风险:禁止在不信任网络环境运行,提醒手动检查脚本内容以防范恶意代码。
执行风险:警告 curl | bash 等直接执行方式风险极高,强调脚本完整性的重要性。
系统备份:强烈建议执行操作前创建系统快照或备份重要数据(黄色高亮提示)。
测试环境优先:建议先在测试环境验证功能,再用于生产环境。
交互要求:必须输入 y/Y 确认已阅读风险,否则脚本取消执行并退出。
二、全局关键变量定义
脚本预先定义核心路径和系统相关变量,避免硬编码:
三、主菜单核心功能(6 大模块 + 退出)
脚本启动后进入循环主菜单,提供 6 项功能选择,操作后需按 Enter 返回菜单,支持输入 0 退出:
1. 自动安装 Fail2ban(选项 1)
核心流程:
系统检测:调用 detect_os() 函数,通过 /etc/os-release 识别系统,确定包管理器(yum 用于 CentOS/Rocky/AlmaLinux,apt-get 用于 Debian/Ubuntu)和日志路径。
安装步骤:
执行包管理器更新(yum update -y/apt-get update -y);
安装 Fail2ban(yum install fail2ban -y/apt-get install fail2ban -y);
检查安装结果(通过 command -v fail2ban-client 验证);
若 jail.local 不存在,复制 jail.conf 生成(避免修改默认配置);
启用并启动 Fail2ban 服务(systemctl enable --now fail2ban)。
结果输出:绿色提示安装成功,告知配置文件路径和状态检查命令(systemctl status fail2ban)。
2. 修改全局参数(选项 2,针对 [DEFAULT] 配置段)
前提:需先安装 Fail2ban(否则提示找不到 jail.local 并返回)。
可修改参数(均支持 “留空不修改”):
白名单 IP(ignoreip):默认包含 127.0.0.1/8、::1 和服务器本地 IP,支持手动添加多个 IP(空格分隔)。
封禁时间(bantime):默认值从 jail.local 读取,建议设置为 86400 秒(1 天)。
检测时间窗口(findtime):默认值从 jail.local 读取,定义 “在多长时间内检测违规”。
最大尝试次数(maxretry):默认值从 jail.local 读取,定义 “多少次失败后封禁”。
邮件报警设置:
destemail:接收报警的邮箱地址;
sender:发送报警的邮箱地址;
mta:邮件发送工具(如 mail、sendmail)。
后续操作:修改完成后自动重启 Fail2ban 使配置生效(systemctl restart fail2ban)。
3. 修改 SSH 防御规则(选项 3,针对 [sshd] 配置段)
前提:需先安装 Fail2ban。
核心操作:
启用 SSH 规则:自动将 [sshd] 段的 enabled = false 改为 enabled = true。
SSH 端口配置:
自动检测当前 SSH 端口(优先从 ss -tlpn | grep sshd 读取,其次从 /etc/ssh/sshd_config 读取,默认 22);
支持手动修改监控端口,自动更新 [sshd] 段的 port 参数。
日志路径配置:默认使用系统推荐路径(如 CentOS 的 /var/log/secure、Debian 的 /var/log/auth.log),支持手动修改。
SSH 专属封禁策略:可单独设置 SSH 的 maxretry 和 bantime(覆盖全局配置,留空则使用全局值)。
封禁动作选择:
选项 1:仅封禁 IP(使用 %(action_)s);
选项 2(默认):封禁 IP + 发送邮件警告(使用 %(action_mwl)s)。
后续操作:修改完成后自动重启 Fail2ban。
4. 安装 / 配置轻量级邮件服务(选项 4)
功能:为 Fail2ban 邮件报警安装并配置 s-nail(轻量级邮件客户端)。
核心流程:
安装 s-nail:通过系统包管理器安装(yum install s-nail -y/apt-get install s-nail -y)。
SMTP 配置:
交互输入 SMTP 服务器(如 smtp.gmail.com:587)、发件人邮箱、邮箱密码(或应用专用密码,输入时隐藏);
生成 /etc/s-nail.rc 配置文件,写入 SMTP 认证信息(from、smtp、smtp-auth 等)。
兼容性处理:创建软链接 ln -sf /usr/bin/s-nail /usr/bin/mail,确保 Fail2ban 调用 mail 命令时指向 s-nail。
安全提示:黄色警告 “密码以明文存储”,自动将 /etc/s-nail.rc 权限设为 600(仅 root 可读可写)。
5. 测试邮件发送(选项 5)
前提:需先安装 s-nail。
流程:
交互输入接收测试邮件的邮箱地址;
自动生成邮件主题(含 “Fail2ban 助手测试邮件” 和当前日期)和正文(含服务器 hostname 及测试成功提示);
通过 mail 命令发送邮件,绿色提示 “发送成功”,提醒用户检查收件箱。
6. 卸载所有相关组件(选项 6)
功能:完全卸载 Fail2ban 和 s-nail,清除所有配置文件(不可逆)。
流程:
二次确认:需输入 y/Y 确认,否则取消操作;
停止服务:systemctl stop fail2ban 并 systemctl disable fail2ban;
卸载软件:通过包管理器卸载 fail2ban 和 s-nail;
清除配置:删除 /etc/fail2ban 目录(Fail2ban 所有配置)和 /etc/s-nail.rc(邮件配置);
结果:绿色提示 “卸载成功”。
四、脚本核心特点与安全注意事项
1. 特点
交互友好:每个步骤均有明确提示,支持中英文对照,颜色区分信息类型(红 = 错误、绿 = 成功、黄 = 警告、蓝 = 提示)。
兼容性强:自动适配主流 RPM 系(CentOS 等)和 DEB 系(Debian/Ubuntu 等)系统。
配置安全:不直接修改 Fail2ban 默认配置 jail.conf,而是通过 jail.local 覆盖(符合 Fail2ban 最佳实践)。
2. 安全注意事项
禁止直接用 curl | bash 执行:脚本明确警告该方式风险极高,需先下载脚本并手动检查内容。
密码明文风险:邮件配置中密码以明文存储,需确保 /etc/s-nail.rc 权限为 600,且避免使用高权限邮箱。
备份优先:所有操作前必须备份系统或关键数据,避免配置错误导致服务异常。
五、关键函数说明
脚本通过模块化函数实现功能,核心函数包括:
check_root():root 权限检查;
display_safety_warnings():安全提示与确认;
detect_os():系统检测与包管理器 / 日志路径赋值;
各功能函数:install_fail2ban()、modify_parameters_menu()、modify_rules_menu() 等(对应主菜单选项)。