200字
Fail2ban SSH防爆破和邮箱报警服务一键安装beta
2025-10-25
2025-10-30

Fail2ban SSH防爆破和邮箱报警服务(beta测试版本)

安全告知:每个人系统版本不一样,环境不一样,请在测试环境下使用,并且进行提前备份

安全检查:SSh一键包,有时效性,风险性,你需要:

检查下载链接是否是官方或者存在劫持风险,SSH是否安全有无第三方修改或者注入后门

SSH执行以下代码

bash <(curl -fsSLk https://help.api.afmax.cn/linux/safe/fail2ban_helper.sh)

如果出现这个不用选择,直接默认,tap回车

屏幕截图 2025-10-25 004752.png

屏幕截图 2025-10-25 004047.png

fail2ban_helper.sh 脚本内容总结

该脚本是由 afmax.cn 开发的 Fail2ban 自动化管理工具(版本 1.0,发布于 2025-10-25),基于 Bash 编写,核心用途是简化 Linux 系统中 Fail2ban 的安装、配置、维护及卸载流程,同时提供邮件报警功能支持,交互性强且包含多语言提示(中英双语)。

一、前置核心检查(脚本启动必执行)

脚本启动后会先执行两项关键检查,确保操作合法性和安全性:

1. root 权限检查

  • 功能:强制要求以 root 权限运行(通过检查 EUID 是否为 0)。

  • 结果:若非 root,输出红色错误提示并退出脚本。

2. 安全风险提示与确认

  • 核心内容(中英文对照):

  1. 支持系统:仅在 CentOS 7+、Debian 9+、Ubuntu 18.04+ 测试通过,其他系统不支持。

  1. 来源验证:要求确认脚本来自官方域名 afmax.cn,并自动 ping 检测该域名可达性(不可达则红色警告)。

  1. 劫持风险:禁止在不信任网络环境运行,提醒手动检查脚本内容以防范恶意代码。

  1. 执行风险:警告 curl | bash 等直接执行方式风险极高,强调脚本完整性的重要性。

  1. 系统备份:强烈建议执行操作前创建系统快照或备份重要数据(黄色高亮提示)。

  1. 测试环境优先:建议先在测试环境验证功能,再用于生产环境。

  • 交互要求:必须输入 y/Y 确认已阅读风险,否则脚本取消执行并退出。

二、全局关键变量定义

脚本预先定义核心路径和系统相关变量,避免硬编码:

变量名

默认值

用途说明

JAIL_CONF

/etc/fail2ban/jail.conf

Fail2ban 默认主配置文件(不直接修改)

JAIL_LOCAL

/etc/fail2ban/jail.local

自定义配置文件(覆盖默认规则,安全修改)

PKG_MANAGER

自动检测(yum/apt-get)

系统包管理器(根据 OS 自动赋值)

LOG_PATH

自动检测(/var/log/secure 等)

系统认证日志路径(根据 OS 自动赋值)

OS_ID

自动检测(如 centos/debian)

操作系统标识(从 /etc/os-release 读取)

三、主菜单核心功能(6 大模块 + 退出)

脚本启动后进入循环主菜单,提供 6 项功能选择,操作后需按 Enter 返回菜单,支持输入 0 退出:

1. 自动安装 Fail2ban(选项 1)

  • 核心流程:

  1. 系统检测:调用 detect_os() 函数,通过 /etc/os-release 识别系统,确定包管理器(yum 用于 CentOS/Rocky/AlmaLinux,apt-get 用于 Debian/Ubuntu)和日志路径。

  1. 安装步骤

  • 执行包管理器更新(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)。

  1. 结果输出:绿色提示安装成功,告知配置文件路径和状态检查命令(systemctl status fail2ban)。

2. 修改全局参数(选项 2,针对 [DEFAULT] 配置段)

  • 前提:需先安装 Fail2ban(否则提示找不到 jail.local 并返回)。

  • 可修改参数(均支持 “留空不修改”):

  1. 白名单 IP(ignoreip):默认包含 127.0.0.1/8、::1 和服务器本地 IP,支持手动添加多个 IP(空格分隔)。

  1. 封禁时间(bantime):默认值从 jail.local 读取,建议设置为 86400 秒(1 天)。

  1. 检测时间窗口(findtime):默认值从 jail.local 读取,定义 “在多长时间内检测违规”。

  1. 最大尝试次数(maxretry):默认值从 jail.local 读取,定义 “多少次失败后封禁”。

  1. 邮件报警设置

  • destemail:接收报警的邮箱地址;

  • sender:发送报警的邮箱地址;

  • mta:邮件发送工具(如 mail、sendmail)。

  • 后续操作:修改完成后自动重启 Fail2ban 使配置生效(systemctl restart fail2ban)。

3. 修改 SSH 防御规则(选项 3,针对 [sshd] 配置段)

  • 前提:需先安装 Fail2ban。

  • 核心操作:

  1. 启用 SSH 规则:自动将 [sshd] 段的 enabled = false 改为 enabled = true。

  1. SSH 端口配置

  • 自动检测当前 SSH 端口(优先从 ss -tlpn | grep sshd 读取,其次从 /etc/ssh/sshd_config 读取,默认 22);

  • 支持手动修改监控端口,自动更新 [sshd] 段的 port 参数。

  1. 日志路径配置:默认使用系统推荐路径(如 CentOS 的 /var/log/secure、Debian 的 /var/log/auth.log),支持手动修改。

  1. SSH 专属封禁策略:可单独设置 SSH 的 maxretry 和 bantime(覆盖全局配置,留空则使用全局值)。

  1. 封禁动作选择

  • 选项 1:仅封禁 IP(使用 %(action_)s);

  • 选项 2(默认):封禁 IP + 发送邮件警告(使用 %(action_mwl)s)。

  • 后续操作:修改完成后自动重启 Fail2ban。

4. 安装 / 配置轻量级邮件服务(选项 4)

  • 功能:为 Fail2ban 邮件报警安装并配置 s-nail(轻量级邮件客户端)。

  • 核心流程:

  1. 安装 s-nail:通过系统包管理器安装(yum install s-nail -y/apt-get install s-nail -y)。

  1. SMTP 配置

  • 交互输入 SMTP 服务器(如 smtp.gmail.com:587)、发件人邮箱、邮箱密码(或应用专用密码,输入时隐藏);

  • 生成 /etc/s-nail.rc 配置文件,写入 SMTP 认证信息(from、smtp、smtp-auth 等)。

  1. 兼容性处理:创建软链接 ln -sf /usr/bin/s-nail /usr/bin/mail,确保 Fail2ban 调用 mail 命令时指向 s-nail。

  1. 安全提示:黄色警告 “密码以明文存储”,自动将 /etc/s-nail.rc 权限设为 600(仅 root 可读可写)。

5. 测试邮件发送(选项 5)

  • 前提:需先安装 s-nail。

  • 流程:

  1. 交互输入接收测试邮件的邮箱地址;

  1. 自动生成邮件主题(含 “Fail2ban 助手测试邮件” 和当前日期)和正文(含服务器 hostname 及测试成功提示);

  1. 通过 mail 命令发送邮件,绿色提示 “发送成功”,提醒用户检查收件箱。

6. 卸载所有相关组件(选项 6)

  • 功能:完全卸载 Fail2ban 和 s-nail,清除所有配置文件(不可逆)。

  • 流程:

  1. 二次确认:需输入 y/Y 确认,否则取消操作;

  1. 停止服务:systemctl stop fail2ban 并 systemctl disable fail2ban;

  1. 卸载软件:通过包管理器卸载 fail2ban 和 s-nail;

  1. 清除配置:删除 /etc/fail2ban 目录(Fail2ban 所有配置)和 /etc/s-nail.rc(邮件配置);

  1. 结果:绿色提示 “卸载成功”。

四、脚本核心特点与安全注意事项

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() 等(对应主菜单选项)。