Miklix

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

已出版: 2025年2月15日 UTC 21:34:39

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


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

How to Set Up a Firewall on Ubuntu Server

本文中的信息基于 Ubuntu Server 14.04 x64。它可能适用于其他版本,也可能不适用。(更新:我可以确认本文中的信息在 Ubuntu Server 24.04 中仍然有效且可用,但在这 10 年中,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 使正确配置防火墙变得容易得多,它可以降低人为错误的风险,因此对于缺乏经验的管理员来说可能更安全。

如果您的服务器配置了 IPv6 和 IPv4,请确保也为 UFW 启用了此功能。编辑文件/etc/default/ufw并查找一行IPV6=yes 。在我的安装中它已经存在,但如果没有或显示为 no,您应该编辑它

然后只需使用命令提示符启用您想要打开的端口即可。如果您通过 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上固定

米克尔·邦·克里斯滕森

关于作者

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