Linux - iptables防火墙

news2025/1/12 21:44:56

目录

一、iptables概述

二、规则表与规则链结构(四表五链)

1.简述

2.四表(规则表)

3.五链(规则链)

三、数据链过滤的匹配流程

四、iptables命令行配置方法

1.命令格式

2.基本匹配条件

3.隐含匹配

3.1.端口匹配

3.2 TCP标志位匹配

3.2 ICMP类型匹配

3.3 显示匹配

3.3.1 多端口匹配:

3.3.2 IP范围匹配:

3.3.3 mac地址匹配

3.3.4 状态匹配

五、SNAT与DNAT

1.SNAT

2.DNAT


一、iptables概述

iptables防火墙是Linux系统防火墙的一种,实际上由两个组件netfilter和iptables组成。

netfilters与iptables的关系:

netfilter:属于“内核态”的防火墙功能体系。是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iptables:属于“用户态”的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables文件下。

netfilter/iptables后期简称为iptables。iptables是基于内核的防护墙,其中内置了raw、mangle、nat、filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

二、规则表与规则链结构(四表五链)

1.简述

规则表(四表)的作用:容纳各种规则链。

规则链(五链)的作用:容纳各种防火墙规则。

总结:表中有链,链中有规则。

2.四表(规则表)

raw表:确定是否对该数据包进行状态跟踪。包含两个规则链 - OUTPUT、PREROUTING。

mangle表:修改数据包内容,用于流量整形,给数据包设置标记。包含五个规则链 - INPUT、OUTPUT、FORWARD、PREROUING、POSTROUTING。

nat表:负责网络地址转换,用来的修改数据包中的源、目标IP地址或端口。包含三个规则链 - OUTPUT、PREROUTING、POSTROUTING。

filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。

数据包到达防火墙时,数据表之间的优先顺序:
raw -> mangle -> nat -> filter

3.五链(规则链)

INPUT:处理入站数据包,匹配目标IP为本机的数据包。

OUTPUT:处理出战数据包,匹配从本机发出的数据包。

FORWARD:处理转发数据包,匹配流经本机的数据包。

PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNET。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。

POSTROUTIING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

三、数据链过滤的匹配流程

入站数据:PREROUTING -> INPUT -> 本机的应用程序

出站数据:本机的应用程序 -> OUTPUT -> POSTROUTING

转发数据:PREROUTING -> FORWARD -> POSTROUTING

四、iptables命令行配置方法

1.命令格式

iptables -t "表名" "管理选项" "链名" "匹配条件" -j "控制类型"

  • 不指定表名时,默认指filter表
  • 不指定链名时,默认值表内所有链
常用管理选项
常用选项解释
-A--apend 在指定表的末尾追加新规则
-I--insert 在指定链的开头插入一条新规则,不指定序号时默认在开头插入新规则
-R--replace 修改、替换指定链中某一条的规则,可指定序号或具体内容
-P--policy 设置指定链的默认策略
-D--delete 删除指定链中的某一条规则
-F--flush 清空指定链中的所有规则,若为指定链名,则清空表中所有链
-L--list 列出指定链中的所有规则,若为指定链名,则列出表中所有链
-n--numeric 使用数字形式输出结果,如显示IP地址而不是主机名
-v显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers查看规则时,显示序号
常用的控制类型
常用控制类型解释
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给出任何回应信息
REJECT拒绝数据包通过,会给数据发送端一个响应信息
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
REDIRECT重定向改变目的端口,将接受的包转发至本机的不同端口
MASQUERADE伪装成一个非固定公网IP地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

2.基本匹配条件

基本匹配条件解释
-p指定协议
-s指定源地址
-d指定目的地址
-i指定入站网卡
-o指定出站网卡

3.隐含匹配

需以特定的协议匹配作为前提。

3.1.端口匹配

匹配条件解释
--sport源端口
--dport目的端口

例:

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

ps:--sport 和 --dport 必须配合-p "协议类型"使用

3.2 TCP标志位匹配

标志位解释
SYN同步位
ACK确认位
FIN结束位
RST重置位
URG紧急位
PSH推送位

例:

iptables -I INPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT

拒绝来自22端口的SYN之外的tcp包(只接收SYN包)

3.2 ICMP类型匹配

类型代码解释
Echo-Reques8请求
Echo-Reply0回显
Destination-Unreachable3目标不可达

例:

iptables -A INPUT -p icmp --icmp-type 8 -j -DROP

#禁止其他主机ping本机

3.3 显示匹配

要求以“-m 扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。

3.3.1 多端口匹配:

-m multiport --sport 源端口列表

-m multiport --dport 目的端口列表

例:

iptables -A INPUT -p tcp -m multiport --dport 80,22,21 -j ACCEPT

3.3.2 IP范围匹配:

-m iprange --src-range 源ip范围

-m iprange --dst-range 目的ip范围

例:

iptables -A  FORWARD -p udp -m iprange --src-range 192.168.80.100-19.2169.80.200

3.3.3 mac地址匹配

-m mace --mace-source "mac地址"

3.3.4 状态匹配

-m state --state "连接状态"

常见的状态连接解释
NEW与任何连接无关的,还没开始连接
ESTABLISHED响应请求或者已建立连接的,连接态
RELATED与已有连接有相关性的,衍生态,一般与ESTABLISHED 配合使用
INVALID无效的封包,例如数据破损的封包状态

例:

iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

五、SNAT与DNAT

均需网关开启IP路由转发:

临时打开 echo 1 > /proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip_forward=1

永久打开:

vim /etc/sysctl.conf

....
net.ipv4.ip_forward=1    #将此行写入配置文件


sysctl -p    #载入配置

1.SNAT

SNAT用于在网络中修改数据包的源地址。

SNAT转换前提条件:

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  • Linux网关开启IP路由转发

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1-12.0.0.10

2.DNAT

DNAT用于在网络中修改数据包的目的地址,通常是为了保护内网服务器的安全。

DNAT转换前提条件:

  • 局域网的服务器能够访问Internet
  • 网关的外网地址有正确的DNS解析记录
  • Linux网关开启IP路由转发

iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11

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

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

相关文章

Python什么时候打折?

Python收费? 今天有一个刚学习编程的网友,他找到了我,问了我这样一个问题,“我看你的文章也有一段时间了,对上面提到的python的强大功能非常感兴趣。现在想自己安装一个亲自体验一下。我发现,python的售价…

开发一款通过蓝牙连接控制水电表的微信小程序

增强软硬件交互 为了更好的解决师生生活中的实际问题,开发蓝牙小程序加强了和校区硬件的交互。 比如通过蓝牙连接控制水电表,减少实体卡片的使用。添加人脸活体检测功能,提高本人认证效率,减少师生等待时间。 蓝牙水电控展示 蓝…

go-map系统学习

map底层结构 Goland的map的底层结构使用hash实现,一个hash表里有多个hash表节点,即bucket,每个bucket保存了map中的一个或者一组键值对。 map结构定义: runtime/map.go:hmap type hmap struct {// Note: the format of the hma…

Linux系统进程的优先级

一、进程优先级的概念 进程优先级就是进程被CPU执行的先后顺序,优先级值越小,优先级别越高。 使用ps -al命令查看当前系统所有进程的优先级: PRI是进程的基准优先级,NI(nice值)是进程优先级修正数据&…

【C++】理解C++中的复制、复制构造函数

十、理解C中的复制、复制构造函数 拷贝就是要复制数据,也就是复制内存。 当我们把一个对象或一段数据从一个地方拷贝到另一个地方,那这个对象或数据其实是有两个副本,而且这个过程还是需要时间和开销的。所以如果你只是想读取数据&#xff0…

SQL使用IN进行分组统计时如何将不存在的字段显示为0

这两天被扔过来一个脏活儿:做一个试点运行系统的运营指标统计。 活儿之所以称为“脏”,是因为要统计8家单位共12个项目的指标。而每个项目有3个用户类指标,以及分17个功能模块,每个功能模块又分5个维度的指标。也就是单个项目是1…

携手Vatee万腾平台,共赴智能时代新征程

在科技日新月异的今天,我们正站在一个前所未有的历史交汇点上——智能时代的大门已轰然洞开,万物互联、数据驱动、智能决策正逐步成为社会发展的新常态。在这场深刻的变革中,Vatee万腾平台以其前瞻性的视野、创新的技术实力以及深厚的行业积淀…

QtCreator学习(二).在stm32mp1中使用

0.配置编译环境 复制【正点原子】STM32MP157开发板(A盘)-基础资料\05、开发工具\01、交叉编译器st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh到虚拟机chmod添加可执行文件,./st*运行&#xff…

信号与线性系统综合实验

文章目录 一、实验目的二、实验内容及其结果分析(一)基础部分(二)拓展部分(三)应用设计部分 三、心得体会 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;   2、掌握运用M…

【数据库】MySQL-基础篇-多表查询

专栏文章索引:数据库 有问题可私聊:QQ:3375119339 目录 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.数据准备 2.概述 3.分类 三、内连接 1.隐式内连接 2.显式内连接 3.案例 四、外连接 1.左外连接 2.右外连…

力扣最热一百题——轮转数组

目录 题目链接:189. 轮转数组 - 力扣(LeetCode) 题目描述 示例 提示: 知识补充ArrayDeque () ArrayDeque 的特点: 常用方法: 详细示例: 运行结果: …

无刷直流电动机的匝间绝缘测试优化

近年来,随着消费者对高效、快速干发需求的增加,高速电吹风逐渐成为市场的宠儿。高速电吹风的关键技术之一便是无刷直流电动机,其转速可以高达100,000转/分钟以上,电压为DC310V。相比传统电吹风,高速电吹风在效率和用户…

java基于PDF底层内容流的解析对文本内容进行编辑

本文实现了基于坐标位置对PDF内容的底层修改而非覆盖,因此不会出现在某些高级PDF编辑器中可以移除插入内容或者文件随着编辑次数增多而大幅增大(原因是原内容还在文件中)的问题,而且使用的pdfbox是一个开源的、免费的PDF处理库&am…

如何使用 Vidu Studio 根据照片和提示词生成视频

在这个数字化时代,视频内容已经成为我们日常生活中不可或缺的一部分。无论是记录美好瞬间,还是制作创意短片,视频都能生动地呈现我们的故事。今天,我将向大家介绍如何使用 Vidu Studio,根据已有照片和提示词&#xff0…

保姆级CVE-2018-17066漏洞复现 DLink命令注入漏洞(更新完结)

参考文章 CVE-2018-17066复现-CSDN博客 IOT-CVE-2018-17066(D-Link命令注入漏洞)_firmae路由仿真-CSDN博客 https://www.cnblogs.com/from-zero/p/13300396.html IOT-CVE-2018-17066(D-Link命令注入漏洞)_iot设备漏洞-CSDN博客 cve-2018-17066复现 | 1uckycs blog 漏洞环境搭建…

web渗透—RCE

一:代码执行 相关函数 1、eval()函数 assert()函数 (1)原理:将用户提交或者传递的字符串当作php代码执行 (2)passby:单引号绕过:闭合注释;开启GPC的话就无法绕过(GPC就是将单引号转换为"反斜杠单引号"&a…

【Redis】缓存和数据库一致性问题及解决方案

往期文章: 【Redis】Redis 底层的数据结构(结合源码) 【Redis】为什么选择 Redis 做缓存? 【Redis】缓存击穿、缓存穿透、缓存雪崩原理以及多种解决方案 一、前言 在前面的文章中,我们探讨了为什么要使用 Redis…

独居打工人,把超市当顶配食堂

文 | 螳螂观察 作者 | 如意 独自在大城市扎根的年轻人有着自己的小确幸,比如“周末可以睡到下午才起床,不会有任何人打扰”,“瘫在沙发上吃着零食享受一部自己想看很久的电影,也不会被唠叨。” 但生活并不总是尽如人意&#xf…

基于SpringBoot+Vue的学生宿舍水电信息管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

PDF在线编辑哪家强?2024年4款热门工具大比拼

如今是数字化的时代,PDF 文件对我们工作和学习来说特别重要。不过呢,遇到那些麻烦的 PDF 编辑和转换的事情时,你是不是常常觉得没招儿,甚至还得加班到半夜?别犯愁啦,今天我给你讲讲四款非常好用的 PDF 在线…