Linux网络——shell编程之iptables防火墙

news2024/11/24 15:00:03

Linux网络——shell编程之iptables防火墙

  • 一、概述
      • 1.iptables
      • 2.netfilter 和 iptables的关系
  • 二、iptables中的四表五链
      • 1.四表五链的关系
      • 2.四表
      • 3.五链
  • 三、匹配顺序
      • 1.数据包到达防火墙的匹配流程
      • 2.规则链之间的匹配顺序
      • 3.规则链内的匹配顺序
  • 四、iptables 防火墙的配置方法
      • 1.iptables 命令行配置方法
      • 2.常用的管理选项
      • 3.常用的匹配的条件
      • 4.常用的控制类型
  • 五、iptables命令的规则配置运用
      • 1.查看规则列表
      • 2.添加规则
      • 3.删除规则
      • 4.修改规则
      • 5.修改默认策略
  • 六.通用匹配
      • 1.协议匹配
      • 2.地址匹配
      • 3.接口匹配
  • 七、隐含匹配
      • 1.端口匹配
      • 2.TCP标志位匹配
      • 3.ICMP类型匹配
      • 4.回显匹配
  • 八、显示匹配
      • 1.多端口匹配
      • 2.IP范围匹配
      • 3.MAC匹配
      • 4.状态匹配

一、概述

防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。

Linux 系统的防火墙:IP信息包过滤系统,实际上由两个组件netfilteriptables 组成

1.iptables

主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。

2.netfilter 和 iptables的关系

netfilter:属于的“内核态”(Kernel Space, 又称为内核空间)的防火墙功能体系。
是一个内核模块,由多个规则表组成,其中包含过滤数据包的规则集。

iptables:属于“用户态”(User Space,又称为用户空间)的防火墙管理体系。
是一种用来管理Linux防火墙的命令程序,用来管理防火墙的规则集,通常位于/sbin/iptables目录下。

二、iptables中的四表五链

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

在这里插入图片描述

1.四表五链的关系

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

2.四表

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

3.五链

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

三、匹配顺序

1.数据包到达防火墙的匹配流程

规则表中的优先顺序:raw >mangle>nat>filter

2.规则链之间的匹配顺序

主机型防火墙
入站数据(来自外界的数据包,且目标地址是防火墙本机): PREROUTING --> INPUT -->本机的应用程序
出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序---->OUTPUT ----->POSTROUTING

网络型防火墙
转发数据(需要经过防火墙转发的数据包):PREROUTING -->FORWARD -->POSTROUTING

3.规则链内的匹配顺序

自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)

四、iptables 防火墙的配置方法

使用iptables 命令行
使用system-config-firewall

1.iptables 命令行配置方法

语法格式 :iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

2.常用的管理选项

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

3.常用的匹配的条件

匹配条件说明
-p指定要匹配的数据包的协议类型
-s指定要匹配的数据包的源IP地址
-d指定要匹配的数据包的目的IP地址
-i指定数据包进入本机的网络接口
-o指定数据包离开本机做使用的网络接口
–sport指定源端口号
–dport指定目的端口号

4.常用的控制类型

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

五、iptables命令的规则配置运用

1.查看规则列表

在这里插入图片描述

2.添加规则

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.删除规则

在这里插入图片描述

在这里插入图片描述

4.修改规则

在这里插入图片描述

5.修改默认策略

在这里插入图片描述

六.通用匹配

1.协议匹配

在这里插入图片描述

2.地址匹配

在这里插入图片描述

3.接口匹配

在这里插入图片描述

七、隐含匹配

1.端口匹配

在这里插入图片描述

2.TCP标志位匹配

在这里插入图片描述

3.ICMP类型匹配

ICMP类型可以是字符串、数字代码:

ICMP类型含义
Echo-Request (代码为8)表示请求
Echo- -Reply (代码为0)表示回显
Dest ination-Unreachable (代码为3)表示目标不可达

在这里插入图片描述

4.回显匹配

在这里插入图片描述

八、显示匹配

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

1.多端口匹配

-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
在这里插入图片描述

2.IP范围匹配

-m iprange --src-range 源IP范围
-m iprange --dst-range 目的IP范围

在这里插入图片描述

3.MAC匹配

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

-m mac -- -mac- source MAC地址

4.状态匹配

-m state --state连接状态

常见的连接状态:

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

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

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

相关文章

python tesseract-ocr + jTessBoxEditorFX 训练自定义字库

在使用tesseract-ocr进行字符识别时,我们使用了官方提供的字库,例如英文字库、中文字库,但这些字库并不一定能满足我们所有的需求。所以有些时候,我们就需要训练属于自己的自定义字库。废话少说,直接开干。 第一步&am…

联想首次展示全栈算力方案服务,品牌换新亮相

1、联想算力,第一次真正被所有人感知。 2、基于软硬服一体化的优势,联想打造了丰富多样的四维算力服务,即融合化、场景化、订阅化、绿色化,可以满足不同企业、不同行业的定制化需求。 5月20日,主题为“联想方案服务&am…

2023中兴软件类笔试

1.下列Python代码:将近似输出什么? import numpy as np print np.sqrt(6*np.sum(1/np.arange(1,1000000, dtypenp.float)**2))这段代码是用来计算圆周率的巴塞尔问题(Basel problem)的近似值,输出结果将近似为3.14159…

使用SMTP协议发送邮件

剧情介绍 今天心血来潮,学了一下Python3,里面有个章节是发送邮件,用示例里面的代码,运行后报错,然后记录一下问题是如何解决的,大家可以看一下,可以有效避坑。 SMTP协议介绍 SMTP&#xff08…

Mysql数据库备份 一天一次 保存最新五天 每天凌晨三点备份

Mysql数据库备份 一天一次 保存最新五天 每天凌晨一点三十备份 步骤一 先查看 sudo systemctl status crond 是否存在 不存在执行下面代码 sudo yum install cronie sudo systemctl start crond sudo systemctl enable crond sudo systemctl status crond 步骤二 Cd /home …

从零开始 Spring Boot 33:Null-safety

从零开始 Spring Boot 33:Null-safety 图源:简书 (jianshu.com) Null-safety(null安全)实际上是Java这个“古老”语言的历史包袱,很多新的语言(比如go或kotlin)在诞生起就在语言层面提供对null…

软件测试需要学习什么?好学吗?需要学多久?到底是报班好还是自学好?

目录 前言: 【文章的末尾给大家留下了大量的福利哦。】 一:软件测试好学吗?需要学习多久? 二:那么选择软件测试行业有什么优势呢? 三:再来说说大家最关心的——软件测试人员的薪资怎么样? …

Spring : XML配置 JavaBean

文章目录 前言一、xml 加载 Bean 对象总结XML加载Bean对象 前言 跟着大佬走!!!! https://github.com/DerekYRC/mini-spring 提示:以下是本篇文章正文内容,下面案例可供参考 一、xml 加载 Bean 对象 大家先…

【C语言】数组名作函数参数

数组名作函数参数 引例思考例2通用性指针形参和数组形参几点说明 引例 在主函数中输入10个整数,并存入一个一维数组中;然后在被调函数中,将0号元素的值改为原值的10倍;最后在主函数中输出结果。 思路: 若想在被调函数…

10:00进去,10:05就出来了,这问的也太变态了···

从外包出来,没想到死在另一家厂子了。 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到5月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推…

SSM框架-SpringMVC

1. SpringMVC 1.1 Spring与Web环境集成 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) &…

ActiveMq消息队列

ActiveMq是一种开源的java程序&#xff0c;支持Java消息服务(JMS) 1.1 版本 一、持久化机制 1、KahaDB&#xff1a;5.4及之后版本&#xff0c;默认使用日志文件 activemq.xml默认使用KahaDB持久化存储&#xff0c;默认配置安装路径data目录下 <persistenceAdapter> …

Django框架之模板其他补充

本篇文章是对django框架模板内容的一些补充。包含注释、html转义和csrf内容。 目录 注释 单行注释 多行注释 HTML转义 Escape Safe Autoescape CSRF 防止csrf方式 表单中使用 ajax请求添加 注释 单行注释 语法&#xff1a;{# 注释内容 #} 示例&#xff1a; {# 注…

09 FPGA—利用状态机实现可乐售卖机(附代码)

1. 理论 FPGA 是并行执行的&#xff0c;如果我们想要处理具有前后顺序的事件&#xff0c;就需要引入状态机。举个例子&#xff0c;将人看成 FPGA ,我们可以在散步的时候听歌和聊天这是并行执行的&#xff0c;但一天的行程安排却是以时间段前后执行的。 状态机简写为 FSM&#…

java前后端分离有详细内容吗?

微服务架构java前后端分离都有哪些具体内容&#xff1f;目前&#xff0c;有不少客户朋友经常询问我们类似的问题。其实&#xff0c;在新的经济发展形势下&#xff0c;提质增效的低代码开发平台微服务架构早已成为不少新老客户的选择&#xff0c;它们不仅能提高办公协作效率&…

成为更优秀的项目经理:快速提升影响力的六大原则与独门秘笈

在很多公司的组织架构中&#xff0c;项目经理并不是一个常规的职能岗位&#xff0c;项目组是为了某个项目目标临时组建的团队&#xff01; 这就造成了PM一个很尴尬的处境&#xff0c;权、责、利不匹配&#xff0c;也就是有责无权&#xff1a;PM既要对项目目标的实现负责&#…

K8S内容分发网络之集群,nginx,负载均衡,防火墙

目录 第一章.实验架构需求 第二章.实验环境准备 2.1.节点准备 2.2.环境准备 2.3.在master&#xff0c;node01&#xff0c;node02上操作安装docker 2.4.所有节点安装kubeadm&#xff0c;kubelet和kubectl 2.5.部署K8S集群 2.6.在master节点操作 2.7.所有节点部署网络插件…

小白windows安装python(图文详解)

以下是在 Windows 操作系统上安装 Python 的详细步骤&#xff1a; 打开浏览器&#xff0c;进入 Python 官网&#xff08;https://www.python.org/&#xff09;。 点击“Downloads”&#xff0c;然后选择适合您的操作系统的 Python 版本。例如&#xff0c;如果您的操作系统是…

“Shell“firewall防火墙

文章目录 一.Firewalld防火墙1.1firewalld概述1.2Firewalld和iptables的关系1.3Firewalld和iptables的区别 二.Firewalld网络区域2.1区域介绍&#xff1a;2.2firewalld 区域的概念:2.3Firewalld数据处理流程2.4Firewalld检查数据包的源地址的规则&#xff1a; 三.Firewalld防火…

05 Android开机启动之SystemServer

Android开机启动之SystemServer(SS) 一、梳理SystemServer启动流程 从上面整个Android开机启动思维导图(android 5.0的启动组成图)中可以看到: SystemServer是从Zygote中启动的。 开机->bootloader->kernel->init->zygote->SystemServer 二、SystemServe…