Linux 防火墙 firewalld 实战配置教程!

最近工作上处理了很多关系配置服务器防火墙的操作,于是想写一篇理论与实践并存的文章,在这里分享给大家,希望对您有所帮助!

主要包括以下几部分内容:

  • 防火墙概述

  • firewalld原理框架

  • 与iptables的异同点

  • firewalld常用操作

  • firewalld富规则实战

1、防火墙概述

Firewalld是一种提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具,它自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。

他们的作用是维护规则,而真正使用规则干活的是内核netfilter,firewalld和iptables的结构以及使用方法会有点不一样。

从逻辑上可分为:主机防火墙和网络防火墙 从物理上可分为:硬件防火墙和软件防火墙

firewalld和iptables就属于主机层面的防火墙

主机防火墙主要通过netfilter和TCP Wrappers两个机制来管理的。

  • Netfilter:数据包过滤机制

  • TCP Wrappers:程序管理机制

关于数据包过滤机制(Netfilter)两个软件:firewalld与iptables

注意:在RHEL7系列中,默认使用firewalld作为防火墙。在7系列之前使用的是iptables作为默认防火墙。

2、Firewalld原理架构

2.1 Firewalld区域管理

通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。

【例如】互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装, 初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。

2.2 Firewalld域

网络区名称

默认配置

trusted

可接受所有的网络连接

home

用于家庭网络

internal

用于内部网络,仅接受ssh,mdns,gp-client,samba-client,dhcpv6-client连接

work

用于工作区,仅接受sshjpp-client,dhcpv6-client服务连接

public

用于工作区, 仅接受ssh,ipp-client,dhcpv6-client服务连接,在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,是firewalld的默认区域

dmz

仅接受ssh服务的连接

【温馨提示】firewalld的默认区域是 public

2.3 Firewalld配置文件

firewalld默认提供了九个zone配置文件: block.xml、 dmz.xml、 drop.xml、 external.xml、  home.xml、 internal.xml、 public.xml、 trusted.xml、 work.xml,都保存在 /usr/lib/firewalld/zones/目录下。

3、与ptables 的异同

3.1 相同点

firewalld与  iptables 都是 linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的 netfilter。

3.3 不同点

iptables 仅能通过命令行进行配置;而 firewalld 提供了图形接口,类似windows防火墙的操作方式;

iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规;则;而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接;

iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中;

iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程;

iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口;

【firewalld】默认是拒绝;而【iptables】默认是允许。

【温馨提示】

service说明: 在  /usr/lib/firewalld/services/ 目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如 ssh 服务等。这个目录下的服务配置默认是放通的,不受firewalld-cmd 规则控制,除非把这个目录下的服务配置文件删掉,就恢复了默认了(默认拒绝),当然也可以添加一些服务配置文件。

4、Firewalld常用操作

firewall-config(需要有图形化界面的才能使用), firewall-cmd是命令行工具,实际生产环境主要使用firewall-cmd来操作

4.1 Firewalld规则的两种状态

运行时( runtime):修改规则马上生效,但是临时生效,默认是运行时状态 持久配置( permanent): 修改后需要重载才会生效

firewall-cmd --permanent [RULE]
firewall-cmd --reload

4.2 Firewalld常见选项

可以通过 man firewall-cmd或者 firewall-cmd --help查看帮助,firewalld的选项很多,下面列出一些比较常用的

firewall-cmd  --help--permanent  # 配置写入到配置文件,永久生效
--reload     # 重载配置文件,永久生效
--zone=      # 指定区域,默认是public
--get-default-zone   # 查看默认区域
--set-default-zone=   # 设置默认区域
--get-zones     # 获取所有可用的区域
--get-active-zones  # 获取当前激活(活跃)的区域
--add-source=    # 添加地址,可以是主机或网段,遵循当前区域的target
--remove-source  # 移除地址,可以是主机或网段,遵循当前区域的target
--add-service=    # 添加服务
--remove-service=   # 移除服务
--list-services     # 显示当前区域内允许访问的所有服务
--add-port=xx/tcp    # 添加端口,后面要指定是TCP还是UDP
--remove-port=    # 移除端口,遵循当前区域的target
--list-ports   # 显示指定区域内允许访问的所有端口号
--list-all     # 列出当前使用的区域的配置
--list-all-zones   # 列出所有区域的配置
--get-zone-of-interface=    # 获取指定接口所在的区域
--list-icmp-blocks   # 显示指定区域内拒绝访问的所有ICMP类型
--list-protocols           --列出在指定区域中允许通过的协议

4.3 常用的增删改查操作

(1)查看规则

查看当前区域的配置信息详解

[root@localhost ]# firewall-cmd --list-all
public (active)   # 活动的区域target: default # 默认启动的区域icmp-block-inversion: no  # ICMP协议类型黑白名单开关(yes/no)interfaces: eth0 # 关联的网卡接口sources:    # 来源,可以是IP地址,也可以是mac地址services: dhcpv6-client ssh   # 列出允许通过这个防火墙的服务ports: 80/tcp  # 列出允许通过这个防火墙的目标端口。(即 需要对外开放的端口)protocols:  # 协议值可以是一个协议 ID 数字,或者一个协议名masquerade: no   # 表示这个区域是否允许 IP 伪装。如果允许,它将允许 IP 转发,它可以让你的计算机作为一个路由器forward-ports:   # 列出转发的端口
source-ports:  # 允许的来源端口icmp-blocks:   # 可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许rich rules:   # 富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的rule family="ipv4"source address="192.168.250.0/24" accept

常用的查看信息

# 查询默认区域配置信息
firewall-cmd --list-all
# 查看区域配置信息
firewall-cmd --list-all --zone=work
# 查询所有端口
firewall-cmd --list-ports
# 查询指定端口
firewall-cmd --zone=public --query-port=22/tcp
# 查询放通IP段
firewall-cmd --list-sources
# 查看默认区域
firewall-cmd --get-default-zone
# 查看所有可以使用的区域
firewall-cmd --get-zones
# 查看活跃的区域
firewall-cmd --get-active-zones
# 查看网卡绑定在了哪个区域
firewall-cmd --get-zone-of-interface=[IFACE]
# 查看所有服务
firewall-cmd --get-services

(2)添加规则

1、开放特定端口

# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent# 开放snmp的161的UDP端口,默认的zone是public,可以不指定zone
firewall-cmd --add-port=161/udp --permanent# 让配置生效
firewall-cmd --reload# 查看规则
firewall-cmd --list-ports 
firewall-cmd --list-all

2、放通某个服务

# 放通nfs服务的所有端口
firewall-cmd --zone=public --add-service=nfs --permanent# 放通ssh服务
firewall-cmd --zone=public --add-service=ssh --permanent# 放通snmp服务
firewall-cmd --zone=public --add-service=ssh --permanent# 重载防火墙
firewall-cmd --reload# 查看放通了哪些服务访问
firewall-cmd --list-services

3、放通某个网段访问

firewall-cmd --add-source=10.10.10.0/24 --zone=publicfirewall-cmd --reload# 查看
firewall-cmd --list-sources

(3)删除规则

# 删除开放的3306端口
firewall-cmd --permanent --remove-port=3306/tcp 
firewall-cmd --reload# 删除nfs服务
firewall-cmd --permanent --remove-service=nfs# 删除某个网段访问
firewall-cmd --permanent --zone=public --remove-source=10.10.10.0/24
firewall-cmd --reload

5、Firewalld防火墙富规则

富规则是为了更细粒度的管控,在生产环境用的比较多,重点掌握

5.1 富规则常用的选项

firewall-cmd--list-rich-rules   --列出富规则--add-rich-rule=<rule>    --添加富规则--remove-rich-rule=<rule>   --移除富规则--list-all 和 --list-all-zones         --也能列出存在的富规则

5.2 富规则语法

规则的几乎每个单一元素都能够以option=value形式来采用附加参数

rule[source][destination]service|port|protocol|icmp-block|masquerade|forward-port[log][audit][accept|reject|drop]

格式:

rule [family="ipv4|ipv6"]source address="address[/mask]" [invert="True"]destination address="address[/mask]" invert="True"service name="service name"port port="port value" protocol="tcp|udp"protocol value="protocol value"forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address"log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"]accept | reject [type="reject type"] | drop

5.3 常用的富规则配置

(1)对特定IP访问特定端口

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.10.10.110/32" port port="1521" protocol="tcp" accept" 
firewall-cmd --reload

(2)批量加端口,允许某个网段访问多个端口

firewall-cmd --permanent  --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 port port=8080-8090 protocol=tcp accept'
firewall-cmd --reload

(3)开通某个IP访问某个服务

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 service name=nfs source address="10.10.10.101/32" accept'
firewall-cmd --reload

(4)拒绝某个IP访问所有端口

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.10.10.110/32 reject'
firewall-cmd --reload

(5)允许某个IP访问所有端口

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.10.10.110/32 allow'
firewall-cmd --reload

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

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

相关文章

C#发送文件到蓝牙设备

测试环境&#xff1a; visual studio 2022 win11笔记本电脑&#xff0c;具有蓝牙功能 .net6控制台 测试步骤如下&#xff1a; 1 新增名为BluetoothDemo控制台项目 2 通过nuget安装InTheHand.Net.Bluetooth&#xff0c;版本选择4.2.1和安装InTheHand.Net.Obex&#xff0c;版…

初识 Pandas:Python 数据分析的利器

在数据分析、数据清洗和可视化等领域&#xff0c;Python 无疑是最受欢迎的语言之一&#xff0c;而在 Python 的数据处理生态中&#xff0c;Pandas 是最核心、最基础的库之一。如果你接触数据分析、机器学习、金融建模&#xff0c;或者只是想处理一些 Excel 表格&#xff0c;那么…

SpringBoot项目使用POI-TL动态生成Word文档

近期项目工作需要动态生成Word文档的需求&#xff0c;特意调研了动态生成Word的技术方案。主要有以下两种&#xff1a; 第一种是FreeMarker模板来进行填充&#xff1b;第二种是POI-TL技术使用Word模板来进行填充&#xff1b; 以下是关于POI-TL的官方介绍 重点关注&#xff1…

fakeroot 在没有超级用户权限的情况下模拟文件系统的超级用户行为

fakeroot 是一个在 Linux 环境中使用的工具&#xff0c;它允许用户在没有超级用户权限的情况下模拟文件系统的超级用户行为。它是一个在 Linux 环境中广泛使用的工具&#xff0c;通常包含在大多数 Linux 发行版的软件仓库中。‌ 主要功能 ‌模拟 root 权限‌&#xff1a;fake…

Spring Spring Boot 常用注解整理

Spring & Spring Boot 常用注解整理 先理解核心概念&#xff1a;什么是注解&#xff08;Annotation&#xff09;&#xff1f;第一部分&#xff1a;IOC&#xff08;控制反转&#xff09;和 DI&#xff08;依赖注入&#xff09;1. Component2. Service, Repository, Controll…

AIGC与数字媒体实验室解决方案分享

第1部分 概述 1.1 建设目标 1.深度融合AIGC技术&#xff0c;培养能够驾驭新质生产力的数字媒体人才 通过引入前沿的AIGC技术&#xff0c;确保学生能够接触到最先进的人工智能应用。教学内容理论和实践结合&#xff0c;让学生在实际操作中熟练掌握AIGC工具&#xff0c;生成高…

讯联云库项目开发日志(二)AOP参数拦截

目录 利用AOP实现参数拦截: 一、​​HTTP请求进入Controller​&#xff08;发送邮件验证码&#xff09; 二、AOP切面触发 1. 切面拦截&#xff08;GlobalOperactionAspect.class&#xff09; method.getAnnotation()​​ null interceptor 判断​​ 2.参数校验注解 3. 参…

用OBD部署OceanBase社区版的避坑指南

以下是用OBD黑屏部署 OceanBase社区版时容易碰到的几个问题及解决思路&#xff0c;供大家参考。 一、 遇坑步骤&#xff1a;用yaml文件部署集群&#xff1a; obd cluster deploy obtest -c mini-single-example.yaml 报错&#xff1a; Package oceanbase-ce-4.2.1.8-108000…

无锡哲讯科技:引领芯片封装SAP系统的智能化革命

芯片封装行业的数字化转型 在全球半导体产业高速发展的今天&#xff0c;芯片封装作为产业链的关键环节&#xff0c;直接影响着芯片的性能、可靠性和成本。随着5G、人工智能、物联网等技术的普及&#xff0c;市场对芯片的需求激增&#xff0c;封装企业面临着效率提升、良率优…

从海洋生物找灵感:造个机器人RoboPteropod,它能在水下干啥?

大家好&#xff01;在如今人类对水下环境探索不断深入的时代&#xff0c;从水下考古到珊瑚礁考察&#xff0c;各种任务都离不开水下机器人的助力。但传统水下机器人尺寸较大&#xff0c;在狭窄的水下空间施展不开。今天&#xff0c;我们就来认识一款受海洋小生物启发而设计的仿…

区块链blog1__合作与信任

&#x1f342;我们的世界 &#x1f33f;不是孤立的&#xff0c;而是网络化的 如果是单独孤立的系统&#xff0c;无需共识&#xff0c;而我们的社会是网络结构&#xff0c;即结点间不是孤立的 &#x1f33f;网络化的原因 而目前并未发现这样的理想孤立系统&#xff0c;即现实中…

Linux服务之lvs+keepalived nginx+keepalived负载均衡实例解析

目录 一.LVSKeepAlived高可用负载均衡集群的部署 二.NginxKeepAlived高可用负载均衡集群的部署 一.LVSKeepAlived高可用负载均衡集群的部署 实验环境 主keepalived&#xff1a;192.168.181.10 lvs &#xff08;7-1&#xff09; 备keepalived&#xff1a;192.168.181.10…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ |搭建项目框架

&#x1f5a4; 一个专注于「Vue3 TailwindCSS」的 50 天极简开发挑战&#xff0c;探索组件边界&#xff0c;打磨技术锋芒。 &#x1f389; 欢迎来到 50 个小项目的第一天&#xff01;今天我们将从零开始搭建一个 Vue3 项目&#xff0c;并引入 Tailwind CSS v4&#xff0c;为后…

Android 中 网络图片加载库 Glide 简介

Glide 是一个功能强大且广泛使用的图片加载库,适用于 Android 应用程序。它提供了简单易用的 API,用于从网络、本地存储或资源中加载图片,并支持图片的缓存、转换、占位图、动画等功能。 一、Glide 主要特点 简单易用 提供简洁的 API,一行代码即可加载图片。 支持多种数据…

07 web 自动化之 Unittest 应用:测试报告装饰器断言

文章目录 一、常见的第三方库结合 unittest 生产 html 格式测试报告1、HtmlTestRunner2、BeatifulReport 二、装饰器 unittest.skip 强制跳过&条件跳过三、unittest的常用断言方法 一、常见的第三方库结合 unittest 生产 html 格式测试报告 1、HtmlTestRunner 官网下载 …

【Python 面向对象】

Python 的面向对象编程&#xff08;OOP&#xff09;通过类&#xff08;Class&#xff09;和对象&#xff08;Object&#xff09;实现代码结构化&#xff0c;支持封装、继承和多态三大特性。以下是系统化指南&#xff1a; 一、类与对象基础 1. 定义类 class Dog:# 类属性&…

STM32F103_LL库+寄存器学习笔记23 - PWM波形输出及软件方式调整周期与占空比

导言 脉宽调制&#xff08;PWM&#xff09;是 STM32 定时器最常用的输出模式之一&#xff0c;广泛应用于电机驱动、LED 调光、伺服控制和功率管理等场景。本篇文章将以 TIM5 为例&#xff0c;从寄存器层面深入剖析 PWM 输出的原理与实现步骤。通过本篇博客&#xff0c;你不仅能…

堆(Heap)

1. 堆&#xff08;Heap&#xff09; 1.1. Python实现堆的插入、堆顶删除和排序 class MaxHeap:def __init__(self):# 初始化空堆&#xff0c;使用列表表示self.heap []def insert(self, val):# 插入元素并执行上浮self.heap.append(val)self._sift_up(len(self.heap) - 1)de…

Spring类

BeanDefinition BeanDefinition表示Bean定义&#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。比如&#xff1a; class&#xff0c;表示Bean类型scope&#xff0c;表示Bean作用域&#xff0c;单例或原型等lazyInit&#xff1a;表示Bean是否是懒加载initMeth…

在vue中this.$emit有哪些作用,事件监控具体含义,以及这些子组件能封装哪些功能组件

this.$emit 的作用 this.$emit 的作用是触发一个自定义事件&#xff0c;并将数据传递给父组件。父组件可以通过 v-on&#xff08;或 &#xff09;监听这个事件&#xff0c;并在事件触发时执行相应的处理函数。 this.content 的作用 this.content 是子组件的 props&#xff0…