Linux系统iptables
目录
一. 防火墙简介
1. 防火墙定义
2. 防火墙分类
①. 网络层防火墙
②. 应用层防火墙
二. iptables
1. iptables定义
2. iptables组成
①. 规则表
②. 规则链
3. iptables格式
①. 管理选项
②. 匹配条件
③. 控制类型
四. 案例说明
1. 查看规则表
2. 增加新规则
3. 替换原有规则
4. 删除原有规则
5. 设置默认策略
6. 通用匹配规则
①. 协议匹配
②. 地址匹配
③. 接口匹配
五. 扩展模块
1. 隐含扩展
2. 显示扩展
①. multiport扩展
②. iprange扩展
③. mac地址模块
④. string 字符串模块
⑤. time模块
⑥. connlimit扩展
⑦. state扩展
六. 案例扩展
1. A能ping通B,B不能ping通A
2. 模拟阻止Dos攻击
一. 防火墙简介
1. 防火墙定义
防火墙:就是在Linux下用来进行访问控制功能的。通过自定义防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测、过滤。
2. 防火墙分类
如果按网络协议划分,可分为网络层防火墙、应用层防火墙。
①. 网络层防火墙
网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否允许该数据包通过。
优点:对用户来说透明,处理速度快且易于维护
缺点:无法检查应用层数据,如病毒等
②. 应用层防火墙
应用层防火墙,也称为代理服务器(Proxy Server)
将所有跨越防火墙的网络通信链路分为两段,内外网用户的访问都是通过代理服务器上的“链接”来实现
优点:在应用层对数据进行检查,比较安全
缺点:增加防火墙的负载
注意:现实生产环境中所使用的防火墙一般都是二者结合体
即先检查网络数据,通过之后再送到应用层去检查
二. iptables
1. iptables定义
iptables是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。

三种报文流向:
流入本机:PREROUTING --> INPUT-->用户空间进程
流出本机:用户空间进程 -->OUTPUT--> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
2. iptables组成
①. 规则表
raw表:确认是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目IP地址或端口,地址转换
filter表:确认是否放行该数据包,过滤
优先级:raw --> mangle --> nat --> filter
②. 规则链
INPUT:进入到本机的流量
OUTPUT:从本机出去的流量
FORWARD:转发
PREROUTING:路由选择前
POSTROUTING:路由选择后
3. iptables格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
①. 管理选项
| 命令 | 说明 |
| -P --policy <链名> | 定义默认策略 |
| -L --list <链名> | 查看iptables规则列表 |
| -A --append <链名> | 在规则列表的最后增加1条规则 |
| -I --insert <链名> | 在指定的位置插入1条规则 |
| -D --delete <链名> | 从规则列表中删除1条规则 |
| -R --replace <链名> | 替换规则列表中的某条规则 |
| -F --flush <链名> | 删除表中所有规则 |
| -Z --zero <链名> | 将表中数据包计数器和流量计数器归零 |
| -X --delete-chain <链名> | 删除自定义链 |
| -v --verbose <链名> | 与-L他命令一起使用显示更多更详细的信息 |
②. 匹配条件
| 命令 | 说明 |
| -i --in-interface 网络接口名> | 指定数据包从哪个网络接口进入 |
| -o --out-interface 网络接口名> | 指定数据包从哪个网络接口输出 |
| -p --proto 协议类型 | 指定数据包匹配的协议,如TCP、UDP和ICMP等 |
| -s --source 源地址或子网> | 指定数据包匹配的源地址 |
| --sport 源端口号> | 指定数据包匹配的源端口号 |
| --dport 目的端口号> | 指定数据包匹配的目的端口号 |
| -m --match 匹配的模块 | 指定数据包规则所使用的过滤模块 |
③. 控制类型
| 类型 | 说明 |
| ACCEPT | 运行通过 |
| DROP | 拒绝通过(收到不回复) |
| REJECT | 拒绝通过(收到回复) |
四. 案例说明
1. 查看规则表


2. 增加新规则


3. 替换原有规则

4. 删除原有规则


注意:
①. 若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条
②. 按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错
③. 按内容匹配删数时,确保规则存在,否则报错
5. 设置默认策略

注意:
默认规则为允许所有,是黑名单,加入其中的规则才被拒绝。
将ACCEPT改为DROP后,规则为拒绝所有,是白名单,加入其中的规则才被允许。
6. 通用匹配规则
直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。
①. 协议匹配
格式:-p协议名

②. 地址匹配
格式:-s 源地址 、-d目的地址

③. 接口匹配
格式:-i入站网卡、-o出站网卡

五. 扩展模块
1. 隐含扩展
iptables 在使用-p选项指明了特定的协议时,无需再用 -m 选项指明扩展模块的扩展机制,不需要手动加载扩展模块
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。
端口匹配: --sport 源端口、--dport 目的端口
这里的端口可以是个别端口或者范围端口
--tcp-flags ALL ALL
--tcp_flags ALL NONE
--sport 1000 匹配源端口是1000的数据包
--sport 1000:3000 匹配源端口是1000-3000的数据包
--sport :3000 匹配源端口是3000及以下的数据包
--sport 1000: 匹配源端口是1000及以上的数据包
注意: --sport和--dport 必须配合-p <协议类型>使用
端口可以使用的范围 0-65535[root@localhost ~]#iptables -A INPUT -p tcp --sport 10000:30000 -j REJECT
#10000到30000 全部被拒TCP标记匹配: --tcp-flags
TCP标记:SYN,RST,ACK,SYN[root@localhost ~]#iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包
2. 显示扩展
显示扩展即必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块
①. multiport扩展
以离散方式定义多端口匹配,最多指定15个端口

②. iprange扩展
指明连续的ip地址范围(但一般不是整个网络)
--src-range from[-to] 源IP地址范围
--dst-range from[-to] 目标IP地址范围

③. mac地址模块
mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains
[root@zabbix-server ~]#ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether ### 00:0c:29:2a:d6:05 #### inet 192.168.91.101/24 brd 192.168.91.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::ce63:27de:ef4d:4f66/64 scope link valid_lft forever preferred_lft forever[root@localhost ~]#iptables -A INPUT -m mac --mac-source 00:0c:29:2a:d6:05 -j REJECT
④. string 字符串模块
对报文中的应用层数据做字符串模式匹配检测
--algo {bm|kmp} 字符串匹配检测算法bm:Boyer-Moore 算法kmp:Knuth-Pratt-Morris 算法--from offset 开始查询的地方
--to offset 结束查询的地方

注意:请求的包不带字符,回复的包带字符,所以要用output
⑤. time模块
根据将报文到达的时间与指定的时间范围进行匹配

⑥. connlimit扩展
根据每客户端IP做并发连接数数量匹配
可防止Dos(Denial of Service,拒绝服务)攻击
--connlimit-upto N #连接的数量小于等于N时匹配
--connlimit-above N #连接的数量大于N时匹配#模拟攻击
[root@localhost3 ~]# gcc flood_connect.c -o flood
#编译安装 黑客文件
[root@localhost3 ~]# ./flood 192.168.91.100
#运行黑客脚本[root@localhost 7-1]#ss [root@localhost1 ~]#iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
⑦. state扩展
-
NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
-
ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
-
RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
-
INVALID:无效的连接,如flag标记不正确
-
UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
--state stateipatables -A INPUT -m state --state NEW -j REJECT
ipatables -A INPUT -m state --state ESTABLISHED -j ACCEPT新用户不可以访问 就用胡可以访问
六. 案例扩展
1. A能ping通B,B不能ping通A
分析:首先ping命令使用的是icmp协议,进来的请求为8,响应的为0,因此只需要将B的请求做限制即可。



2. 模拟阻止Dos攻击
分析:可以通过连接数判断是否是Dos攻击,因此可以限制连接数。


相关文章:
Linux系统iptables
目录 一. 防火墙简介 1. 防火墙定义 2. 防火墙分类 ①. 网络层防火墙 ②. 应用层防火墙 二. iptables 1. iptables定义 2. iptables组成 ①. 规则表 ②. 规则链 3. iptables格式 ①. 管理选项 ②. 匹配条件 ③. 控制类型 四. 案例说明 1. 查看规则表 2. 增加新…...
每日一题 1410. HTML 实体解析器(中等,模拟)
模拟,没什么好说的 class Solution:def entityParser(self, text: str) -> str:entityMap {": ",': "",>: >,<: <,⁄: /,&: &,}i 0n len(text)res []while i < n:isEntity Falseif …...
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…...
对抗产品团队中的认知偏误:给产品经理的专家建议
今天的产品经理面临着独特的挑战。他们不仅需要设计和构建创新功能,还必须了解这些功能将如何为客户带来价值并推进关键业务目标。如果不加以控制,认知偏差可能会导致您构建的内容与客户想要的内容或业务需求之间不一致。本文将详细阐述产品经理可以避免…...
element-ui表格无法横向拖动问题
是不是用到了fixed // 因为我只有在小屏显示不下的时候才会出现这个问题所以我在这里做了适配(建议把样式放在全局) media screen and (max-width: 1800px) {// 由于使用了fixed导致横向条无法拖动出现bug.Table-page .el-table__fixed {height: auto !important;bottom: 2px …...
每天学习一点点之 MySQL TINYINT
我已经不是第一次遇到关于 TINYINT 的问题了。在 MySQL 中,当我们将某个字段设置为 TINYINT,随着业务的扩展,我们可能会发现 TINYINT 的范围无法满足需求。这时需要修改字段属性。但如果表的数据量很大,或者由于分表导致涉及的表数…...
【数据集】未来不同情景下预测数据:如人口、土地利用等
未来不同情景下预测数据:如人口、土地利用等 1 人口数据1.1 Global One-Eighth Degree Population Base Year and Projection Grids Based on the SSPs, v1.01 (2000 – 2100)数据介绍数据下载1.2 Global dataset of gridded population and GDP scenarios数据介绍数据下载2…...
TDA4VM EVM开发板调试笔记
文章目录 1. 前言2. 官网资料导读3. 安装 Linux SDK4. 制作SD 启动卡5. 验证启动1. 前言 TDA4作为一般经典的车规级SOC芯片,基于它的低阶智驾方案目前成为各家智驾方案公司的量产首选,这也使得基于TDA4的开发需求陡增,开发和使用TDA4既要熟悉Linux驱应用开发,还要熟悉传统…...
项目里边更换了同名的图片地址 / 图片没有及时更新 / 什么原因
一、问题分析 1.1、分析一 浏览器缓存 项目里边更换了同名的图片地址,图片没有及时更新 可能是浏览器缓存的原因,浏览器会将之前访问过的文件缓存下来,下次访问同名的文件时会先从缓存中读取。 如果相同的图片地址没有发生变化,…...
RandomAccessFile学习笔记
文章目录 RandomAccessFile学习笔记前言1、RandomAccessFile基本介绍1.1 RandomAccessFile相关基本概念1.2 RandomAccessFile家族体系 2、RandomAccessFile基本使用2.1 RandomAccessFile常用API介绍2.2 RandomAccessFile常用API演示2.3 RandomAccessFile实现断点续传 RandomAcc…...
主流数据库类型总结
前言:随着互联网的高速发展,为了满足不同的应用场景,数据库的种类越来越多容易混淆,所以有必要在此总结一下。数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值(Key-…...
程序员养生之道
程序员养生之道——如何保持健康的生活方式 摘要: 随着互联网行业的快速发展,越来越多的人选择从事程序员这个职业。然而,长时间的工作和高强度的压力容易导致程序员出现亚健康状况,如头发稀疏、视力下降、肥胖等问题。因此&#…...
CNN对 MNIST 数据库中的图像进行分类
加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺寸为 28x28 - 灰度图 from keras.datasets import mnist# 使用 Keras 导入MNIST 数据库 (X_train, y_train), (X_test, y_test) mnist.load_data()print(&…...
HarmonyOS开发工具简介
工具简介 更新时间: 2023-10-13 11:06 分享 添加收藏 说明 该文档匹配DevEco Studio 3.1.1 Release版本。 概述 HUAWEI DevEco Studio(获取工具请单击链接下载,以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,…...
大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异
最近有客户在使用 Elasticsearch 搜索服务时发现集群有掉节点,并且有 master 收集节点信息超时的日志,节点的负载也很高,不只是 data 节点,master 和协调节点的 cpu 使用率都很高,看现象集群似乎遇到了性能瓶颈。 查看…...
东明石化集团领导团队参访震坤行工业超市
东明石化集团领导团队参访震坤行工业超市 10月16日,山东东明石化集团(以下简称东明石化)总裁李治先生一行带队来访参观交流震坤行,与震坤行工业超市董事长兼CEO陈龙、销售负责团队开展座谈。期间,双方就企业数字化转型…...
Java常见的面试题(很基础那种)
这里介绍一下,一些比较基础的Java面试题,比较适合应届生、实习生这些朋友。因为对于刚出来工作的Java工程师,很多企业都偏向招一些基础比较好的苗子回来培养。所以啊,在校的朋友们,一定要在读书期间,多做项目,如果没有实际的项目,可以在github找一些案例来做参考,先模…...
MySQL处理并发访问和高负载的关键技术和策略
我深知在数据库管理中处理并发访问和高负载的重要性。在这篇文章中,我将探讨MySQL处理并发访问和高负载的关键技术和策略,以帮助读者更好地优化数据库性能。 图片来源:MySQL处理并发访问和高负载的关键技术和策略 MySQL数据库在处理并发访问…...
软件测试jmeter基本使用
1安装与配置 1.jdk下载 下载地址:https://www.oracle.com/java/technologies/downloads/#jdk18-windows(压缩包中会给) 2.jmeter下载 Apache JMeter - Download Apache JMeter(压缩包中有) 3.操作教学 打开软件后新…...
一文讲透Python函数中的局部变量和全局变量
变量的作用域就是变量能够发挥作用的区域,超出既定区域后就无法发挥作用。根据变量的作用域可以将变量分为局部变量和全局变量。 1.局部变量 局部变量是在函数内部定义并使用的变量,也就是说只有在函数内部,在函数运行时才会有效࿰…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
