自动化脚本:批量分析并阻止黑名单IP
需积分: 10 26 浏览量
更新于2024-09-15
收藏 616B TXT 举报
"该脚本用于自动分析网络连接,特别是针对HTTP端口80的连接。如果某个IP地址重复连接次数超过100次,它将被列入黑名单,并通过iptables规则阻止其连接。此外,该脚本每10分钟运行一次,并且会检查一个白名单文件,确保不在白名单中的IP才会被拒绝。"
在IT行业中,自动化和安全是两个至关重要的领域。此脚本融合了这两个概念,实现了一个自动化的IP黑名单管理系统。以下是对脚本主要知识点的详细解释:
1. **网络监控**: 脚本首先通过`netstat -an`命令获取当前所有活动的网络连接状态,包括TCP和UDP连接,以及监听和非监听状态。然后,通过`grep :80`筛选出与HTTP服务(端口80)相关的连接。
2. **过滤本地回环地址**: `grep -v 127.0.0.1`排除了本地回环地址,因为这些连接通常不涉及外部网络交互。
3. **IP和端口处理**: 使用`awk '{print $5}'`提取出源IP地址,接着通过`sort`进行排序,`awk -F ':' '{print $1, $4}'`则进一步分离出IP和端口号,便于后续统计。
4. **连接计数**: `uniq -c`对重复的IP进行计数,`awk '$1 > 50 {print $1, $2}'`找出连接超过50次的IP并打印出来。在这个例子中,阈值设置为50,但实际应用中可以根据需求调整。
5. **黑名单管理**: 计数结果写入`/root/black.txt`,然后遍历这个文件,使用`grep`检查每个IP的连接次数。`COUNT`变量存储了IP的连接次数,与预设的阈值`DEFINE="100"`进行比较。
6. **白名单检查**: 在决定是否阻止IP之前,脚本会检查`/root/white.txt`白名单文件,如果IP在白名单内,则不会执行阻止操作。这是通过`grep`命令实现的,返回值的退出状态码用于判断IP是否存在。
7. **iptables防火墙**: 当IP不在白名单内且连接次数超过阈值时,`iptables -I INPUT -p tcp -s $i -j DROP`命令会被执行,向iptables添加一条规则,拒绝来自特定IP的所有TCP连接。
8. **定时执行**: 最后,`*/10 **** root/bin/bash /root/deny_100.sh 10`表示每10分钟执行一次`deny_100.sh`脚本,以保持黑名单的实时更新。
9. **脚本调用**: 脚本的执行可以通过cron定时任务来实现,确保定期检查和更新黑名单。
这个脚本提供了一种有效的网络管理工具,可以防止恶意或频繁的无效请求,有助于保护服务器免受DDoS攻击或其他潜在的安全威胁。然而,需要注意的是,这种简单的黑名单策略可能会误封合法IP,因此在实际部署中,可能需要结合其他验证手段,如IP信誉系统或更复杂的访问控制策略。
2021-01-20 上传
2024-09-19 上传
2021-09-06 上传
2008-04-28 上传
2021-09-20 上传
2021-03-18 上传
2021-04-17 上传
2014-07-15 上传
2008-08-25 上传
qq_25214449
- 粉丝: 0
- 资源: 6
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍