自动化脚本:批量分析并阻止黑名单IP
需积分: 10 102 浏览量
更新于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 上传
2014-07-15 上传
2008-08-25 上传
2021-04-17 上传
qq_25214449
- 粉丝: 0
- 资源: 6
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析