当前位置: 首页 > news >正文

Linux 防火墙配置(iptables和firewalld)

目录

防火墙基本概念

Iptables讲解

Iptables表

Iptables规则链

Iptables控制类型

Iptables命令配置

firewalld讲解

Firewalld区域概念

Firewalld两种配置方法

firewall-cmd命令行基础配置

firewall-config图形化配置


防火墙基本概念

防火墙就是根据系统管理员设定的规则来控制数据包的进出,主要是保护内网的安全

目前Linux系统的防火墙类型主要有两种:分别是iptables和firewalld

Iptables-静态防火墙

早期的Linux系统中默认使用的是iptables防火墙,配置文件在/etc/sysconfig/iptables

主要工作在网络层

使用链式规则,只可以过滤互联网的数据包,无法过滤从内网到内网的数据包

Iptables只可以通过命令行进行配置

Iptables默认是允许所有,需要通过拒绝去做限制

Iptables在修改了规则之后必须得全部刷新才可以生效,还会丢失连接(无法守护进程)

Firewalld-动态防火墙

取代了之前的iptables防火墙,配置文件在/usr/lib/firewalld和/etc/fiewalld中

主要工作在网络层

新增区域概念,不仅可以过滤互联网的数据包,也可以过滤内网的数据包

Firewalld不仅可以通过命令行进行配置,也可以通过图形化界面配置

Firewalld默认是拒绝所有,需要通过允许去放行

Firewalld可以动态修改单条规则,动态管理规则集(允许更新规则而不破环现有会话和连接,可以守护进程)

注意事项

iptables和firewaldl都只是linux防火墙的管理程序,真正的防火墙执行者是位于内核的netfilter,只不过firwalld和iptables的结果以及使用方法不一样

在配置防火墙时,不建议两种配置方法结合使用(建议只使用其中的一种)


Iptables讲解

Iptables配置防火墙依靠四个部分实现:表、规则链、规则(匹配条件)、控制类型组成

Iptables表

处理优先级由高到低,表与表之间都是独立的

raw

是否对某个数据包进行状态追踪(包含OUTPUT、PREAUTING两个规则链)

mangle

修改数据包内容;可以做流量整形、对数据包设置标记(包含所有规则链)

nat

负责地址转换功能;修改数据包中的源目IP地址或端口(包含IN、OU、PR、PO三个规则链)

filter

负责过滤数据包;对数据包时允许放行还是不允许放行(包含IN、OU、FO三个规则链)

Iptables规则链

什么是规则链

 很多个规则组成一个规则链

 数据包从上往下做匹配,匹配成功就结束匹配,并执行相应的控制类型(建议需要将精准的策略放在上面)

规则链类型

INPUT              处理入站的数据包(处理目标是本机的数据包)

OUTPUT            处理出站的数据包(处理源是本机的数据包,一般不在此链上做规则)

PREROUTING        在进行路由选择前处理数据包(一般用来做NAT Server)

POSTROUTING      在进行路由选择后处理数据包(一般用来做源NAT)

FORWARD          处理转发的数据包(处理经过本机的数据包)

Iptables控制类型

ACCEPT                允许数据包通过

DROP                   丢弃数据包(不给对方回应,一般工作时用这个)

REJCET                 拒绝数据包通过(会给对方回应,对方知道自己被拒绝)

SNAT                    修改数据包的源地址

DNAT                   修改数据包的目的地址

MASQUERADE      伪装程一个非固定的公网IP地址

LOG               在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

数据包到达防火墙根据下图进行匹配

iptables进行数据处理关心的是四表五链以及流量的进出

Iptables命令配置

配置iptables防火墙时需要将防火墙服务开启

systemctl start firewalld   开启防火墙

systemctl status firewalld  查看防火墙状态

Iptables命令查看防火墙

iptables -nL -t nat  查看nat表的规则链

  -n 使用数字形式显示输出结果(如:通过IP地址)

-L 查看当前防火墙有哪些策略

-t 指定查看iptables的哪个表(默认是filter表)

Iptables命令配置防火墙

iptables -P INPUT DROP    将INPUT规则链的默认流量更改为拒绝

-P 设置/修改默认策略

iptables -t filter -I INPUT -s 192.168.10.0/24 -j ACCEPT  在filter表下的INPUT规则链中配置规则

  -I num 插入规则(大写i,默认在链的开头加入规则,可以指定序号)

  -i  从这块网卡流入的数据    

-o 从这块网卡流出的数据

  -s  源地址(加!表示取反)

-d 目的地址  

-j  限制动作

iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 拒绝 tcp端口号为1000~1024的数据包

  -A 在链的末尾加入规则

-p 指定协议类型

--sport 源端口   

--dport 目的端口

iptables -D INPUT 1  删除INPUT规则链的第一条规则

  -D num 删除规则链

  -R 修改规则

iptables -F 清空已有的策略

iptables-save 来保存防火墙策略

注意事项

当创建的规则内容与已有规则一致时,不会覆盖原先的规则,会直接加入到现有规则链中(即此时此规则链下有两条一摸一样的规则,只是顺序不同)

以上关于防火墙的配置是runtime模式,即配置成功后立即生效,但是重启后会失效(需要将配置保存,重启后才不会失效)


firewalld讲解

frewalld是服务名称,firewall-cmd和firewall-config是配置工具名称

firewall-cmd  基于命令行配置

firewall-config基于图形化界面配置(这两个配置方式实时同步)

Firewalld区域概念

默认所有网卡都是public区域,可以根据需要将网卡设置为不同的区域

Trust      信任区域

 允许所有流量(所有的网络连接都可以接受)

Public     公共区域

 仅接受ssh、dhcpv6-client服务连接(默认区域)

External  外部区域

 仅接收ssh服务连接(默认通过此区域转发的IPv4流量将会进行地址伪装)

Home     家庭区域

 仅接受ssh、msdns、ipp-client、samba-client、dhcpv6-client服务网络连接

Internal  内部区域

 同home区域

Work      工作区域

 仅接受ssh、ipp-client、dhcpv6-client服务连接

Dmz       隔离区域(非军事区域)

 仅接收ssh服务连接

Block      限制区域

 拒绝所有传入流量(有回应)

Drop       丢弃区域

 丢弃所有传入流量(无回应)

数据包到达防火墙匹配规则

firewall进行数据处理只关心区域

  1. 根据数据包的源IP地址匹配,根据源地址绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)
  2. 根据传入的网络接口匹配,进入此接口绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)

绑定源地址的区域规则>网卡绑定的区域规则>默认区域的规则

Firewalld两种配置方法

临时配置(runtime 当前生效表)

立即生效,重启后失效

不中断现有连接

无法修改服务配置

永久配置(permanent 永久生效表)

不立即生效,重启后生效,或者立即同步后生效

会终端现有连接

可以修改服务配置

firewall-cmd命令行基础配置

如何实现永久配置

--permanent  表示此配置加入到永久生效(默认临时生效)

或者在配置结束后执行此命令 firewall-cmd --runtime-to-permanent将临时更改为永久

永久配置完成后需要立即同步 firewall-cmd --reload 立即同步永久配置

查看默认区域并进行更改

firewall-cmd --get-zones                  查询可用的区域

firewall-cmd --get-default-zone            查询默认区域的名称

firewall-cmd --get-active-zone             显示当前正在使用的区域与网卡名称

firewall-cmd --set-default-zone=trusted     设置默认区域为trusted区域

将网卡/子网与区域绑定(允许/拒绝此子网通过)

firewall-cmd --zone=drop --add-source=192.168.20.0/24 将此子网与drop区域绑定(拒绝从此子网发来的流量)

firewall-cmd --zone=trusted--add-interface=ens160   将此网卡与trusted区域绑定(允许从此网卡发来的流量)

   --remove-source  删除子网与区域的绑定

   --change-source  更改子网与区域的绑定

配置区域允许/拒绝的协议/端口号

firewall-cmd --list-all           显示当前区域的端口号、网卡、服务等信息

        --list-all-zones        显示所有区域的

firewall-cmd --get-services                      列举出来当前所有被允许的协议

firewall-cmd --zone=public --add-service http      配置public区域允许通过http协议

--remove-service ssh    拒绝通过ssh协议

  --add-port=123/tcp     允许通过tcp的123端口

  --remove-port=123/tcp  拒绝通过tcp的123端口

cat /etc/services                                保存的协议类型和端口号

配置协议端口转换(端口映射)

firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.1

将192.168.10.1主机的tcp 22端口号转为888端口号(public区域接收ssh)

  --remove-forward-port 删除此端口映射

其它配置

--panic-on  紧急模式,切断一切的网络连接(特殊情况去使用)

--panic-off  恢复一切的网络连接

配置富规则rich(更复杂、更详细的防火墙策略配置)

优先级最高(高于默认规则,两个并不冲突)

能够根据源目地址、端口号来限制用户

firewall-cmd  --zone=public --list-rich-rule    显示public区域已经配置的富规则

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.100.1/24" service name="ssh" accept"   允许来自192.168.100.1的主机访问22端口

 --add-rich-rule         添加一个富规则

 --remove-ruch-rule     删除一个富规则

 reject                  拒绝访问

firewall-config图形化配置

安装firewall-config

 配置Yum源(软件仓库)
Linux 软件包安装_静下心来敲木鱼的博客-CSDN博客icon-default.png?t=N176https://blog.csdn.net/m0_49864110/article/details/129150924?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129150924%22%2C%22source%22%3A%22m0_49864110%22%7D

 安装软件 dnf install firewall-config

系统界面讲解

1:选择运行时(Runtime)或永久(Permanent)模式的配置

2:选择区域

3:当前正在使用的区域(黑色加粗)

4:管理当前被选中区域中的服务

5:管理当前被选中区域中的端口

6:设置允许被访问的协议

7:设置允许被访问的端口

8:开启或关闭SNAT(源网络地址转换)技术

9:设置端口转发策略

10:控制请求icmp服务的流量

11:被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量

12:管理防火墙的富规则

13:网卡信息(网卡与区域绑定信息)

14:子网信息(子网与区域绑定信息)

15:查看常用的服务协议列表

16:主机地址的黑白名单

相关文章:

Linux 防火墙配置(iptables和firewalld)

目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…...

深度学习基础(一)

记得17年第一次阅读深度学习相关文献及代码觉得不是很顺畅,做客户端开发时间久了,思维惯性往往觉得比较迷茫。 而且文章中涉及的数学公式及各种符号又觉得很迷惑,虽然文章读下来了,代码也调试过了,意识里并没有轻松的…...

Maven 常用命令

mvn archetype: create :创建Maven 项目mvn compile :编译源代码。mvn deploy:发布项目。mvn test-compile :编译测试源代码mvn test:运行应用程序中的单元测试mvn site:生成项目相关信息的网站mvn clean:清除项目目录中的生成结果mvn package:根据项目生成的iar/war等mvn inst…...

2023年100道最新Android面试题,常见面试题及答案汇总

除了需要掌握牢固的专业技术之外,还需要刷更多的面试去在众多的面试者中杀出重围。小编特意整理了100道Android面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧拿去吧~~文末有答案Q1.组件化和arouter原理Q2.自定义view&…...

[JavaEE系列] 详解面试中HTTP协议HTTPS协议

文章目录HTTP不安全HTTPS中的加密算法对称加密非对称加密混合加密HTTPS中的摘要算法HTTPS中的数字证书SSL /TLS握手TCP建立连接(三次握手)三次握手中常见的面试题:TCP断开连接(四次挥手)四次挥手中常见的面试题&#x…...

mac 好用的类似Xshell工具

下载royal TSX 5.1.1 http://share.uleshi.com/f/9490615-685692355-33bf1e修改mac的etc/hosts文件权限访达(鼠标右键) -> 前往文件夹 ->输入/private --> 打开etc/hosts --> 显示简洁(鼠标右键) --> 权限改成读和写hosts文件写入如下内容:# Royal T…...

浅谈SQL中的union和union all

文章目录概念基础语法使用技巧区别总结概念 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 UNION 操作符选取不同的值,如果允许得到重复的值,可以使用 UNION ALL 基础语法 -- u…...

P6软件应用的核心收益

卷首语 提供了多用户、多项目的功能模块,支持多层次项目等级划分,资源分配计划,记录实际数据,自定义视图,并具有用户定义字段的扩展功能。 利用最佳实践,建立企业模板库 P6软件支持用户使用模板编制项目…...

性能测试中,我遇到的8个常见问题总结

性能压测中我们需要明白以下几点: 1、好的开始是成功的一半,前期的准备非常重要; 2、过程中,关注每个细节,多个维度监控; 3、在调优中多积累经验; 4、对结果负责,测试报告要清晰…...

kafka架构体系

Kafka简介 Kafka是一个由Scala和Java编写的企业级的消息发布和订阅系统,最早是由Linkedin公司开发,最终开源到Apache软件基金会的项目。Kafka是一个分布式的,支持分区的,多副本的和多订阅者的高吞吐量的消息系统,被广…...

【Kafka】三.Kafka怎么保证高可用 学习总结

Kafka 的副本机制 Kafka 的高可用实现主要依赖副本机制。 Broker 和 Partition 的关系 在分析副本机制之前,先来看一下 Broker 和 Partition 之间的关系。Broker 在英文中是代理、经纪人的意思,对应到 Kafka 集群中,是一个 Kafka 服务器节…...

Python学习笔记7:再谈抽象

再谈抽象 对象 多态 即便你不知道变量指向的是哪种对象,也能够对其执行操作封装 向外部隐藏不必要的细节。继承 类 class Person: def set_name(self, name): self.name name def get_name(self): return self.name def greet(self): print("Hello, world…...

钣金行业mes解决方案,缩短产品在制周期

钣金加工行业具有多品种、小批量离散制造行业的典型特点。一些常见的下料车间、备料车间、冲压车间、冲剪生产线等。一般来说,核心业务是钣金加工的生产单位。 一般来说,与大规模生产相比,这种生产方式效率低、成本高,自动化难度…...

【Linux】——git和gdb的简单使用技巧

目录 1.\r&&\n 2.缓冲区 3.做一个Linux的小程序——进度条 1.makefile代码: 2.proc.h代码 3.proc.c代码 4.main.c代码 4.git(上传做好的小程序) 5.Linux调试器-gdb使用 1.\r&&\n 在Linux中,可以将\r看成…...

Fiddler的简单使用

目录 1.断点应用 2.网络限速测试 2.1.为什么需要弱网测试 2.2.Fiddler弱网测试配置 1.断点应用 通过断点功能,可以在测试时方便的篡改request,response以达到测试的目的,如果:在请求头中的参数修改成错误的,或在响应…...

MySql 事务

概述 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 注意: 默认MySQL的事务是自动提交的,也就是…...

微信社区小程序/h5/圈子论坛贴吧交友/博客/社交/陌生人社交/宠物/话题/私域/同城交友

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 小程序/app/H5多端圈子社区论坛系统,交友/博客/社交/陌生人社交,即时聊天,私域话题,社区论坛圈子,信息引流小程序源码,广场/微校园/微小区/微同城/ 圈子论坛社区系统,含完整…...

Python os和sys模块

一、os模块 os 模块是 Python中的一个内置模块,也是 Python中整理文件和目录最为常用的模块。 该模块提供了非常丰富的方法用来处理文件和目录。比如:显示当前目录下所有文件/删除某个文件/获取文件大小 1、获取当前的工作路径 在 Python 中&#xff0…...

JS中数组如何去重(ES6新增的Set集合类型)+经典two sum面试题

现在有这么一个重复数组:const arr [a,a,b,a,b,c]只推荐简单高效的方法,复杂繁琐的方法不做推荐方法一:const res [...new Set(arr)]Set类型是什么呢?Set 是ES6新增的一种新集合类型。具体知识点可以看下面附录:根据…...

HDLC简介及相应hdlc实训

HDLC简介 HDLC 协议 高级数据链路控制(HDLC,High-level Data Link Control)是一种面向比特的链路层协议, 其最大特点是对任何一种比特流,均可以实现透明的传输。HDLC协议具有以下优点。 透明传输:HDLC不…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

腾讯云V3签名

想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...