Shell ❀ 一键配置Iptables规则脚本 (HW推荐)
文章目录
- 注意事项
- 1. 地址列表填写规范
- 2. 代码块
- 3. 执行结果
- 4. 地址与端口获取方法
- 4.1 tcpdump抓包分析(推荐使用)
- 4.2 TCP连接分析(仅能识别TCP连接)
注意事项
- 请务必按照格式填写具体参数,否则会影响到匹配规则的创建,严重时会影响到业务流量!!!
- 请务必按照格式填写具体参数,否则会影响到匹配规则的创建,严重时会影响到业务流量!!!
- 请务必按照格式填写具体参数,否则会影响到匹配规则的创建,严重时会影响到业务流量!!!
1. 地址列表填写规范
ip.txt文件内容填写案例:
ip port # 单个地址和单个端口格式
ip port1,port2... # 单个地址和多个端口格式
ip/net port # 网段地址和单个端口格式
ip/net port1,port2... # 网段地址和多个端口格式
- 地址文件名称为
ip.txt,若需替换则修改代码块第9行if test -s ./ip.txt;处ip.txt即可; - 多个IP地址请务必隔行输出,请使用英文半字符格式输入配置;
- 添加IP地址不可重复,但支持包含关系;
- 支持CIDR格式添加IP地址;
- 多个端口使用 [逗号] 间隔;
- IP地址与端口之间使用 [空格] 字符进行间隔。
- 若不了解该服务,可先查阅iptables服务详解
2. 代码块
#!/bin/bashfile_path=$(dirname "$0")
cd $file_pathchain="IP_WHITELIST" # 创建链名称为:IP_WHITELIST
ip_list=""if test -s ./ip.txt; thencat ip.txt | awk '{print$1}' > ./ip_temp.txt # IP地址去重ip_list=($(sort -u ./ip_temp.txt))rm -f ./ip_temp.txt
fifunction create_rule(){# 注意iptables插入顺序iptables -w -t filter -N $chain # 创建新链iptables -w -t filter -I $chain -j DROP # 匹配所有流量,执行动作拒绝for ip in ${ip_list[@]}; dodports=`cat ip.txt | grep "$ip" | awk '{print$2}'`if [ -z "$dports" ]; then # 判断端口列表是否为空iptables -w -t filter -I $chain -s $ip -j ACCEPTelseiptables -w -t filter -I $chain -s $ip -p tcp -m multiport --dports $dports -j ACCEPTfidoneecho -e "\033[32miptables service rule crete complete!\033[0m"
}function delete_rule(){# 清理iptables创建的匹配规则while iptables -w -t filter -D INPUT -p tcp -j $chain 2>/dev/null; do # 忽略删除匹配规则错误信息sleep 0.1s done# iptables -w -t filter -F $chain 2>/dev/nulliptables -w -t filter -X $chain 2>/dev/nullecho -e "\033[32miptables service rule cleanup complete!\033[0m"
}function backup_rule(){# 备份当前环境下iptables规则到指定目录下临时文件iptables-save > ./iptables_bk_$(date +"%Y-%m-%d %H:%M:%S") # 以时间指定文件名称echo -e "\033[32miptables service rule backup complete,path is "$file_path"/iptables_bk_<local_time>\033[0m"
}case ${1:-help} in "create" )# 先备份规则,再清理规则,后创建新规则backup_rule && delete_rule && create_rule;;"delete" )# 先备份规则,再清理规则backup_rule && delete_rule;;"backup" )# 直接备份规则backup_rule;;* )# 可用参数说明echo -e "\033[31m Usage: \n\t$0 options is [create/delete/backup/help]\033[0m";;
esac
3. 执行结果

ip.txt配置参考

4. 地址与端口获取方法
4.1 tcpdump抓包分析(推荐使用)
tcpdump -i any -s56 -lnnqt 'inbound and (dst port 2181 or dst port 2888 or dst port 3888)' | cut -d'.' -f1-4 | awk '!a[$NF]++ {print $NF; fflush();}' | tee <file_path>/ip.txt
命令解析:
- tcpdumo:-i any 抓取所有接口数据包,-s56 截取报文前56字节内容,-lnnqt 使用数字格式显示IP地址和端口号,inbound 只抓取入站数据包,dst port 目标端口列表
- cut:切割出IP地址
- awk:对每个IP地址进行去重操作
4.2 TCP连接分析(仅能识别TCP连接)
ss -nat | grep -E ":2181|2888|3888" | awk '{print $NF}' | grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | awk '!a[$0]++' | tee <file_path>/ip.txt
命令解析:
- ss:查找当前系统中所有TCP连接的状态信息,并同时过滤端口
- awk:第一个为输出最后一行信息并过滤出IP地址,第二个为对每个IP地址进行去重操作
相关文章:
Shell ❀ 一键配置Iptables规则脚本 (HW推荐)
文章目录 注意事项1. 地址列表填写规范2. 代码块3. 执行结果4. 地址与端口获取方法4.1 tcpdump抓包分析(推荐使用)4.2 TCP连接分析(仅能识别TCP连接) 注意事项 请务必按照格式填写具体参数,否则会影响到匹配规则的创建…...
linux服务器查找大文件及删除文件后磁盘空间没有得到释放
1、查询服务器中大于1G的文件 find / -type f -size 1G这条命令是查询自”/”根目录下所有大小超过1G的文件,查询的大小可以根据需要改变,如下: 相关查询:查询服务器中大于100M的文件 find / -type f -size 100M2、查询服务器中…...
Java那些“锁”事 - 死锁及排查
死锁是两个或者两个以上的线程在执行过程中,因争夺资源而造成的一种互斥等待现象,若没有外界干涉那么它们将无法推进下去。如果系统资源不足,进程的资源请求都得到满足,死锁出现的可能性就很低,否则就会因为争夺有限的…...
LLM系列 | 18 : 如何用LangChain进行网页问答
简介 一夕轻雷落万丝,霁光浮瓦碧参差。 紧接之前LangChain专题文章: 15:如何用LangChain做长文档问答?16:如何基于LangChain打造联网版ChatGPT?17:ChatGPT应用框架LangChain速成大法 今天这篇小作文是LangChain实践专题的第4…...
Aspose.cell excel转pdf日期格式不正确yyyy/MM/dd变成MM/dd/yyyy
最近使用Aspose.cell将excel转pdf过程中excel中时间格式列的显示和excel表里的值显示不一样。 excel里日期格式 yyyy/MM/dd pdf里日期格式MM/dd/yyyy 主要原因:linux和windows里内置的时间格式不一致,当代码部署到linux服务器的时候转换格式就会发生不一…...
搭建golang开发环境
这里参考一篇文章: golang环境变量链接,还不错...
Django实现音乐网站 ⑴
使用Python Django框架制作一个音乐网站。 目录 网站功能模块 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 后台管理 创建管理员账户 启动服务器 登录网站 配置时区…...
基于粒子群优化算法的分布式电源选址与定容【多目标优化】【IEEE33节点】(Matlab代码实现)
目录 💥1 概述 1.1 目标函数 2.2 约束条件 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 💥1 概述 分布式电源接入配电网,实现就地消纳,可以提高新能源的利用率、提高电能质量和降低系统网损…...
打卡一个力扣题目
目录 一、问题 二、解题办法一 三、解题方法二 四、对比分析 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Share: 分享一篇有观点…...
【SSM—SpringMVC】 问题集锦(持续更新)
目录 1.Tomcat启动,部署工件失败 1.Tomcat启动,部署工件失败 解决:使用SpringMVC,添加Web支持,要将项目结构进行添加WEB-INF下添加lib目录,将依赖添进去...
2022年全国职业院校技能大赛(高职组)“软件测试”赛项接口测试任务书
任务七 接口测试 执行接口测试 本部分按照要求,执行接口测试;使用接口测试工具PostMan,编写脚本、配置参数、执行接口测试并且截图,截图需粘贴在接口测试总结报告中。 接口测试具体要求如下: 题目1:资产…...
Docker 如何助您成为数据科学家
一、说明 在过去的 5 年里,我听到了很多关于 docker 容器的嗡嗡声。似乎我所有的软件工程朋友都在使用它们来开发应用程序。我想弄清楚这项技术如何使我更有效率,但我发现网上的教程要么太详细:阐明我作为数据科学家永远不会使用的功能&#…...
机器学习01 -Hello World(对鸢尾花(Iris Flower)进行训练及测试)
什么是机器学习? 机器学习是一种人工智能(AI)的子领域,它探索和开发计算机系统,使其能够从数据中学习和改进,并在没有明确编程指令的情况下做出决策或完成任务。 传统的程序需要程序员明确编写指令来告诉…...
android studio JNI开发
一、JNI的作用: 1.使Java与本地其他类型语言(C、C)交互; 2.在Java代码调用C、C等语言的代码 或者 C、C调用Java代码。 由于JAVA具有跨平台的特点,所以JAVA与本地代码的交互能力弱,采用JNI特性可以增强JA…...
CSS 高频按钮样式
矩形与圆角按钮 正常而言,我们遇到的按钮就这两种 -- 矩形和圆角: 它们非常的简单,宽高和圆角和背景色。 <div classbtn rect>rect</div><div classbtn circle>circle</div>.btn {margin: 8px auto;flex-shrink: 0;…...
系列二、RocketMQ简介
一、概述 RocketMQ是一款阿里巴巴开源的消息中间件。2016年11月28日,阿里巴巴向Apache软件基金会捐赠RabbitMQ,成为Apache孵化项目。2017年9月25日,Apache宣布RocketMQ孵化成为Apache顶级项目(TLP),成为国内…...
论文笔记--Skip-Thought Vectors
论文笔记--Skip-Thought Vectors 1. 文章简介2. 文章概括3 文章重点技术3.1 Skip Thought Vectors3.2 词表拓展 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题:Skip-Thought Vectors作者:Ryan Kiros, Yukun Zhu, Ruslan Salakhutdinov, Rich…...
1400*B. Karen and Coffee
Examples input 3 2 4 91 94 92 97 97 99 92 94 93 97 95 96 90 100 output 3 3 0 4 input 2 1 1 1 1 200000 200000 90 100 output 0 解析: 题意为,给你多个区间(会有重叠),每个区间的每个值都会为这个值累加…...
【业务功能篇54】Springboot项目常用工具类:HTTP状态码/客户端request
状态码常量类 /*** 返回状态码**/ public class HttpStatus {/*** 操作成功*/public static final int SUCCESS 200;/*** 对象创建成功*/public static final int CREATED 201;/*** 请求已经被接受*/public static final int ACCEPTED 202;/*** 操作已经执行成功࿰…...
Fine Logic
登录—专业IT笔试面试备考平台_牛客网 题目大意:有n个数分别为1~n,有m个数值对(u,v)表示u要排在v左边,问至少要多少个排列才能满足所有数值对至少一次 2<n<1e6;1<m<1e6 思路:如果数值对中要求u在v左边,…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...
