#!/bin/bash # 开发者: 857 # Telegram 频道: https://t.me/cryptothrifts # 功能: 自动安装、配置 fail2ban,支持多服务保护、设置封禁时长和失败条件、自定义防火墙规则、解封IP、邮件通知、Cloudflare集成等功能 # 适配操作系统: Ubuntu/Debian/CentOS if [ "$EUID" -ne 0 ]; then echo "请以 root 用户身份运行此脚本。" exit 1 fi echo "开发人: 857" echo "Telegram 频道: https://t.me/cryptothrifts" echo "脚本功能: 自动安装、配置 fail2ban,支持多服务保护、设置封禁时长、失败条件、白名单、自定义防火墙规则、解封IP、邮件通知和Cloudflare集成等功能" echo "适配操作系统: Ubuntu/Debian/CentOS" echo "========================================" if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID else echo "无法检测操作系统类型,脚本停止。" exit 1 fi install_fail2ban() { echo "开始安装 fail2ban..." case $OS in ubuntu|debian) sudo apt-get update sudo apt-get install -y fail2ban mailutils ;; centos|rhel|fedora) sudo yum install -y epel-release sudo yum install -y fail2ban mailx ;; *) echo "不支持的操作系统:$OS" exit 1 ;; esac } configure_service() { local service_name=$1 local port=$2 local log_path=$3 if ! grep -q "\[$service_name\]" /etc/fail2ban/jail.local; then sudo bash -c "cat >> /etc/fail2ban/jail.local <> /etc/fail2ban/jail.local" fi sudo bash -c "cat >> /etc/fail2ban/jail.local <> /etc/fail2ban/jail.local < /etc/fail2ban/action.d/cloudflare.conf <\"}}' EOL" fi } view_logs() { sudo tail -f /var/log/fail2ban.log } while true; do echo "请选择一个操作:" echo "1) 安装 fail2ban" echo "2) 配置服务保护" echo "3) 设置邮件通知" echo "4) 添加自定义防火墙规则" echo "5) 解封 IP 地址" echo "6) 启动 fail2ban" echo "7) 重启 fail2ban" echo "8) 停止 fail2ban" echo "9) 卸载 fail2ban" echo "10) 集成 Cloudflare" echo "11) 查看日志" echo "12) 退出" read -p "请输入选项 (1-12): " OPTION case $OPTION in 1) install_fail2ban ;; 2) configure_service_protection ;; 3) setup_email_notification ;; 4) add_custom_firewall_rule ;; 5) unban_ip ;; 6) start_fail2ban ;; 7) restart_fail2ban ;; 8) stop_fail2ban ;; 9) uninstall_fail2ban ;; 10) integrate_cloudflare ;; 11) view_logs ;; 12) exit 0 ;; *) echo "无效的选项,请重新选择。" ;; esac done