本文介绍在Fedora Workstation系统中使用Firewall-cmd管理网络服务的方法,将查看如何添加、删除和列出服务、协议和端口以阻止或允许它们。可先参考在Fedora的命令行中控制防火墙方面的内容,请阅读在Fedora系统中使用firewall-cmd更改防火墙设置一文。
前言 首先,最好检查防火墙的状态,看看防火墙是否正在运行,如上面的参考文章,您可以通过使用状态选项(firewall-cmd –state)来执行此操作。 下一步是获取所需网络接口的区域,例如,我使用具有两个网络接口的桌面:代表我的实际网卡的物理接口(enp0s3)和由KVM等虚拟化软件使用的虚拟接口(virbr0),要查看哪些区域处于活动状态,请运行firewall-cmd –get-active-zones。 现在,您知道您感兴趣的区域,您可以使用firewall-cmd –info-zone=FedoraWorkstation列出该区域的规则。
阅读区信息 要显示特定区域的信息,请运行firewall-cmd –zone=ZoneName –list-all,或仅使用以下命令显示默认区域的信息: [dan@localhost ~]$ firewall-cmd --list-all FedoraWorkstation (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: dhcpv6-client mdns samba-client ssh ports: 1025-65535/udp 1025-65535/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: 现在,让我们研究输出信息,第一行显示以下信息适用于哪个区域以及当前是否正在使用该区域。 target,默认仅告诉我们这是默认区域,可以通过–set-default-zone=ZoneName和–get-default-zone进行设置或检索。 icmp-block-inversion,指示是否阻止ICMP请求,例如,如果计算机响应来自网络上其他计算机的ping请求,interfaces字段显示采用此区域的所有接口。
处理服务,端口和协议 现在专注于服务、端口和协议行,默认情况下,防火墙将阻止所有端口、服务和协议,只允许列出的。 在这种情况下,您可以看到允许的服务是非常基本的客户端服务,例如,访问网络上的共享文件夹(samba客户端),与DNS服务器通信或通过SSH(ssh服务)连接到计算机,您可以将服务视为与端口组合的协议,例如ssh服务使用SSH协议,并且按照惯例使用22端口,通过允许ssh服务,您实际上所做的就是允许传入的连接在默认22端口上使用ssh协议。 注意,根据经验法则,在名称中带有客户词的服务是指传出连接,即,您使用IP作为源进行的连接将传到外部,而与SSH服务相反,接受传入的连接(侦听来自您外部的连接)。 您可以在文件/etc/services中查找服务,例如,如果您想知道这些服务使用什么端口和协议: [dan@localhost ~]$ cat /etc/services | grep ssh ssh 22/tcp # The Secure Shell (SSH) Protocol ssh 22/udp # The Secure Shell (SSH) Protocol 您可以看到SSH同时使用TCP和UDP端口22,此外,如果希望查看所有可用服务,只需使用firewall-cmd –get-services。
打开端口 如果要阻止端口、服务或协议,请确保在此处未列出所有操作,通过扩展,如果要允许服务,则需要将其添加到列表中。 假设您要打开5000端口以进行TCP连接,为此,请运行: sudo firewall-cmd --zone=FedorwaWorkstation --permanent --add-port=5000/tcp 请注意,您需要指定规则适用的区域,添加规则时,还需要如上所述指定它是TCP还是UDP端口,永久参数将规则设置为即使系统重新启动后也可以保留。 再次查看您所在区域的信息: [dan@localhost ~]$ firewall-cmd --list-all FedoraWorkstation (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: dhcpv6-client mdns samba-client ssh ports: 1025-65535/udp 1025-65535/tcp 5000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: 同样,如果您希望从列表中删除此端口,请运行: sudo firewall-cmd --zone=FedorwaWorkstation --permanent --remove-port=5000/tcp 服务和协议也可以使用相同的删除(–remove-protocol、–remove-service)和添加(–add-protocol、–add-service)选项。
相关主题 |