当前位置: 首页 > 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.dtcms.com/a/279585.html

相关文章:

  • 理解Grafana中`X-Scope-OrgID`的作用与配置
  • JavaWeb与HTTP协议
  • 【FPGA】AXI总线协议
  • 李宏毅(deep-leraning)-四---梯度下降batch size
  • 品质童装好而不贵!百胜中台助力久岁伴稳步发展
  • 今日行情明日机会——20250714
  • openEuler系统串口文件手法压力测试及脚本使用说明
  • 破解 VMware 迁移难题:跨平台迁移常见问题及自动化解决方案
  • 我的第一个开源项目:SpringCloud电商前端Vue实战
  • AI驱动编程范式革命:传统开发与智能开发的全维度对比分析
  • 《解锁音频处理新姿势:探索Librosa的无限可能》
  • androidstudio 高低版本兼容
  • 量产技巧之RK3588 Android12默认移除导航栏状态栏​
  • imx6ull-系统移植篇5——U-Boot 顶层 Makefile 简析
  • 蓝象智联入选江苏金融数据开发主体:隐私计算如何赋能公共数据价值释放?
  • Java :编译器的占位符 T#1
  • 【PTA数据结构 | C语言版】字符串匹配算法
  • es的自定义词典和停用词
  • 天海电子闯上市:业绩增速骤降,“踩雷”合众汽车,存坏账风险
  • Go从入门到精通(22) - 一个简单web项目-统一日志输出
  • 5.浏览本地文件获取路径与文件名称 C#例子 WPF例子
  • Elasticsearch 9.x 升级变化
  • 【安卓笔记】线程基本使用:锁、锁案例
  • Windows安装postgreSQL(保姆级教程)
  • 机床自动化中的“方言翻译官”:EtherNet/IP 转 PROFIBUS DP 实战手记
  • 安全初级(一)
  • 胡志明证券交易所新一代交易系统解决方案——基于美联储利率决议背景下的越南跨境金融基础设施升
  • pycharm恢复出厂设置,可以解决大多数pycharm存在的问题
  • nginx:SSL_CTX_use_PrivateKey failed
  • 怎么 将训练后的词嵌入向量反编译为自然语言