firewalld 操作指令

导读:本篇文章讲解 firewalld 操作指令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

一、终端管理工具——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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/74664.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!