firewalld 操作指令

目录

一、终端管理工具——firewall-cmd

1.查看 firewalld 服务当前所使用的区域

2.查询指定网卡在 firewalld 服务中绑定的区域

3.把网卡默认区域修改为 external,并立即生效

4.把 firewalld 服务的默认区域设置为 public

5. 查询 SSH 和 HTTPS 协议的流量是否允许放行

6.把 HTTPS 协议的流量设置为永久允许放行,并立即生效

7.把 HTTP 协议的流量设置为永久拒绝,并立即生效

8.把访问 8080 和 8081 端口的流量策略设置为允许,但仅限当前生效

9.把原本访问本机 888 端口的流量转发到 22 端口,要且求当前和长期均有效


        RHEL 8 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。

        相较于传统的防火墙管理配置工具,firewald支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 frewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。firewalld中常见的区域名称(默认为public)以及相应的策略规则如下:

firewalld 中常用的区域名称及策略规则
区域默认规则策略
trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、smba-client、dhcpv6-client 服务相关,则允许流量
internal等同于home区域
work拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client 服务相关,则允许流量
external拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

一、终端管理工具——firewall-cmd

        firewall-cmd命令的功能是用于防火墙策略管理,是firewalld服务的配置工具。使用firewall-cmd命令修改的防火墙策略会立即生效,但重启后失效,因此推荐要加上permanent参数。

语法格式:firewall-cmd [参数]

常用参数

--state显示当前服务运行状态
--zone=public --list-ports查看所有打开运行的端口
--permanent策略写入到永久生效表中
--reload不重启立即加载
--list-all-zones查看区域信息情况
--panic-on拒绝所有包
--panic-off取消拒绝状态
--query-panic查看是否拒绝
--runtime当前立即生效,重启后失效
--set-default-zone=<区域名称>设置默认的区域,使其永久生效
--add-port=<端口号/协议>设置默认区域允许该端口的流量
--add-service=<服务名>设置默认区域允许该服务的流量
--remove-service=<服务名>设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
--add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称>将某个网卡与区域进行关联

参考实例

1.查看 firewalld 服务当前所使用的区域

[root@RHEL8 ~]# firewall-cmd --get-default-zone 
public

2.查询指定网卡在 firewalld 服务中绑定的区域

        在生产环境中,服务器大多不止有一块网卡。一般来说,充当网关的服务器有两块网卡,一
块对公网,另外一块对内网,那么这两块网卡在审查流量时所用的策略肯定也是不一致的。因此,
可以根据网卡针对的流量来源,为网卡绑定不同的区域,实现对防火墙策略的灵活管控。

[root@RHEL8 ~]# firewall-cmd --get-zone-of-interface=ens160
public

3.把网卡默认区域修改为 external,并立即生效

[root@RHEL8 ~]# firewall-cmd --permanent --zone=external --change-interface=ens160
The interface is under control of NetworkManager, setting zone to 'external'.
success

[root@RHEL8 ~]# firewall-cmd --reload 
success

[root@RHEL8 ~]# firewall-cmd --get-zone-of-interface=ens160
external

4.把 firewalld 服务的默认区域设置为 public

        默认区域也叫全局配置,指的是对所有网卡都生效的配置,优先级较低。在下面的代码中可以看到,当前默认区域为public,而ens160网卡的区域为external。此时便是以网卡的区名称为准。
        通俗来说,默认区域就是一种通用的政策。例如,食堂为所有人准备了一次性套具,而环保
主义者则会自己携带碗筷。如果您自带了碗筷,就可以用自己的;反之就用食堂统一提供的。

[root@RHEL8 ~]# firewall-cmd --set-default-zone=public 
Warning: ZONE_ALREADY_SET: public
success

[root@RHEL8 ~]# firewall-cmd --get-default-zone 
public

[root@RHEL8 ~]# firewall-cmd --get-zone-of-interface=ens160
external

5. 查询 SSH 和 HTTPS 协议的流量是否允许放行

        在工作中可以不使用 --zone 参数指定区域名称,firewall-cmd 命令会自动依据默认区域进行查询,从而减少用户输入量。但是,如果默认区域与网卡所绑定的不一致时,就会发生冲突,因此规范写法的 zone参数是一定要加的

[root@RHEL8 ~]# firewall-cmd --zone=public --query-service=ssh
yes

[root@RHEL8 ~]# firewall-cmd --zone=public --query-service=https
no

6.把 HTTPS 协议的流量设置为永久允许放行,并立即生效

[root@RHEL8 ~]# firewall-cmd --permanent --zone=public --add-service=https
success

[root@RHEL8 ~]# firewall-cmd --reload 
success

[root@RHEL8 ~]# firewall-cmd --zone=public --query-service=https
yes

7.把 HTTP 协议的流量设置为永久拒绝,并立即生效

        由于在默认情况下HTTP协议的流量就没有被允许,所以会有“Warning:NOT_ENABLED:
http”这样的提示信息,因此对实际提作没有影响。

[root@RHEL8 ~]# firewall-cmd --permanent --zone=public --remove-service=http
Warning: NOT_ENABLED: http
success

[root@RHEL8 ~]# firewall-cmd --reload 
success

8.把访问 8080 和 8081 端口的流量策略设置为允许,但仅限当前生效

[root@RHEL8 ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success

[root@RHEL8 ~]# firewall-cmd --zone=public --list-ports 
8080-8081/tcp

9.把原本访问本机 888 端口的流量转发到 22 端口,要且求当前和长期均有效

        使用firewall-cmd命令实现端口转发的格式有点长,这里为大家总结好了:

firewall-cmd --permanent--zone=<区域> --add-forward-port=port=<源端口号>:proto=
<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

        上述命令中的目标IP地址一般是服务器本机的IP地址:

[root@RHEL8 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.9.135
success

[root@RHEL8 ~]# firewall-cmd --reload 
success

        在客户端使用ssh命令尝试访问192.168.10.10主机的888端口,访问成功:

[root@RHEL8 ~]# ssh -p 888 192.168.9.135
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stars.Sky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值