每个Fedora系统都内置有防火墙,它是Linux内核内部网络功能的一部分,本文向您展示了如何使用firewall-cmd更改其设置,以确保系统的安全性。
网络基础简介 本文无法教您有关计算机网络的所有知识,但是,一些基本知识足以帮助您入门。 网络上的任何计算机都具有IP地址,可以将其视为可以正确路由数据的地址,每台计算机还具有一组端口,编号为0-65535,这些不是物理端口,相反,您可以将它们视为地址处的一组连接点。 在许多情况下,端口是标准数字或范围,具体取决于期望应答的应用程序,例如,Web服务器通常为非安全HTTP通信的80端口,或为安全HTTPS的443端口。1024下的端口号用于系统和众所周知的用途,端口1024-49151已注册,端口49152及更高版本通常是临时的(仅短时间使用)。 Internet数据传输的两个最常见协议(TCP和UDP)中的每一个都具有此组端口,当重要的是要接收所有数据,并且如果数据到达的顺序不正确时,请以正确的顺序重组TCP,UDP用于对时间更敏感的服务,可以承受丢失一些数据的风险。 在系统上运行的应用程序(例如Web服务器)保留一个或多个端口(例如80和443),然后,在网络通信期间,主机在源地址和端口与目的地址和端口之间建立连接。 网络防火墙可以根据诸如地址,端口或其他条件之类的规则来阻止或允许网络数据的传输,firewall-cmd实用程序使您可以与规则集进行交互,以查看或更改防火墙的工作方式。 参考:firewall-cmd命令_Linux firewall-cmd命令使用详解:永久修改防火墙规则。
防火墙区域 要验证防火墙是否正在运行,请将此命令与sudo一起使用(您可以在运行PolicyKit的环境中运行firewall-cmd而不使用sudo命令): $ sudo firewall-cmd --state running 防火墙服务支持任意数量的区域,每个区域可以具有自己的设置和保护规则,此外,每个网络接口都可以单独放置在任何区域中,Fedora Workstation上面向外部接口(例如wifi或有线网卡)的默认区域是FedoraWorkstation区域。 要查看哪些区域处于活动状态,请使用–get-active-zones标志,在此系统上,有两个网络接口,一个有线以太网卡wlp2s0和一个虚拟化(libvirt)桥接接口virbr0: $ sudo firewall-cmd --get-active-zones FedoraWorkstation interfaces: wlp2s0 libvirt interfaces: virbr0 要查看默认区域或所有定义的区域: $ sudo firewall-cmd --get-default-zone FedoraWorkstation $ sudo firewall-cmd --get-zones FedoraServer FedoraWorkstation block dmz drop external home internal libvirt public trusted work 要查看防火墙允许其他系统在默认区域中访问的服务,请使用–list-services标志,这是来自定制系统的示例,您可能会看到不同的结果: $ sudo firewall-cmd --list-services dhcpv6-client mdns samba-client ssh 该系统具有四个公开的服务,每个端口都有一个众所周知的端口号,防火墙通过名称识别它们,例如,ssh服务与22端口关联。 要查看当前区域中防火墙的其他端口设置,请使用–list-ports标志,顺便说一句,您始终可以声明要检查的区域: $ sudo firewall-cmd --list-ports --zone=FedoraWorkstation 1025-65535/udp 1025-65535/tcp 这表明默认情况下,1025端口及更高版本(UDP和TCP)都处于打开状态。
更改区域、端口和服务 上面的设置是设计决策,它确保新手用户可以使用所安装的面向网络的应用程序,如果您知道自己在做什么,并且想要一个更具保护性的默认设置,可以将界面移至FedoraServer区域,该区域禁止任何未明确允许的端口(警告:如果您通过网络使用主机,则可能会断开连接,这意味着您必须亲自转到该框进行进一步的更改): $ sudo firewall-cmd --change-interface=<ifname> --zone=FedoraServer success 注:本文不是讨论该决定的地方,该决定在Fedora社区中经过了多轮审查和辩论,欢迎您根据需要更改设置。 如果要打开属于服务的知名端口,则可以将该服务添加到默认区域(或使用–zone调整其他区域),您可以一次添加多个,此示例在80和443端口上为HTTP和HTTPS流量打开Web服务器: $ sudo firewall-cmd --add-service=http --add-service=https success 并非所有服务都已定义,但许多服务都已定义,要查看整个列表,请使用–get-services标志。 如果要添加特定的端口,也可以按编号和协议进行(您还可以根据需要组合–add-service和–add-port标志),本示例为网络启动服务打开UDP服务: $ sudo firewall-cmd --add-port=67/udp success 重要提示:如果希望您的更改在重新启动系统或重新启动Firewalld服务之后生效,则必须在命令中添加–permanent标志,此处的示例仅更改防火墙。 这些只是firewall-cmd实用程序和firewalld服务的许多功能中的一部分,其他的还可以在实践中自己摸索。
相关主题 |