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 入侵检测与应急响应—检测成功后如何应急处置 |