返回首页

Linux SSH 防暴力破解脚本 — anti_brute_force.sh 实战部署指南

📅 创建于 2026-05-19 🔄 更新于 2026-05-19 📝 324 字

Linux SSH 防暴力破解脚本 — anti_brute_force.sh 实战部署指南

一个功能完整的 Linux 防暴力破解 bash 脚本,自动检测 SSH 登录失败行为,对恶意 IP 进行 iptables/ufw 封禁。可作为 fail2ban 的轻量替代或补充方案。

功能特色

功能 说明
SSH 登录失败检测 自动扫描 /var/log/auth.log/var/log/secure,识别暴力破解
自动封禁 IP 超过阈值的 IP 自动被 iptables/ufw 封禁
自动解封过期封禁 超时后自动解封(默认 24 小时)
白名单管理 支持添加/移除/查看 IP 白名单,避免误封
手动管理 支持手动封禁/解封 IP
邮件通知 封禁时发送邮件告警(可选)
Webhook 通知 支持钉钉/企业微信等 Webhook 通知(可选)
系统服务 支持安装为 systemd 服务,开机自启

快速部署

# 1. 上传脚本到服务器
# 将 anti_brute_force.sh 上传到 /usr/local/bin/

# 2. 添加执行权限
chmod +x /usr/local/bin/anti_brute_force.sh

# 3. 首次运行初始化(自动创建配置文件)
anti_brute_force.sh help

首次运行自动生成以下文件:

文件 用途
/etc/anti_brute_force.conf 配置文件
/etc/anti_brute_force_whitelist.conf 白名单文件
/var/log/anti_brute_force.log 运行日志

配置说明

配置文件 /etc/anti_brute_force.conf 主要参数:

# 最大失败尝试次数,超过即封禁
MAX_ATTEMPTS=5

# 封禁时长(秒),86400=24小时
BAN_DURATION=86400

# 检查间隔(秒)
CHECK_INTERVAL=60

# 是否启用邮件通知
ENABLE_EMAIL=false
EMAIL_TO=root@localhost

# 是否启用 Webhook 通知
ENABLE_WEBHOOK=false
WEBHOOK_URL=

使用命令

check     - 立即检查并封禁暴力破解 IP
monitor   - 持续监控模式(守护进程)
block     - 手动封禁指定 IP
unblock   - 解封指定 IP
list      - 查看已封禁 IP 列表
whitelist - 白名单管理(add/remove/list)
install   - 安装为系统服务

持续监控

anti_brute_force.sh monitor

或安装为 systemd 服务后台运行:

anti_brute_force.sh install
systemctl start anti-brute-force
systemctl enable anti-brute-force

高级配置

邮件通知:

apt install mailutils -y   # Debian/Ubuntu
# 或
yum install mailx -y       # CentOS/RHEL
# /etc/anti_brute_force.conf 中设置
ENABLE_EMAIL=true
[email protected]

Webhook 通知:

# /etc/anti_brute_force.conf 中设置
ENABLE_WEBHOOK=true
WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx

关键实现原理

脚本通过解析系统 SSH 认证日志(/var/log/auth.log/var/log/secure),使用 grep "Failed password" 提取失败登录 IP,按出现次数排序。超过 MAX_ATTEMPTS 阈值的 IP 自动通过 iptables -I INPUT -s <ip> -j DROP 封禁(或 ufw deny from <ip>)。封禁记录写入 /tmp/blocked_ips.db,含封禁时间、解封时间、原因,供自动解封和查询使用。

注意事项

  • 必须使用 root 用户运行
  • 首次使用务必先添加白名单(自己的 IP),避免误封
  • 建议先在测试环境验证,再上生产
  • 可结合 fail2ban 使用,提供更全面的保护
  • 脚本依赖 iptables 或 ufw,检查是否已安装

关联页面

页面 关联点
ssh-brute-force-protection-guide SSH 暴力破解防御指南(纵深防御策略 + fail2ban + 2FA + 入侵检测)——该脚本是 fail2ban 的轻量替代/补充方案
server-security-hardening-checklist 服务器安全加固清单—20 项新机器上线基线
linux-intrusion-detection-guide Linux 入侵检测与应急响应—检测成功后如何应急处置