linux 防火墙管理-firewalld

2023-05-16

文章目录

    • 什么是Firewalld防火墙
      • firewalld防火墙的域概念
      • firewalld-cmd的参数及作用
      • firewalld中的过滤规则
      • firewalld防火墙的作用模式
      • firewalld-cmd操作实例
    • 对Firewalld服务的简单操作
    • 新版系统上已自带firewalld防火墙还可以使用iptables吗?
    • firewalld 和iptables的关系
    • firewalld图形界面(GUI)

什么是Firewalld防火墙

当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。
“firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。有命令行界面(CLI)和图形界面(GUI).
这里主要讲解CLI方式。
“Firewalld”提供了一种非常灵活的方式来处理防火墙管理,有了区域(zone)的概念,用户根据使用场景选择不同域(zone),为每个域设置好策略,切换办公场所只要用鼠标去选择不同的区域即可(也可用简单的命令行来进行域的切换),区域如同进入主机的安全门, 每个区域都具有不同限制程度的规则, 只会允许符合规则的流量传入,默认public区域(默认情况下,public区域是默认区域,包含所有接口 (网卡))。

firewalld防火墙的域概念

firewalld防火墙可以分为9个域,用命令可以查看系统中这几个域(下面会有介绍)。
(1)丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃,这个类似于Centos6上的 iptables -j drop ,使用丢弃规则意味着将不存在相应。
(2)阻塞区域(Block Zone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
(3)公共区域(Public Zone):只接受那些被选中的连接,默认只允许ssh和dhcpv6-client,这个zone是缺省zone(缺省就是默认的意思,所以公共区域也是默认区域,在没有任何配置的情况下走的是公共区域)。
(4)外部区域(External Zone):这个区域相当于路由器的启动伪装(masquerading)选项,只有指定的连接会被接受,即ssh,而其他的连接将被丢弃或者不被接受。
(5)隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义,它也拥有只通过被选中连接的特性,即ssh, 这个区域又叫做非军事化区域。
(6)工作区域(Work Zone):在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client。
(7)家庭区域(Home Zone):这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client。
(8)内部区域(Internal Zone):这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同。
(9)信任区域(Trusted Zone):信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的。

以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义,活跃域是当前使用的域,这个活动域可以根据需要切换。
firewalld-cmd 是firewalld防火墙的命令行管理工具。

firewalld-cmd的参数及作用

参数作用
–get-default-zone查询默认的区域名称
–set-default-zone=<区域名称>设置默认的区域,使其永久生效
–get-zones显示可用的区域
–get-services显示预先定义的服务
–get-active-zones显示当前正在使用的区域与网卡名称
–add-source=将源自此IP或子网的流量导向指定的区域
–remove-source=不再将源自此IP或子网的流量导向某个指定区域
–add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称>将某个网卡与区域进行关联
–list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名>设置默认区域允许该服务的流量
–add-port=<端口号/协议>设置默认区域允许该端口的流量
–remove-service=<服务名>设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
–reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on开启应急状况模式
–panic-off关闭应急状况模式
–add-rich-rule防火墙富规则,具体用户也可以参见https://blog.51cto.com/u_3823536/2552274
–zoon制定设置域,用法–zoon=work

firewalld中的过滤规则

参数参数作用
target目标区域
icmp-block-inversionICMP协议类型黑白名单开关(yes/no)
Interfaces关联的网卡接口
sources来源,可以是IP地址,也可以是mac地址
services允许的服务
ports允许的目标端口,即本地开放的端口
protocols允许通过的协议
masquerade是否允许伪装(yes/no),可改写来源IP地址及mac地址
forward-ports允许转发的端口
source-ports允许的来源端口
icmp-blocks可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许。
rich rules富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址 优先级最高
2、interface,接收请求的网卡 优先级第二
3、firewalld.conf中配置的默认zone 优先级最低

firewalld防火墙的作用模式

Runtime模式:firewalld默认模式,当前生效模式,重启后失效;
Permanent模式:永久模式,需要系统重启或手动执行firewalld-cmd reload后生效。

firewalld-cmd操作实例

把原本访问本机8000端口的流量转发到7000端口,且长期有效
流量转发命令格式为:
firewall-cmd --permanent --zone=<区域> --add-forward-port=port= <源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

[root@linux ~]# firewall-cmd --permanent --zone=public --add-forward port=8000:proto=tcp:toport=7000:toaddr=192.168.1.100 
success 
[root@linux ~]# firewall-cmd --reload
success

查询eno16777728网卡在firewalld服务中的区域:

[root@linux ~]# firewall-cmd --get-zone-of-interface=eno16777728 public

firewalld服务中请求HTTP协议的流量设置为永久拒绝:

[root@linux ~]# firewall-cmd --permanent --zone=public --remove-service=http
  success

实例:添加开发端口重载后生效

[root@MiWiFi-R4AC-srv ~]# firewall-cmd --state #查询firewalld防火墙状态
running
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --add-port=8090/tcp #添加8090开放端口
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --reload #重载firewalld防火墙
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp 8090/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --query-port=8090/tcp #查询8090端口是否开放
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --remove-port=8090/tcp #已出8090开发端口
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --reload #重载firewalld防火墙
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# 

实例: 开启某个端口(指定IP可访问)

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

实例:删除某个端口(指定IP可访问)策略

firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.1.1.14/32" port protocol="tcp" port="80" accept"

实例:防火墙配置文件路径

[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-all-zones #查看9个域
[root@MiWiFi-R4AC-srv ~]#cd /etc/firewalld/zones
[root@MiWiFi-R4AC-srv zones]# ls
block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml

实例:firewall-cmd --list-all #默认查看的是public

[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-all #默认查看的是public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno1
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp 8090/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

实例:查询9个域

#[root@MiWiFi-R4AC-srv zones]# firewall-cmd --get-zones #查询防火墙9个域,配置文件位于/etc/firewalld/zones
block dmz drop external home internal public trusted work

对Firewalld服务的简单操作

查看本机使用哪种服务的防火墙

systemctl list-unit-files |grep firewalld  #查看是否安装了firewalld防火墙
systemctl status firewalld #查看firewalld防火墙状态

查看开机是否启动防火墙

systemctl is-enabled firewalld.service 

重新加载防火墙

systemctl reload firewalld.service
firewall-cmd --reload

启动firewalld防火墙

systemctl start firewalld
service firewalld.service start

重启firewalld服务

systemctl restart firewalld
service firewalld.service restart

关闭防火墙

systemctl stop firewalld

开机启动防火墙

systemctl enable firewalld.service
chkconfig firewalld on #开机启动firewalld

开机不启动firewalld防火墙

systemctl disable firewalld.service
or
chkconfig firewalld.service off #永久关闭firewalld.service

新版系统上已自带firewalld防火墙还可以使用iptables吗?

CentOS7 默认使用firewalld防火墙,如果想换回iptables防火墙,可关闭firewalld并安装iptables,启用iptables后即可使用iptalbes防火墙和对其进行配置使用。

yum install iptables.service #安装iptables

firewalld 和iptables的关系

借图一张
在这里插入图片描述

Linux防火墙配置

/etc/firewalld/firewalld.conf

firewalld图形界面(GUI)

由于这里没有说GUI界面的操作,所以放一张图让大家认识一下,知道了firewalld的设置原理,使用GUI界面应该不难(从书上借图一张)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 防火墙管理-firewalld 的相关文章

  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • NUMA 在虚拟内存中是如何表示的?

    有许多资源 https en wikipedia org wiki Non uniform memory access从硬件角度描述NUMA的架构性能影响 http practical tech com infrastructure num
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • linux命令中括号的用途是什么[重复]

    这个问题在这里已经有答案了 我在 Linux 终端中运行以下命令 谁能告诉我 Linux 终端中括号和以下命令的用途是什么 echo GET HTTP 1 0 echo 主机 www google com echo 数控 www googl
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地

随机推荐

  • Futaba S-BUS协议解析

    一 协议说明 S BUS协议实际上通过串口进行数据发送 但是需要注意的是 xff0c S BUS的逻辑电平是反的 xff0c 需用如下电路对电平反相 xff0c 再接到串口接收的管脚 三极管可以用8050 串口配置为波特率100kbps x
  • 树莓派3-改装wifi外置天线(转)

    添加U FL底座 把U FL底座焊接到背面J13附近 xff0c 并更改0欧电阻连接 具体操作如下图所示 图 1 U FL座焊接位置 图 2 箭头所指处刮掉阻焊层 xff0c 增加焊接强度 图 3 更改0欧电阻的连接
  • linex命令大全

    1 uname a 查看内核版本 2 cat etc issue 查看当前linux的版本 3 设置ssh客户端的中文编码 export LC ALL 61 zh CN GB2312 export LANG 61 zh CN GB2312
  • 超声波测距模块HC-SR04简介

    一 模块引脚分析 可以看到模块有四个引脚 xff0c 分别是 Vcc xff1a 5V输入 xff0c 网上说3 3V输入也可以 xff0c 没试过 Trig xff1a 触发信号输入 Echo xff1a 回响信号输出 Gnd xff1a
  • 三款EDA工具,AD、PADS与Allegro的简单介绍

    一 市面上原理图设计和pcb绘制的软件主要有如下三个 xff1a 1 Altium Designer 简称AD 2 PADS 3 Cadence的Allegro 简称阿狸狗 二 三款软件的简单介绍 Altium Designer xff1a
  • BLDC无刷直流电机驱动电路-硬石电子

    1 BLDC无刷直流电机驱动电路 xff0c 因为BLDC是三相完全一样的驱动电路 xff0c 下图为其中一相电路图 xff0c 其他两相完全一样 主要元器件 xff1a 高速光耦 xff1a TLP715 MOS管驱动IC xff1a I
  • STM32F103如何使用串口下载程序

    1 从STM32参考手册上 xff0c 可以查阅到 xff0c STM32的启动模式 xff0c 共有下列三种 xff0c 可以通过BOOT0和BOOT1电平的不同组合 xff0c 来选择不同的启动模式 主闪存启动模式 xff1a 即运行模
  • keil提示用STLINK下载程序提示Error: Flash Download failed - Target DLL has been cancelled的一种情况

    keil版本为 xff1a V5 25 30 0 下载器为ST LINK 1 如下图 xff0c keil提示Error Flash Download failed Target DLL has been cancelled 2 原因是如下
  • STLINK引脚定义和接法

    1 如下图为STLINK实物图引脚定义 有一点需要注意 xff0c 其实20pin下面一排 xff0c 除了2脚是TVCC xff0c 其他脚都是GND 使用SW接法只需要四根线 xff1a 1 xff1a 3 3V 7 xff1a SWI
  • keil无法读取到jlink下载器,程序无法下载,报错No Cortex-M SW Device Found

    1 如题 xff0c 我用的芯片是STM32F103ZET6 xff0c 日常的接上下载器进行程序下载 xff0c 结果发现程序下载不进去 xff0c 错误提示如下 xff0c 一看就是Jlink没有连接上 进去设置里面查看 xff0c 确
  • 面试嵌入式工程师过程中的常见问题和回答

    1 请介绍一下你的嵌入式系统开发经验 an xff1a 首先 xff0c 回答此类问题时应该尽可能地详细和具体 可以从以下方面介绍自己的嵌入式系统开发经验 xff1a 1 开发环境和工具 xff1a 介绍自己使用过哪些开发环境和工具 xff
  • 【问题】使用opencv读取并处理图片后用plt显示图像颜色的偏色问题处理

    1 问题 x1f631 x1f631 x1f631 使用opencv读取并处理图片后用plt显示图像颜色偏色问题 xff0c 比如 xff0c 原始图像为黄色调 xff0c 结果显示为蓝色调 或者 xff0c 原始图像为蓝色调 xff0c
  • 常用docker命令,及一些坑

    常用docker命令 xff0c 及一些坑 常用命令 查看容器的root用户密码 span style color rgb 249 38 114 docker span logs lt 容器名orID gt span style color
  • Python笔记

    注释 注释 xff1a 就是对代码的说明 xff0c 提高代码的可读性 xff0c 让别人快速了解代码的功能 xff0c 在代码运行过程 中不起作用的 单行注释以 开头 快捷键 xff1a ctrl 43 39 39 39 三对引号 xff
  • ubuntu远程桌面

    最近一直在用putty 43 pagent远程登录ubuntu xff0c 用命令行来操作和配置Ubuntu系统 不过老是觉得缺少了什么 xff0c 觉得图形界面也不错 xff0c 特别是安装了ubuntu joES以后 xff0c 想法更
  • 【项目实战】使用containerd CLI 工具ctr 实现从腾讯云中拉取Docker最新的镜像

    一 背景 运维同学需要实现从腾讯云中拉取Docker最新的镜像 xff0c 以下是具体的操作方法 二 containerd 的 CLI 工具 xff1a ctr Docker CLI 工具提供了需要增强用户体验的功能 xff0c conta
  • 【异常】使用 nvm解决Node.js 版本和 npm 版本不一致导致的问题

    一 背景 如果 Node js 和 npm 版本不一致 xff0c 可能会导致一些依赖包无法正常安装或运行 二 解决问题 为了解决这个问题 xff0c 你可以尝试使用 nvm xff08 Node Version Manager xff09
  • 【项目实战】Nginx配置Https证书

    一 背景说明 Nginx配置https证书是常规操作 xff0c Nginx支持crt 43 key或者pem证书格式 二 具体步骤 2 1 上传证书文件 进入Nginx配置文件夹的目录 xff0c 将这两个证书文件上传至服务器的某个路径中
  • 【异常】使用Putty SSH登录某些主机时,报错Couldn’t agree a host key algorithm

    一 报错内容 想要使用WinSCP的Putty SSH登录某些主机时 xff0c 报错Couldn t agree a host key algorithm xff0c 报错内容如下 二 报错说明 版本不对吧 xff0c 或者是有版本升级了
  • linux 防火墙管理-firewalld

    文章目录 什么是Firewalld防火墙firewalld防火墙的域概念firewalld cmd的参数及作用firewalld中的过滤规则firewalld防火墙的作用模式firewalld cmd操作实例 对Firewalld服务的简单