合理的防火墙是您计算机抵御网络入侵的第一道防线。当您在家时,您可能位于互联网服务提供商提供的路由器内置防火墙之后。但是,当您外出时,您拥有的唯一防火墙是您计算机上运行的防火墙,因此配置和控制 Linux 计算机上的防火墙非常重要。如果您运行 Linux 服务器,了解如何管理防火墙以保护其免受本地和远程不需要的流量同样重要。
安装防火墙
许多 Linux 发行版都预装了防火墙,传统上是 iptables。它非常有效且可自定义,但配置可能很复杂。幸运的是,开发人员制作了几个前端来帮助用户控制他们的防火墙,而无需编写冗长的 iptables 规则。
在 Fedora、CentOS、Red Hat 和类似的发行版上,默认安装的防火墙软件是 firewalld,它通过 firewall-cmd 命令进行配置和控制。在 Debian 和大多数其他发行版上,可以从您的软件仓库安装 firewalld。Ubuntu 附带了 Uncomplicated Firewall (ufw),因此要使用 firewalld,您必须启用 universe 仓库
$ sudo add-apt-repository universe
$ sudo apt install firewalld
您还必须停用 ufw
$ sudo systemctl disable ufw
没有理由不使用 ufw。它是一个出色的防火墙前端。但是,本文重点介绍 firewalld,因为它具有广泛的可用性并集成到 systemd 中,systemd 几乎随每个发行版一起提供。
无论您的发行版是什么,为了使防火墙有效,它必须处于活动状态,并且应该在启动时加载
$ sudo systemctl enable --now firewalld
了解防火墙区域
Firewalld 旨在使防火墙配置尽可能简单。它通过建立区域来实现这一点。区域是一组明智的、通用的规则,适合大多数用户的日常需求。默认情况下有九个
- trusted: 接受所有网络连接。这是最不谨慎的防火墙设置,应仅在受信任的环境中使用,例如测试实验室或家庭网络中的每个人都已知是友好的家庭。
- home, work, internal: 在这三个区域中,大多数传入连接都被接受。它们各自排除通常不期望活动的端口上的流量。它们中的任何一个都适用于家庭环境,在家庭环境中没有理由期望网络流量会混淆端口,并且您通常信任网络上的其他用户。
- public: 用于公共区域。这是一个谨慎的设置,适用于您不信任网络上其他计算机的时候。仅接受选定的常见且大多安全的传入连接。
- dmz: DMZ 代表非军事区。此区域适用于可公开访问的计算机,这些计算机位于组织的外部网络上,对内部网络的访问受到限制。对于个人计算机,这通常不是一个有用的区域,但对于某些类型的服务器来说,这是一个重要的选项。
- external: 用于启用伪装的外部网络(意味着您的专用网络的地址被映射到公共 IP 地址并隐藏在其后)。与 dmz 区域类似,仅接受选定的传入连接,包括 SSH。
- block: 仅可能进行此系统内发起的网络连接,并且所有传入网络连接都将被拒绝,并显示 icmp-host-prohibited 消息。这是一个极其谨慎的设置,对于不受信任或充满敌意的环境中的某些类型的服务器或个人计算机来说,这是一个重要的选项。
- drop: 任何和所有传入网络数据包都被丢弃,没有回复。仅可能进行传出网络连接。唯一比此设置更谨慎的设置是关闭您的 WiFi 并拔下您的以太网电缆。
您可以通过查看 /usr/lib/firewalld/zones 中的配置文件来阅读有关每个区域以及您的发行版或系统管理员定义的任何其他区域的信息。例如,这是 Fedora 31 附带的 FedoraWorkstation 区域
$ cat /usr/lib/firewalld/zones/FedoraWorkstation.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Fedora Workstation</short>
<description>Unsolicited incoming network packets are rejected from port 1 to 1024, except for select network services. Incoming packets that are related to outgoing network connections are accepted. Outgoing network connections are allowed.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<service name="samba-client"/>
<port protocol="udp" port="1025-65535"/>
<port protocol="tcp" port="1025-65535"/>
</zone>
获取您当前的区域
您可以使用 --get-active-zones 选项随时查看您所在的区域
$ sudo firewall-cmd --get-active-zones
作为响应,您会收到活动区域的名称以及分配给它的网络接口。在笔记本电脑上,这通常意味着您的 WiFi 卡位于默认区域中
FedoraWorkstation
interfaces: wlp61s0
更改您当前的区域
要更改您的区域,请将您的网络接口重新分配到不同的区域。例如,要将示例 wlp61s0 卡更改为 public 区域
$ sudo firewall-cmd --change-interface=wlp61s0 \
--zone=public
您可以随时出于任何原因更改接口的活动区域——无论您是要去咖啡馆并感觉需要提高笔记本电脑的安全策略,还是要上班并需要打开一些端口才能进入内网,还是出于任何其他原因。当您按下 Tab 键时,firewall-cmd 的选项会自动完成,因此只要您记住关键词“change”和“zone”,您就可以摸索命令直到记住它。
了解更多
您的防火墙还有很多事情可以做,包括自定义现有区域、设置默认区域等等。您对防火墙越熟悉,您的在线活动就越安全,因此我们创建了一个 速查表,以方便快速参考。
2 条评论