IP流量监控与封禁工具

IP流量监控与封禁工具

由于云服务器上线后经常出现带宽被占满的情况,导致服务使用不了,用户体验极差。通过禁用一些端口无效后,故写了个小脚本自动封禁高带宽消耗的IP地址。并附上被封禁的IP地址。

功能特性

  • 实时流量监控:使用iftop捕获实时网络流量数据。
  • 自动IP封禁:自动封禁超过特定带宽阈值的IP地址(例如,消耗超过100MB或1Gb带宽的IP)。
  • 随机化间隔时间:在检查之间引入随机化的时间间隔,防止被预测。
  • 错误处理:包含子进程调用的错误处理,确保程序的健壮性。

前提条件

在开始之前,请确保您已满足以下要求:

  • Python 3.6或更高版本:脚本使用Python编写,需要Python 3.6或更高版本。
  • iftop:命令行网络监控工具。可以通过包管理器安装(例如,在基于Debian的系统上使用sudo apt-get install iftop)。
  • iptables:用户空间实用程序,允许系统管理员配置Linux内核防火墙的IP数据包过滤规则。

安装步骤

  1. 克隆仓库:
git clone https://github.com/Echo-she/ban_ip.git

使用方法

永久后台要运行脚本,只需执行以下命令:

nohup python main.py &

脚本将开始监控网络流量,并自动封禁超过预定义带宽阈值的IP地址。

工作原理

  1. 获取流量数据:脚本使用subprocess调用iftop并捕获输出。
  2. 解析流量数据:解析iftop的输出,识别高带宽使用的IP地址。
  3. 封禁IP地址:将超过带宽阈值的IP地址添加到iptables的封禁列表中。
  4. 持续监控:脚本在循环中运行,持续监控并封禁IP地址,并在检查之间引入随机化的时间间隔。

配置

  • 带宽阈值:脚本目前封禁消耗超过100MB或1Gb带宽的IP地址。您可以通过修改parse_iftop_output函数来调整这些阈值。
  • 间隔时间:检查之间的间隔时间为1到2秒之间的随机值。您可以通过修改main函数中的time.sleep(1 + random.random())行来调整此设置。

致谢

  • 感谢iftopiptables的开发者,提供了强大的网络监控和管理工具。
  • 灵感来源于现代IT环境中对自动化网络安全措施的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值