Miklix

如何在 Ubuntu 服务器上设置防火墙

已出版: 2025年2月15日 UTC 21:34:39
最后更新 2026年1月12日 UTC 08:37:33

本文解释并提供了一些示例,说明如何使用 ufw(Uncomplicated FireWall 的缩写)在 GNU/Linux 上设置防火墙——这个名字很贴切,它确实是一种非常简单的方法,可以确保您不会打开比需要的更多的端口。


为了使尽可能多的人能够访问本页面,本页面由英文机译而成。遗憾的是,机器翻译技术尚不完善,因此可能会出现错误。如果您愿意,可以在此处查看原始英文版本:

How to Set Up a Firewall on Ubuntu Server

本文信息基于 Ubuntu Server 14.04 x64,可能不适用于其他版本。(更新:我确认本文信息在 Ubuntu Server 24.04 上基本仍然有效,但在过去的十年中,ufw 防火墙变得更加“智能”,它为常用服务器应用程序提供了配置文件(例如,您可以启用“Nginx full”而不是分别启用 80 和 443 端口),因此不再需要禁用/启用整个防火墙才能应用新规则。)

我刚开始接触 GNU/Linux(Ubuntu)服务器时,配置防火墙需要手动创建和维护一个可能非常复杂的 iptables 配置文件。不过,我最近发现了 ufw,它是 Uncomplicated Firewall(简易防火墙)的缩写——它确实非常简单 :-)

我的 Ubuntu Server 14.04 安装包里已经预装了 ufw,但如果你的没有,只需从软件仓库安装即可:

sudo apt-get install ufw

UFW 实际上只是一个简化 iptables 配置的工具——底层仍然是 iptables 和 Linux 内核防火墙在执行过滤操作,因此 ufw 的安全性并不比它们更高或更低。然而,由于 ufw 大大简化了防火墙的正确配置,它可以降低人为错误的风险,因此对于经验不足的管理员来说可能更安全。

如果您的服务器同时配置了 IPv4 和 IPv6,请确保 UFW 也启用了 IPv6。编辑 `/etc/default/ufw` 文件,查找包含 `IPV6=yes` 的行。我的服务器上已经存在这一行,但如果不存在或显示为 `no`,则需要进行编辑。

然后只需使用命令行启用您想要开放的端口即可。如果您是通过 SSH 连接到服务器,请确保也允许 SSH 访问,否则可能会中断您的连接,甚至在您启用 SSH 时将您锁定在服务器之外——这取决于您是否拥有服务器的物理访问权限,这可能会有点不方便 ;-)

例如,如果您使用标准端口 22 上的 ssh,并且您正在配置一个同时支持未加密(端口 80 上的 HTTP)和加密(端口 443 上的 HTTPS)连接的 Web 服务器,则您需要发出以下命令来配置 ufw:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

如果需要更多规则,只需按照上述步骤添加即可。

如果您拥有静态 IP 地址,并且只需要从一个位置通过 SSH 连接,您也可以像这样将 SSH 连接限制为单个源地址:

sudo ufw allow from 192.168.0.1 to any port 22

当然,您也可以输入您自己的 IP 地址。

完成后,输入以下命令启用ufw:

sudo ufw enable

搞定!防火墙已启动,会在您重启服务器时自动启动 :-)

如果您更改了ufw配置,可能需要先禁用再重新启用它才能使更改生效,如下所示:

sudo ufw disable
sudo ufw enable

要查看当前配置,只需输入:

sudo ufw status

如果 ufw 未启用,则会显示“未激活”消息;否则,将列出当前定义的规则。

分享至 Bluesky在 Facebook 上分享在 LinkedIn 上分享在 Tumblr 上分享分享至 X在 LinkedIn 上分享在Pinterest上固定

Mikkel Christensen

关于作者

Mikkel Christensen
迈克尔 是 miklix.com 的创建者和所有者。他拥有 20 多年的专业计算机程序员/软件开发人员经验,目前全职受雇于一家大型欧洲 IT 公司。不写博客时,他把业余时间花在各种兴趣、爱好和活动上,这在一定程度上反映在本网站涵盖的各种主题上。