filewalld (Redhat,CentOS,Fedora等的防火墙)

filewalld官网

  • firewalld是对iptables的封装,使防火墙管理起来更容易更清晰, 本质上是 firewald操作iptables操作netfilter, 底层始终是netfilter
  • firewalld使用zone(区域)概念,相当于Windows的专用网络公用网络等, 其实质是一套套规则, 方便切换
  • firewalld的每个zone指定了target, 就是iptables的target
  • firewalld的zone指定了端口port,和服务service
    可以通过指定端口放行数据包,也可以使用service指定的端口放行数据包
    zone可以直接管理端口, 也可以通过service间接管理端口
#mermaid-svg-IvvCxDcGeXjJxJRp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp .error-icon{fill:#552222;}#mermaid-svg-IvvCxDcGeXjJxJRp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IvvCxDcGeXjJxJRp .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-IvvCxDcGeXjJxJRp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IvvCxDcGeXjJxJRp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IvvCxDcGeXjJxJRp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IvvCxDcGeXjJxJRp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IvvCxDcGeXjJxJRp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IvvCxDcGeXjJxJRp .marker.cross{stroke:#333333;}#mermaid-svg-IvvCxDcGeXjJxJRp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IvvCxDcGeXjJxJRp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp .cluster-label text{fill:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp .cluster-label span{color:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp .label text,#mermaid-svg-IvvCxDcGeXjJxJRp span{fill:#333;color:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp .node rect,#mermaid-svg-IvvCxDcGeXjJxJRp .node circle,#mermaid-svg-IvvCxDcGeXjJxJRp .node ellipse,#mermaid-svg-IvvCxDcGeXjJxJRp .node polygon,#mermaid-svg-IvvCxDcGeXjJxJRp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IvvCxDcGeXjJxJRp .node .label{text-align:center;}#mermaid-svg-IvvCxDcGeXjJxJRp .node.clickable{cursor:pointer;}#mermaid-svg-IvvCxDcGeXjJxJRp .arrowheadPath{fill:#333333;}#mermaid-svg-IvvCxDcGeXjJxJRp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IvvCxDcGeXjJxJRp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IvvCxDcGeXjJxJRp .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-IvvCxDcGeXjJxJRp .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-IvvCxDcGeXjJxJRp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IvvCxDcGeXjJxJRp .cluster text{fill:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp .cluster span{color:#333;}#mermaid-svg-IvvCxDcGeXjJxJRp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IvvCxDcGeXjJxJRp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

zone直接包含IP协议端口

zone

firewalld的区域
zone

管理IP协议端口

service

zone包含service
service包含IP协议端口

firewalld对比iptables

  • iptables使用chains链管理规则 , firewalld使用zones区域和services服务管理规则,
    zone区域类似Windows的专用网络公用网络等
  • iptables默认都放行,需添加限制规则 ; firewalld默认都限制,需要添加放行规则
  • iptables的规则时静态的,每修改一条都要全部清除,重新读取配置表,全部刷新,已有连接会断开
    firewalld的规则是动态的, 修改后firewall-cmd --reload不会断开已有连接
  • iptables 没有守护进程,并不能算是真正意义上的服务, 而 firewalld 有守护进程
  • iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口

启用禁用启动停止重启firewalld

CentOS7的firewalld默认是启用的
使用systemctl命令时, firewalld等效firewalld.service

启用firewalld服务, 开机启动firewalld服务

###  启用firewalld服务, 开机启动firewalld服务
sudo systemctl enable firewalld
sudo systemctl enable firewalld.service
###  查看是否已启用firewalld服务,是enable启用还是disable禁用? 有可能启用但未启动,也可能禁用但当前启动
systemctl is-enabled firewalld.service

禁用firewalld服务, 系统启动时不开启firewalld服务

###  禁用firewalld服务, 系统启动时不开启firewalld服务
sudo systemctl disable firewalld
sudo systemctl disable firewalld.service
###  查看firewalld服务是enable启用还是disable禁用? 有可能启用但未启动,也可能禁用但当前启动
systemctl is-enabled firewalld.service

启动firewalld服务

###  启动firewalld服务
sudo systemctl start firewalld
sudo systemctl start firewalld.service

停止firewalld服务

###   停止firewalld服务
sudo systemctl stop firewalld
sudo systemctl stop firewalld.service

重启firewalld服务, 重新加载firewalld, 使修改立即生效

##  使配置或修改立即生效
###   重启firewalld服务, 会断开已有连接, 可以在服务停止状态执行
sudo systemctl restart firewalld
sudo systemctl restart firewalld.service
###   重新加载firewalld, 不会断开已有连接, 不能在firewalld服务处于停止状态的时候执行
sudo firewall-cmd --reload
firewall-cmd --reload 对比 systemctl restart firewalld
  • firewall-cmd --reload 是使修改的配置生效, 不会断开连接
  • systemctl restart firewalld 是重启firewalld服务, 新配置会生效, 但会断开已有连接

比如: 远程控制台已建立连接, 此时本地关闭22端口,–delete-service ssh服务,

  • 执行firewall-cmd --reload并不会断开连接, 但远程退出后就无法登录了
  • 执行 systemctl restart firewalld 则远程连接立即断开

查看firewalld服务状态, 服务是否运行

sudo systemctl status firewalld
sudo systemctl status firewalld.service
sudo firewall-cmd --state

systemctl扩展知识

查看已启用的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务:systemctl --failed

firewall的两个配置文件夹,预定义和自定义的

  • 预定义文件夹 : /usr/lib/firewalld/

    cd /usr/lib/firewalld/
    ls /usr/lib/firewalld/
    
  • 自定义文件夹 : /etc/firewalld/
    cd /etc/firewalld
    ls /etc/firewalld
    

在控制台操作 firewalld ,
firewall-cmd 或者用 firewall-offline-cmd

控制台操作 firewalld , 用 firewall-cmdfirewall-offline-cmd命令, 而不是 firewalld
offline是脱机的,离线的意思.

  • firewall-cmd只能在firewalld服务运行时使用,
  • firewall-offline-cmd 在firewalld运行和停止时都能够使用
  • 如果本地机没有图形界面, 又没开放ssh端口, 可以先在本地机关闭firewalld服务, 远程机连上后用firewall-offline-cmd操作,方便复制粘贴配置,配置好后再开启firewalld服务

两种开头大部分用法相同, 但也有一些区别,比如

  • 运行时可以使用firewall-cmd --reload 命令, 但没有 firewall-offline-cmd --reload 命令
  • firewall-offline-cmd 可以在非运行状态执行, 很多命令本身就是永久生效的,
    不能再加--permanent
  • firewall-offline-cmd 不能使用 --get-active-zone获取活动zone, 但能查看默认zone, --get-default-zone

man firewall-cmdman firewall-offline-cmd可查看说明手册
firewall-cmd --helpfirewall-offline-cmd --help 可以查看帮助

firewall-cmd --help | grep port 查看port相关的帮助内容
firewall-cmd --help | grep service 查看service相关的帮助内容
firewall-cmd --help | grep zone 查看zone相关的帮助内容
firewall-cmd --help | grep interface 查看interface相关的帮助内容

permanent

--permanent 选项, 使设置永久生效

firewall-cmd命令语句中的一些设置, 加--permanent 才永久生效,
不加--permanent的话

  • 立即生效的命令,不加--permanent的话,firewall-cmd --reload后会失效
  • firewall-cmd --reload后才生效的命令, 不加--permanent的话,在重启系统 或systemctl restart firewalld 后就失效

有些设置本身就永久生效, 不用加,也不能加--permanent
firewall-offline-cmd开头的命令,一般都不能加--permanent , 本身就是永久的

firewalld的区域(zone)概念

firewalld官方文档—Zone

firewalld的zones类似Windonws的专用网络公用网络等, 相当于规则模板, 有利于管理的方便

firewalld自带的zones , 预定义的zones

来自官方文档 https://firewalld.org/documentation/zone/predefined-zones.html

Predefined Zones 预定义区域
These are the zones provided by firewalld sorted according to the default trust level of the zones from untrusted to trusted:
下面这些是 firewalld 提供的预定义区域,根据其默认的信任级别从不信任到信任排序, 按信任度从低到高排列

  • drop 信任度最低

Any incoming network packets are dropped, there is no reply. Only outgoing network connections are possible.
任何传入的网络数据包都被丢弃,没有回复。 只有传出网络连接是可能的。 只能发送,不能接收

  • block

Any incoming network connections are rejected with an icmp-host-prohibited message for IPv4 and icmp6-adm-prohibited for IPv6. Only network connections initiated within this system are possible.
任何传入的网络连接都会被拒绝,并使用 IPv4 的 icmp-host-prohibited 消息和 IPv6 的 icmp6-adm-prohibited 消息。 只有在该系统内发起的网络连接是可能的。
被拒绝的连接会收到一个icmp,返回目标主机不可达。

  • public

For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
用于公共区域。 您不相信网络上的其他计算机不会损害您的计算机。 仅接受选定的传入连接。
这也是firewalld默认的区域,默认不开放22以外的任何端口,需手动添加

  • external

For use on external networks with masquerading enabled especially for routers. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
用于启用伪装的外部网络,尤其适用于路由器。 您不相信网络上的其他计算机不会损害您的计算机。 仅接受选定的传入连接。

  • dmz

For computers in your demilitarized zone that are publicly-accessible with limited access to your internal network. Only selected incoming connections are accepted.
对于您的非军事区内的计算机可以公开访问,但对您的内部网络的访问权限有限。 仅接受选定的传入连接。

  • work

For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.

  • home

For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
用于工作区域。 您主要相信网络上的其他计算机不会损害您的计算机。 仅接受选定的传入连接。

  • internal

For use on internal networks. You mostly trust the other computers on the networks to not harm your computer. Only selected incoming connections are accepted.
用于内部网络。 您主要相信网络上的其他计算机不会损害您的计算机。 仅接受选定的传入连接。

  • trusted 信任度最高

All network connections are accepted.
接受所有网络连接。相当于关闭防火墙

  • firewalld使用zone(区域)概念,相当于Windows的专用网络公用网络等, 其实质是一套套规则, 方便切换
  • firewalld的每个zone指定了target, 就是iptables的target
  • firewalld的zone指定了端口port,和服务service
    可以通过指定端口放行数据包,也可以使用service指定的端口放行数据包
    zone可以直接管理端口, 也可以通过service间接管理端口
#mermaid-svg-JSfQXG9btibBcqSB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JSfQXG9btibBcqSB .error-icon{fill:#552222;}#mermaid-svg-JSfQXG9btibBcqSB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JSfQXG9btibBcqSB .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-JSfQXG9btibBcqSB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JSfQXG9btibBcqSB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JSfQXG9btibBcqSB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JSfQXG9btibBcqSB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JSfQXG9btibBcqSB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JSfQXG9btibBcqSB .marker.cross{stroke:#333333;}#mermaid-svg-JSfQXG9btibBcqSB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JSfQXG9btibBcqSB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JSfQXG9btibBcqSB .cluster-label text{fill:#333;}#mermaid-svg-JSfQXG9btibBcqSB .cluster-label span{color:#333;}#mermaid-svg-JSfQXG9btibBcqSB .label text,#mermaid-svg-JSfQXG9btibBcqSB span{fill:#333;color:#333;}#mermaid-svg-JSfQXG9btibBcqSB .node rect,#mermaid-svg-JSfQXG9btibBcqSB .node circle,#mermaid-svg-JSfQXG9btibBcqSB .node ellipse,#mermaid-svg-JSfQXG9btibBcqSB .node polygon,#mermaid-svg-JSfQXG9btibBcqSB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JSfQXG9btibBcqSB .node .label{text-align:center;}#mermaid-svg-JSfQXG9btibBcqSB .node.clickable{cursor:pointer;}#mermaid-svg-JSfQXG9btibBcqSB .arrowheadPath{fill:#333333;}#mermaid-svg-JSfQXG9btibBcqSB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JSfQXG9btibBcqSB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JSfQXG9btibBcqSB .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-JSfQXG9btibBcqSB .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-JSfQXG9btibBcqSB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JSfQXG9btibBcqSB .cluster text{fill:#333;}#mermaid-svg-JSfQXG9btibBcqSB .cluster span{color:#333;}#mermaid-svg-JSfQXG9btibBcqSB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JSfQXG9btibBcqSB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

zone直接包含IP协议端口
zone
firewalld的区域
zone
管理IP协议端口
service
zone包含service
service包含IP协议端口

firewalld可以指定一个default zone, 还可以给每个网卡接口interface指定一个zone,
当网卡没有指定zone时,默认zone对该网卡生效
可以
firewall-cmd --get-default-zone查看默认zone ,
firewall-offline-cmd --get-default-zone查看默认zone ,
firewall-cmd --get-active-zone查看网卡接口zone
不能用firewall-offline-cmd --get-active-zone

  • 刚安装的CentOS7 的默认的zone和主网卡的zone 都是public
  • 刚安装的Fedora 36 WorkStation版 的默认的zone和主网卡的zone 都是FedoraWorkstation
    说明zone也并不局限于上面那几个
  • ens33是Vmware的默认主网卡名称, enp0s3是VirtualBox默认的主网卡名称
查看 active活动zone 和 default默认zone
查看当前活动zone

查看当前活动zone只能用firewall-cmd开头 , 不能firewall-offline-cmd开头

sudo firewall-cmd --get-active-zone   ###  查看当前活动zone
查看默认zone

查看默认zone既可以用firewall-cmd开头 , 也能firewall-offline-cmd开头

sudo firewall-cmd --get-default-zone   ###  查看默认zone
sudo firewall-offline-cmd --get-default-zone   ###  查看默认zone
查看有哪些zone可选

firewalld用xml文件保存zone模板,

  • 可以到/usr/lib/firewalld/zones目录查看预定义的zone模板 或自定义的zone模板目录 /etc/firewalld/zones查看自定义的模板,自定义模板的目录一开始是空文件夹,如果对区域进行了修改,就会在自定义文件夹 /etc/firewalld/zones出现同名的xml,预定义文件夹/usr/lib/firewalld/zones的xml不会变化. 新增的自定义名称的zone也会出现在 /etc/firewalld/zones
cd /usr/lib/firewalld/zones     ### 预定义的zone模板的目录
ls /usr/lib/firewalld/zones
cd /etc/firewalld/zones       ### 自定义的zone模板的目录 , 该目录模板优先级高于预定义目录的模板
ls /usr/lib/firewalld/zones cat /usr/lib/firewalld/zones/public.xml
cat /etc/firewalld/zones/public.xml   ###  修改public才会出现
  • 也可以用命令查看有哪些zone
    --get-zones 列出预定义和自定义的所有zone的名称
    --list-all-zones 列出预定义和自定义的所有zone的详情
列出已定义的zone的名称 --get-zones , 只显示名称

列出已定义的zone --get-zones , 包括预定义和自定义的zone , 只显示名称

sudo firewall-cmd --get-zones   ###  列出所有区域的名称
sudo firewall-offline-cmd --get-zones   ###  列出所有区域的名称

例如

  • CentOS 7 最小安装版

    sudo firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
    

    CentOS 7 默认使用了firewalld预定义的zone中的public

  • Fedora 36 WorkStation版
    sudo firewall-cmd --get-zones
    FedoraServer FedoraWorkstation block dmz drop external home internal libvirt nm-shared public trusted work
    

    Fedora 36 WorkStation版 默认并没有用firewalld预定义的zone , 而是自定义了一个新zone 名为 FedoraWorkstation

列出所有zone的配置详情(添加的和启用的规则) --list-all-zones
sudo firewall-cmd --list-all-zones   ###  列出所有区域的配置详情
sudo firewall-offline-cmd --list-all-zones   ###  列出所有区域的配置详情
列出默认区域 default zone 的配置详情(添加的和启用的规则) --list-all
sudo firewall-cmd --list-all   ###   列出默认区域的配置详情
sudo firewall-offline-cmd --list-all   ###   列出默认区域的配置详情
查看指定区域的配置详情

查看指定区域详情可以用--list-all --zone= 或者 --info-zone=
查看public区域的配置,添加的和启用的规则

sudo firewall-cmd --list-all --zone=public   ###  查看public区域的配置详情
sudo firewall-offline-cmd --list-all --zone=public   ###  查看public区域的配置详情
###   查看各预定义区域的配置,添加的和启用的规则
sudo firewall-cmd --zone=drop --list-all
sudo firewall-cmd --info-zone=drop
sudo firewall-offline-cmd --zone=drop --list-all
sudo firewall-offline-cmd --info-zone=dropsudo firewall-cmd --zone=block --list-all
sudo firewall-cmd --info-zone=block
sudo firewall-offline-cmd --zone=block --list-all
sudo firewall-offline-cmd --info-zone=blocksudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --info-zone=public
sudo firewall-offline-cmd --zone=public --list-all
sudo firewall-offline-cmd --info-zone=publicsudo firewall-cmd --zone=external --list-all
sudo firewall-cmd --info-zone=external
sudo firewall-offline-cmd --zone=external --list-all
sudo firewall-offline-cmd --info-zone=externalsudo firewall-cmd --zone=dmz  --list-all
sudo firewall-cmd --info-zone=dmz
sudo firewall-offline-cmd --zone=dmz  --list-all
sudo firewall-offline-cmd --info-zone=dmzsudo firewall-cmd --zone=work --list-all
sudo firewall-cmd --info-zone=work
sudo firewall-offline-cmd --zone=work --list-all
sudo firewall-offline-cmd --info-zone=worksudo firewall-cmd --zone=home --list-all
sudo firewall-cmd --info-zone=home
sudo firewall-offline-cmd --zone=home --list-all
sudo firewall-offline-cmd --info-zone=homesudo firewall-cmd --zone=internal --list-all
sudo firewall-cmd --info-zone=internal
sudo firewall-offline-cmd --zone=internal --list-all
sudo firewall-offline-cmd --info-zone=internalsudo firewall-cmd --zone=trusted --list-all
sudo firewall-cmd --info-zone=trusted
sudo firewall-offline-cmd --zone=trusted --list-all
sudo firewall-offline-cmd --info-zone=trusted###   如果没有 --zone 参数, 就显示默认zone 的规则
sudo firewall-cmd --list-all   ###   列出默认区域的配置详情
sudo firewall-offline-cmd --list-all   ###   列出默认区域的配置详情
firewalld的默认zone, 默认区域的概念

当一个网卡接口(例如lo)没有指定zone的时候, 就会使用默认zone的规则
可以用--remove-interface=选项来移除zone的interfaces对应的网卡, 使默认zone生效

查看默认zone是哪个区域
sudo firewall-cmd --get-default-zone   ### 查看默认zone是哪个区域
设置默认区域 --set-default-zone=

设置默认区域,带 --set-default-zone=的语句不用加--permanent就能永久生效, 也不能加--permanent

##  设置默认区域, 默认区域在没有区域时起作用
##  设置默认区域,带 `--set-default-zone=`的语句不用加`--permanent`就能永久生效, 也不能加`--permanent`
###  设置默认区域为drop
sudo firewall-cmd --set-default-zone=drop
sudo firewall-offline-cmd --set-default-zone=drop
###  设置默认区域为block
sudo firewall-cmd --set-default-zone=block
sudo firewall-offline-cmd --set-default-zone=block
###  设置默认区域为public
sudo firewall-cmd --set-default-zone=public
sudo firewall-offline-cmd --set-default-zone=public
###  设置默认区域为external
sudo firewall-cmd --set-default-zone=external
sudo firewall-offline-cmd --set-default-zone=external
###  设置默认区域为dmz
sudo firewall-cmd --set-default-zone=dmz
sudo firewall-offline-cmd --set-default-zone=dmz
###  设置默认区域为work
sudo firewall-cmd --set-default-zone=work
sudo firewall-offline-cmd --set-default-zone=work
###  设置默认区域为home
sudo firewall-cmd --set-default-zone=home
sudo firewall-offline-cmd --set-default-zone=home
###  设置默认区域为internal
sudo firewall-cmd --set-default-zone=internal
sudo firewall-offline-cmd --set-default-zone=internal
###  设置默认区域为trusted
sudo firewall-cmd --set-default-zone=trusted
sudo firewall-offline-cmd --set-default-zone=trusted
查看默认区域的配置,添加的和启用的规则
###   查看默认区域的配置,添加的和启用的规则
sudo firewall-cmd --list-all
sudo firewall-offline-cmd --list-all
查看默认zone放行了哪些端口
###  查看默认zone启用了哪些服务
sudo firewall-cmd --list-ports
sudo firewall-offline-cmd --list-ports
查看默认zone启用了哪些服务
###  查看默认zone启用了哪些服务
sudo firewall-cmd --list-services
sudo firewall-offline-cmd --list-services
查看当前活动的zone区域,以及对应的网卡
###   查看当前活动的zone区域,以及对应的网卡
sudo firewall-cmd --get-active-zones
查看指定网卡的zone
###  查看lo网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=lo
sudo firewall-offline-cmd --get-zone-of-interface=lo
###  查看ens33网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=ens33
sudo firewall-offline-cmd --get-zone-of-interface=ens33
###  查看enp0s3网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=enp0s3
sudo firewall-offline-cmd --get-zone-of-interface=enp0s3
移除指定网卡的zone

sudo firewall-cmd --permanent --remove-interface=网卡接口名

###  移除ens33网卡接口的zone
sudo firewall-cmd --permanent --remove-interface=ens33
sudo firewall-offline-cmd --remove-interface=ens33
###  查看ens33网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=ens33
sudo firewall-offline-cmd --get-zone-of-interface=ens33
###  移除enp0s3网卡接口的zone
sudo firewall-cmd --permanent --remove-interface=enp0s3
sudo firewall-offline-cmd --remove-interface=enp0s3
###  查看enp0s3网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=enp0s3
sudo firewall-offline-cmd --get-zone-of-interface=enp0s3
给指定网卡添加zone , 要没有zone才能添加

添加网络接口用--add-interface= , 网络接口必须没有zone
有zone的话用修改 --change-interface=

### 先移除ens33网卡接口的zone
sudo firewall-cmd --permanent --remove-interface=ens33
###  给ens33网卡接口添加pulic区域 , 要没有zone才能添加 , 加 --permanent 选项才能长久生效
sudo firewall-cmd --permanent --zone=public --add-interface=ens33
sudo firewall-offline-cmd --zone=public --add-interface=ens33
修改指定网卡的zone

修改网络接口用--change-interface=
网络接口必须有zone,才能修改, 没有zone的话,用添加--add-interface=
修改ens33网卡接口的zone为public

###  修改ens33网卡接口的zone为public , 加 --permanent 选项才能长久生效
sudo firewall-cmd --permanent --zone=public --change-interface=ens33
###  查看ens33网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=ens33

修改ens33网卡接口的zone为internal

###  修改ens33网卡接口的zone为internal , 加 --permanent 选项才能长久生效
sudo firewall-cmd --permanent --zone=internal --change-interface=ens33
###  查看ens33网卡接口的zone
sudo firewall-cmd --get-zone-of-interface=ens33
新增自定zone 删除zone

新增zone和删除zone的语法对比

  • 新增zone : --new-zone=
  • 删除zone : --delete-zone=
  • 新增zone : firewall-cmd --permanent --new-zone=自定义新zone名
  • 删除zone : firewall-cmd --permanent --delete-zone=Zone名称
创建自定义的新区域

创建新区域语法firewall-cmd --new-zone=自定义zone名称 --permanent
创建新区域后要firewall-cmd --reload重新加载,或重启服务才起效

###  创建自定义的新zone , 取名NewCustomZone001
sudo firewall-cmd --new-zone=NewCustomZone001 --permanent
###  创建新区域后要重新加载或重启服务才起效 , 重新加载firewalld, 不能在firewalld服务处于停止状态的时候执行
sudo firewall-cmd --reload
###  列出所有区域的名称
sudo firewall-cmd --get-zones
###  创建自定义的新zone , 取名NewCustomZone001
sudo firewall-cmd --new-zone=NewCustomZone001 --permanent
###  列出所有区域的名称
sudo firewall-cmd --get-zones
###  列出所有区域的配置
sudo firewall-cmd --list-all-zones
###  创建新区域后要重新加载或重启服务才起效 , 重新加载firewalld, 不能在firewalld服务处于停止状态的时候执行
sudo firewall-cmd --reload
###  列出所有区域的名称
sudo firewall-cmd --get-zones
###  列出所有区域的配置
sudo firewall-cmd --list-all-zones
删除zone --delete-zone=
###  按名称删除zone
sudo firewall-cmd --permanent --delete-zone=Zone名称

创建删除zone测试

## 创建zone,删除zone 的测试
###  创建自定义的新zone , 取名NewCustomZone001
sudo firewall-cmd --new-zone=NewCustomZone001 --permanent
###  列出所有区域的名称
sudo firewall-cmd --get-zones
###  创建新区域后要重新加载或重启服务才起效 , 重新加载firewalld, 不能在firewalld服务处于停止状态的时候执行
sudo firewall-cmd --reload
###  列出所有区域的名称
sudo firewall-cmd --get-zones
###  按名称删除zone
sudo firewall-cmd --delete-zone=NewCustomZone001  --permanent
###  列出所有区域的名称
sudo firewall-cmd --get-zones
###  删除区域后要重新加载或重启服务才起效 , 重新加载firewalld, 不能在firewalld服务处于停止状态的时候执行
sudo firewall-cmd --reload
###  列出所有区域的名称
sudo firewall-cmd --get-zones

firewalld的端口操作

firewalld可以

  • 直接在zone中添加端口 --zone= --add-port=
  • 先给zone添加service服务 --zone= --add-service=,
    再给service添加端口, --service= --add-port=
###  开发zone的端口
sudo firewall-cmd --permanent --zone=myzone --add-port=80/tcp
sudo firewall-cmd --permanent --zone=myzone --add-port=3306-3399/tcp
sudo firewall-offline-cmd --zone=myzone --add-port=80/tcp
sudo firewall-offline-cmd --zone=myzone --add-port=3306-3399/tcp
###  开发service的端口
sudo firewall-cmd --permanent --service=myservice --add-port=80/tcp
sudo firewall-cmd --permanent --service=myservice --add-port=3306-3399/tcp
sudo firewall-offline-cmd --service=myservice --add-port=80/tcp
sudo firewall-offline-cmd --service=myservice --add-port=3306-3399/tcp
查看firewalld开启的端口
sudo firewall-cmd --list-ports  ###  列出 默认zone 开放的端口
sudo firewall-cmd --list-ports --zone=public  ### 列出 名为public的zone 开放的端口
sudo firewall-offline-cmd --list-ports  ###  列出 默认zone 开放的端口
sudo firewall-offline-cmd --list-ports --zone=public  ### 列出 名为public的zone 开放的端口
sudo firewall-offline-cmd --list-ports --service=mysql  ### 列出 名为mysql的service 开放的端口

注意,即便没有22端口,也不代表22端口没有放行
发现firewalld默认的public区没有开启任何端口,但是却允许ssh,
原因是public区开启了ssh服务
ssh配置模板文件之/usr/lib/firewalld/services/ssh.xml

Linux的firewalld防火墙学习笔记220929相关推荐

  1. Linux性能优化实战学习笔记:第十讲==中断

    Linux性能优化实战学习笔记:第十讲 一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 ? 1 2 3 4 5 6 7 wget http://www.tcp ...

  2. Linux系统firewalld防火墙的进阶操作(日志保存 IP网段 ssh服务)

    文章目录 一.前文 二.打开日志 2.1 修改配置 2.2 测试验证 2.3 日志保存到本地 三.允许IP网段 四.关闭ssh 一.前文 基础知识请查阅:Linux系统firewalld防火墙的基本操 ...

  3. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  4. linux之awk命令学习笔记

    Linux之awk命令学习笔记 前言 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, ...

  5. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

  6. Linux C编程一站式学习笔记2

    Linux C编程一站式学习笔记 chap2 常量.变量和表达式 本书以C99为标准 一.继续hello world 加入更多注释的hello world 可以用ctrl+(shift)+v复制到vi ...

  7. 《鸟哥的Linux私房菜》学习笔记

    <鸟哥的Linux私房菜>学习笔记 这是一份学习<鸟哥的Linux私房菜>的学习笔记,记笔记的原则是,感觉平时可能会用到的 就记录的详细一些,感觉暂时用不上的,只需要知道要解决 ...

  8. 【嵌入式环境下linux内核及驱动学习笔记-(16)linux总线、设备、驱动模型之input框架】

    目录 1.Linux内核输入子系统概念导入 1.1 输入设备工作机制 1.2 运行框架 1.3 分层思想 2.驱动开发步骤 2.1 在init()或probe()函数中 2.2 在exit()或rem ...

  9. 【嵌入式环境下linux内核及驱动学习笔记-(15-1)例程】

    目录 1.在APP直接调用标准文件IO操作I2C(针对学习笔记-15的15.3节) 1.1 mail.c 1.2 mpu6050.h 1.3 mpu6050.c 1.4 Makefile 2.以外称i ...

最新文章

  1. ecplise 工具字体大小的调整
  2. RelativeLayout经常使用属性介绍
  3. 把C++类成员方法直接作为线程回调函数
  4. python爬虫成果_Python爬虫(小练习)
  5. Android和JS之间互相调用方法并传递参数
  6. linux下awk内置函数的使用(split/substr/length)
  7. TradingView 初识
  8. 嵌入式Servlet容器
  9. hdu_1861_游船出租_201402282130
  10. 【远程沟通】“云答辩”“云招聘”双管齐下,解救“最难毕业生”
  11. java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...
  12. c语言有趣的编程代码,一个有趣的小程序
  13. HashMap和HashSet的区别?
  14. 双缓冲-- double framebuffer
  15. Comsol学习——经典案例:水净化反应器
  16. Excel常用功能(持续更新)
  17. 避坑11_VScode在vue文件内template无法使用tab补齐标签
  18. python 函数基础
  19. 【NOIP2015】洛谷2668 斗地主
  20. Qt 小键盘功能实现

热门文章

  1. oracle01109,oracle解锁用户时报错ORA-01109: database not open的解决办法
  2. 成为或不成为开发者的拥护者
  3. 【Algorithm】Prim
  4. 浅析敏捷项目管理中的5大阶段
  5. 如何设计一个结构合理的java项目
  6. 「GoCN酷Go推荐」高性能内存缓存 ristretto
  7. 精读《Prisma 的使用》
  8. 亚马逊 广告接口对接 amazon advertising
  9. Eclipse安装使用
  10. python bitwise operator 位运算