Linux防火墙iptables

news2024/11/26 2:49:53

文章目录

  • 一.iptables概述
  • 二.netfilter/iptables 关系
  • 三.四表五链
    • 3.1作用
    • 3.2四表
    • 3.3五链
    • 3.4规则表的优先顺序
    • 3.5规则链的匹配顺序
    • 3.6iptables 命令行配置方法
    • 3.8常用管理选项
    • 3.9iptables安装
  • 四、操作
    • 4.1 增加规则
    • 4.2删除规则
    • 4.3修改规则
    • 4.4查询规则
  • 五、规则匹配
    • 5.1通用匹配
    • 5.2隐含匹配
    • 5.3显示匹配

一.iptables概述

1、Linux 系统的防火墙 :IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables组成。
2、主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。

二.netfilter/iptables 关系

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

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

三.四表五链

3.1作用

规则表的作用:容纳各种规则链
规则链的作用:容纳各种防火墙规则
总结:表里有链,链里有规则

3.2四表

说明
raw确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING(数据包状态追踪)
mangle修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链;INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING(修改数据包内容)
nat负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING (地址转换)
filter负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT(过滤数据包)

3.3五链

说明
INPUT处理入站数据包,匹配目标IP为本机的数据包(处理入站数据)
OUTPUT处理出站数据包,一般不在此链上做配置(处理出战数据)
FORWARD处理转发数据包,匹配流经本机的数据包(处理转发数据)
PREROUTING在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。(修改目的IP)
POSTROUTING进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网(修改源IP)

3.4规则表的优先顺序

raw > mangle > nat > filte

3.5规则链的匹配顺序

入站数据 PREROUTING-->INPUT-->本机应用程序   过滤数据包filter(INPuT)
出站数据 本机应用程序-->OUTPUT-->POSTROUTING   过滤数据包filter(INPuT)
转发数据 PREROUTING-->FORWARD-->POSTROUTING  过滤数据包filter(INPuT) 
外网到内网修改目的IP nat (PREROUTING)
内网到外网修改源IP nat (POSTROUTING)

3.6iptables 命令行配置方法

iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型和链名使用大写字母,其余均为小写

7.常用控制类型

控制类型说明
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给出任何回应信息
REJECT拒绝数据包通过,会给数据发送端一个响应信息
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装成一个非固定公网IP地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包

3.8常用管理选项

选项说明
-A在指定链的末尾追加(–append)一条新的规则
-I(大写i)在指定链的开头插入(–insert)一条新的规则,未指定序号时默认作为第一条规则
-R修改、替换(–replace)指定链中的某一条规则,可指定规则序号或具体内容
-P设置指定链的默认策略(–policy)
-D删除(–delete)指定链中的某一条规则,可指定规则序号或具体内容
-F清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L列出(–list)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n使用数字形式(–numeric)显示输出结果,如显示 IP 地址而不是主机名
-v显示详细信息,包括每条规则的匹配包数量和匹配字节数
–line-numbers查看规则时,显示规则的序号

3.9iptables安装

CentOS 7默认使用firewalld防火墙,没有安装 iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装 iptables
systemctl stop firewalld.service
systemctl disable firewalld.service

yum -y install iptables iptables-services
systemctl start iptables.service

四、操作

4.1 增加规则

在这里插入图片描述

在这里插入图片描述

4.2删除规则

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.3修改规则

在这里插入图片描述

4.4查询规则

iptables -t 表名 -L -n -v --line-numbers

五、规则匹配

5.1通用匹配

可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址	#可以是IP、网段、域名、空(任何地址)
接口匹配:-i 入站网卡、-o 出站网卡

在这里插入图片描述

5.2隐含匹配

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。
1、 端口匹配:–sport 源端口、–dport 目的端口
2、 可以是个别端口、端口范围

–sport 1000 匹配源端口是1000的数据包
–sport 1000:3000 匹配源端口是1000-3000的数据包
–sport :3000 匹配源端口是3000及以下的数据包
–sport 1000: 匹配源端口是1000及以上的数据包
注意:–sport 和 --dport 必须配合 -p <协议类型> 使用

在这里插入图片描述

5.3显示匹配

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

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

在这里插入图片描述

IP范围匹配

-m iprange --src-range IP范围
\# 禁止转发源地址为100.0-100.100的udo数组包
iptables -A FORWARD -p udp -m iprange --src-range 192.168.100.0-192.168.100.100 -j DROP 

MAC地址匹配

-m mac --mac-source MAC地址
#禁止XXXXMAC地址的数据包通过本太主机转发
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

状态匹配

NEW :主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED :主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED :主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED 配合使用
INVALID :无效的封包,例如数据破损的封包状态

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

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

相关文章

IDEA快捷键总结

IDEA快捷键总结 KeyMap使用的是Eclipse 常用快捷键 Ctrl H 全局搜索Shift Shift 搜索源码Ctrl O 查看当前类或接口包含的方法&#xff0c;即自身结构。Ctrl Alt B 选中接口名&#xff0c;查看当前接口的实现类Ctrl Alt V 快速补全Ctrl Alt ↓ 复制当前行到下一行C…

广告让你不自觉地掏钱?消费者行为背后的心理学

一般来说&#xff0c;应该从广告的各个方面提升&#xff0c;比如与目标用户的需求匹配&#xff0c;产品定位&#xff0c;核心卖点&#xff0c;突出重点和价值&#xff0c;不断重复&#xff0c;等等的这些都说的很好&#xff0c;给用户提供了做这件事的足够的动机和理由。 但我…

【组合优化】基于CHHO的QoS感知的web服务组合优化【Matlab代码22#】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第7节&#xff1a;资源获取】1. Web服务2. QoS感知的Web服务组合3. 改进后的CHHO算法3.1 原始HHO算法3.2 CHHO算法 4. 优化目标5. 部分代码展示6. 仿真结果展示7. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章…

rpc与grpc学习记录

文章目录 1、RPC2、gRPC多线程pythongrpc代码1、安装python需要的库&#xff1a;2、grpc编程步骤3、Demo13.1、编写 .proto文件&#xff0c;定义接口和数据类型3.2、编译 .proto文件生成存根文件3.3、编写服务器端代码&#xff1a;3.4、编写客户端代码&#xff1a;3.5、测试 1、…

docker操作2

docker操作2 文章目录 docker操作2启动新容器配置新的容器后要做的操作进入Docker容器可以显示图片的容器镜像pull 网络镜像 日志停止与删除停止删除删除image报错 在容器和宿主机之间拷贝数据创建命令别名查看docker运行容器的ipdocker image保存与导入保存image导入image 打标…

CMake的应用与实践

CMake 简介 CMake是什么&#xff1f; 全称 Cross Platform Make&#xff0c;起初为了跨平台需求&#xff0c;而后不断完善并广泛使用一款优秀的工程构建工具 特点和优势 开放源代码&#xff0c;具有BSD许可跨平台&#xff0c;支持Linux&#xff0c;Mac和Windows等不同操作系…

【C生万物】 字符串内存函数篇 (上)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《C生万物 | 先来学C》&#x1f448; 前言&#xff1a; 过了指针这个坎后&#xff0c;下一步就是C语言中关于字符的处理&#xff0c;这一期来讲…

chatgpt赋能Python-python5个一行

Python: 5行代码改变世界 Python是一种高级编程语言&#xff0c;以其简单易学的特性而闻名。Python的发明者Guido van Rossum在1980年代末和1990年代初创造了Python&#xff0c;旨在创建一种语言&#xff0c;既易于理解又易于使用。如今&#xff0c;Python已经成为了最受欢迎的…

【离散数学】陪集和拉格朗日定理编程题

1&#xff1a;编写一个程序能够计算有限群G的子群H的左陪集 输入一个n阶有限群G的二元运算表及相关的子群&#xff0c;输出其左陪集。 &#xff08;注意&#xff1a;按照表头元素顺序计算每个陪集&#xff0c;下图为G的二元运算表示例&#xff09; 样例1&#xff1a; 输入&…

干货 | 利用SPSS进行高级统计分析第三期

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 在本期中&#xff0c;我们继续为大家介绍如何利用SPSS进行&#xff1a;单因素方差分析、多因素方差分析、重复测量方差分析等。 1. 单因素方差分析【组间实验单一因变量&#xff1b;进行差…

iptables防火墙中的SNAT和DNAT

SNAT的原理和应用 SNAT 应用环境∶局域网主机共享单个公网IP地址接入Internet &#xff08;私有IP不能在Internet中正常路由&#xff09; SNAT原理∶修改数据包的源地址。 SNAT转换前提条件∶ 局域网各主机已正确设置IP地址、子网掩码、默认网关地址Linux网关开启IP路由转发…

游资92科比到底牛在哪里?

昨天一天时间把92科比之前的一个帖子全部看完&#xff0c;从科比对情绪周期的把握来看那简直总结的已经是标准答案了&#xff0c;那么为何92科比公布了答案&#xff0c;还是有很多人“痛苦”的做不到&#xff1f; 这个问题我觉得跟退学炒股是一样的&#xff0c;退学先解决了小…

springcloud-alibaba (03)sentinel下载安装

Sentinel 一&#xff0c;下载安装&#x1f4a0;二&#xff0c;编写脚本&#x1f9ff;三&#xff0c;启动sentinel&#x1f48e;四&#xff0c;Win-访问控制台✨ 在Linux中下载安装Spring Cloud Alibaba Sentinel&#xff0c;可以按照以下步骤进行操作&#xff1a; 一&#xff0…

Python常见面试题. Python中的解包操作及其应用场景

这是个简单的知识点&#xff0c;但有的同学并不理解 unpacking解包 解&#xff0c;对应的是*或者**&#xff0c;也有自动解包之说 包对应的可迭代对象 Python助学大礼包点击跳转获取 目录 一、自动解包二、数据过多的解包*三、星号在函数中的使用四、两个星号的解包五、场…

Lesson13---人工神经网络(2)

13 人工神经网络&#xff08;2&#xff09; 多层神经网络-非线性分类问题多层神经网络的损失函数不是凸函数&#xff0c;很难计算解析解通常采用梯度下降法&#xff0c;得到数据解&#xff0c;梯度下降法可以用来求解函数极值问题 批量梯度下降随机梯度下降小批量梯度下降 1…

[Nacos] Nacos Client获取所有服务和定时更新Client端的注册表 (三)

文章目录 1.Nacos Client获取所有服务1.1 Client如何获取所有服务1.2 Client获取服务方法getServices()详解 2.Nacos定时更新Client端的注册表2.1 Nacos和Eureka定时更新Client端的注册表的区别2.2 Client定时更新本地服务过程2.3 updateServiceNow方法解析2.4 定时更新本地注册…

DrissionPage学习(一)

一、下载适合mac环境的chromedriver.exe 1.查找chrome浏览的版本 方法二&#xff1a;查看chrome版本信息 2.确定版本后在下载chrome对应的chromedriver.exe 下载地址&#xff1a;http://chromedriver.storage.googleapis.com/index.html 3.在文件夹中找到下载的文件chro…

MyBatis-Plus or() equls() 连用的格式为 a AND (b OR c)

正确示范&#xff1a; userInterfaceQueryWrapper.and(qw -> qw .eq("status", UserInterfaceInfoStatusEnum.OFFLINE) .or() .eq("status", UserInterfaceInfoStatusEnum.TRYOUT));错误示范&#xff1a; userInterfaceQueryWrapper.eq("status&…

分布式项目10.jsonp 使用js中script的属性src进行服务器之间的访问

一般使用ajax来访问不同服务器的数据&#xff0c;可行吗&#xff1f; 做个实验&#xff1a; 第一步&#xff1a;在本服务器中使用ajax技术访问本服务器数据 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>测试JSON跨域…

NFT游戏Mythical Beings将参加NFT Polygon 在线展会

Mythical Beings神秘生物是由Tarasca Art & Games 开发的基于区块链的卡牌收集游戏。游戏中每张卡牌所拥有的属性和背后的故事都是独一无二的&#xff0c;Mythical Beings不仅具有游戏属性&#xff0c;还兼具故事的传承。 作为一款跨链Polygon的NFT游戏&#xff0c;Mythic…