Linux系统iptables

news2024/11/15 17:45:30

目录

一. 防火墙简介

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 1000
    link/ether ###  00:0c:29:2a:d6:05    ####             
    inet 192.168.91.101/24 brd 192.168.91.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 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 state
 
ipatables  -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攻击,因此可以限制连接数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1273045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostGIS学习教程八:空间关系

PostGIS学习教程八&#xff1a;空间关系 到目前为止&#xff0c;我们只使用了测量&#xff08;ST_Area、ST_Length&#xff09;、序列化&#xff08;ST_GeomFromText&#xff09;或者反序列化&#xff08;ST_AsGML&#xff09;几何图形&#xff08;geometry&#xff09;的空间…

代码随想录刷题题Day2

刷题的第二天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C / Python Day2 任务 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵 II 1 有序数组的平方&#xff08;重点&#xff1a;双指针…

口碑爆棚!10款项目时间轴软件带你实现高效管理!

当我们在组织、规划或管理一个项目时&#xff0c;将所有步骤清晰地展示在一个时间轴上&#xff0c;无疑可以帮助我们更好地理解整个项目的流程&#xff0c;确定关键任务&#xff0c;并在必要时进行调整&#xff0c;项目时间轴软件在此方面发挥了重要作用。 项目时间轴软件是什…

机器学习入门(第五天)——决策树(每次选一边)

Decision tree 知识树 Knowledge tree 一个小故事 A story 挑苹果&#xff1a; 根据这些特征&#xff0c;如颜色是否是红色、硬度是否是硬、香味是否是香&#xff0c;如果全部满足绝对是好苹果&#xff0c;或者红色硬但是无味也是好苹果&#xff0c;从上图可以看出来&#…

前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案

文章目录 bug背景解决思路1&#xff1a;解决思路2解决思路3&#xff08;最终解决方案&#xff09;后记 bug背景 项目中采用富文本编辑器后传参引起的bug&#xff0c;起因如下&#xff1a; 数据库中存入的数据会变成这种未经转码的URL编码 解决思路1&#xff1a; 使用JSON方…

MyBatis的强大特性--动态SQL

目录 前言 if trim where set foreach 前言 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架&#xff0c;你应该能理解根据不同条件拼接 SQL 语句有多痛苦&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表…

【linux防火墙】设置开启路由转发,SNAT和DNAT转换原理及应用实操,添加自定义链归类iptables规则

目录 一、关于iptables规则的保存 1.1持久保存规则 1.2加载规则 1.3开机自动加载规则 1.4使用iptables-service软件来进行规则的保存和加载&#xff08;不建议使用&#xff09; 二、SNAT和DNAT的原理和应用 SNAT的原理与应用&#xff1a; DNAT的原理和应用&#xff1a; …

MySQL之 InnoDB逻辑存储结构

InnoDB逻辑存储结构 InnoDB将所有数据都存放在表空间中&#xff0c;表空间又由段&#xff08;segment&#xff09;、区&#xff08;extent&#xff09;、页&#xff08;page&#xff09;组成。InnoDB存储引擎的逻辑存储结构大致如下图。下面我们就一个个来看看。 页&#xff08…

【Qt绘图】之绘制坦克

使用绘图事件&#xff0c;绘制坦克。 效果 效果很逼真&#xff0c;想象力&#xff0c;有没有。 示例 代码像诗一样优雅&#xff0c;有没有。 包含头文件 #include <QApplication> #include <QWidget> #include <QPainter>绘制坦克类 class TankWidge…

机器人RL数据集探索

机器人RL数据集探索 相关资料汇总 相关资料汇总

hutool的bug之 DateUtil.endOfDay(DateUtil.date())

hutool 工具类DateUtil 使用时谨慎 DateUtil.endOfDay 得到的时间保存到数据时会增加一秒 首先比较下时间的long值&#xff1a; 这样就很明显的看出来&#xff0c;hutool工具类的date是毫秒位多了.999,保存到mysql 的时候&#xff0c;MySQL数据库对于毫秒大于500的数据进行…

SPI学习

SPI介绍 SPI&#xff1a;串行外设设备接口&#xff08;Serial Peripheral Interface&#xff09;&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步通信总线。 全双工&#xff1a;同一时刻&#xff0c;能同时接收数据和发送数据。 半双工&#xff1a;同一时刻&am…

树与二叉树堆:经典OJ题集

目录 查找值为x的结点&#xff1a; 思路分析&#xff1a; 单值二叉树&#xff1a; 示例&#xff1a; 思路分析&#xff1a; 相同的树&#xff1a; 示例&#xff1a; 思路分析&#xff1a; 二叉树的前序遍历&#xff1a;——使用前序遍历把结点元素放入数组中 题…

二分算法(整数二分、浮点数二分)

文章目录 二分一、整数二分&#xff08;一&#xff09;整数二分思路&#xff08;二&#xff09;整数二分算法模板1.左查找&#xff08;寻找左侧边界&#xff09;2.右查找&#xff08;寻找右侧边界&#xff09;3.总模板 &#xff08;三&#xff09;题目&#xff1a;数的范围 二、…

算法通关村第五关—Hash基础知识(青铜)

Hash基础 一、Hash的概念和基本特征 哈希(Hash)也称为散列&#xff0c;就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变换成固定长度的输出&#xff0c;这个输出值就是散列值。很多人可能想不明白&#xff0c;这里的映射到底是啥意思&#xff0c;为啥访问的时间…

【brpc学习实践】ParallelChannel的使用与并行请求

概览 ParallelChannel (有时被称为“pchan”)同时访问其包含的sub channel,并合并它们的结果。用户可通过CallMapper修改请求,通过ResponseMerger合并结果。ParallelChannel看起来就像是一个Channel: 支持同步和异步访问。 发起异步操作后可以立刻删除。 可以取消。 支持超…

Vue生命周期:组件的生命之旅

&#x1f343;引言 在Vue.js中&#xff0c;每个组件都有其独特的生命周期。这个生命周期指的是组件从创建到销毁的一系列过程。了解并正确使用Vue的生命周期钩子&#xff0c;对于优化组件性能、管理组件状态以及实现特定功能至关重要。本文将详细介绍Vue的生命周期及其各个阶段…

mysql mybatis分页查询 大数据量 非常慢

查阅了很多博客和资料&#xff0c;这篇文章以思路为准&#xff0c;详细代码不细说&#xff0c;都是非常简单的方法&#xff0c;一看就明白。具体实现稍微百度一下就能出来。仅供参考。 如题&#xff1a;单表数据已经达到4千万条数据&#xff0c;通过mybatis的分页查询效率非常低…

如何提高销售技巧,增加客户的成交率?

如何提高销售技巧&#xff0c;增加客户的成交率&#xff1f; 在如今的市场环境中&#xff0c;销售技巧的高低往往决定了你是否能够成功地打动客户的心。想要提高销售业绩&#xff0c;除了产品质量和服务的保障&#xff0c;更需要你精进销售技巧&#xff0c;从而让客户愿意为你…

一种快速设计射频功放IC流程分享

No.1设计目标 在功率放大器PA中&#xff0c;输出级以及输出匹配决定了该功放的线性度、效率等关键性能指标&#xff0c;通常被优先考虑。在这个项目中输出级功放关键性能指标如下&#xff1a; 带宽&#xff1a;12-13 GHz OP1dB>13dBm 输出级 Power gain>5dB DE_P1dB&…