当前位置: 首页 > news >正文

SSH 登录失败,封禁IP脚本

✅ 脚本功能:

  • lastb 命令中提取失败登录的 IP;

  • 统计每个 IP 出现的次数;

  • 如果某个 IP 的失败次数超过 5 次,就使用 iptables 添加一条拒绝规则(可选切换为 firewalld);

  • 日志记录已屏蔽的 IP,防止重复处理。


✅ 脚本内容(建议保存为 /usr/local/bin/block_bruteforce.sh):

#!/bin/bash# 阈值定义
THRESHOLD=5
# 日志文件记录已封锁IP,避免重复处理
BLOCKED_LOG="/var/log/blocked_ssh_ips.log"# 确保日志文件存在
touch "$BLOCKED_LOG"# 获取失败登录的IP地址列表并统计出现次数
lastb | awk '{print $3}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | while read COUNT IP; doif [[ $COUNT -ge $THRESHOLD ]]; then# 检查是否已封锁过if grep -q "$IP" "$BLOCKED_LOG"; thenecho "$IP 已封锁,跳过"elseecho "检测到 $IP SSH 登录失败 $COUNT 次,正在封锁..."# 使用 iptables 封锁该 IP(可根据需要替换为 firewalld)iptables -I INPUT -s "$IP" -j DROP# 记录到日志echo "$IP" >> "$BLOCKED_LOG"fifi
done

✅ 设置定时任务(每5分钟执行一次):

chmod +x /usr/local/bin/block_bruteforce.sh# 编辑 crontab
crontab -e# 添加以下行(每5分钟运行一次脚本)
*/5 * * * * /usr/local/bin/block_bruteforce.sh

🔐 若使用 firewalld(替换脚本中封锁部分):

# 使用 firewalld 而不是 iptables
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$IP' reject"
firewall-cmd --reload
http://www.lryc.cn/news/588180.html

相关文章:

  • Oracle 学习笔记
  • 【橘子分布式】Thrift RPC(理论篇)
  • LINUX714 自动挂载/nfs;物理卷
  • 基于STM32的智能抽水灌溉系统设计(蓝牙版)
  • 前端开发中的常见问题及解决方案
  • 数据结构——优先队列(priority_queue)的巧妙运用
  • 渗透第一次总结
  • 【Python办公】Python如何批量提取PDF中的表格
  • 前端基础之《Vue(22)—安装MongoDB》
  • 【Java EE初阶 --- 网络原理】初识网络
  • 第十七节:第五部分:网络通信:TCP通信-支持与多个客户端同时通信
  • 如何使用Cisco DevNet提供的免费ACI学习实验室(Learning Labs)?(Grok3 回答)
  • 笔试——Day6
  • CISSP知识点汇总- 通信与网络安全
  • 内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
  • 密码学中立方攻击的另类应用
  • 安全初级(一)
  • 多租户云环境下的隔离性保障:虚拟化、容器、安全组如何协同防护?
  • git 访问 github
  • 【深度学习框架终极PK】TensorFlow/PyTorch/MindSpore深度解析!选对框架效率翻倍
  • 智能Agent场景实战指南 Day 12:医疗咨询Agent设计模式
  • vue3+arcgisAPI4示例:自定义多个气泡窗口展示(附源码下载)
  • C#中发布订阅的阻塞非阻塞
  • Spring Boot + Vue2 实现腾讯云 COS 文件上传:从零搭建分片上传系统
  • QT——信号与槽
  • Zabbix在MySQL性能监控方面的运用
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十五课——基于sobel算子边缘检测的FPGA实现
  • Spring核心概念指南
  • Linux部署Mysql
  • (LeetCode 每日一题) 1290. 二进制链表转整数 (链表+二进制)