什么是 UFW

  • 作者: 酷哥
  • 最后编辑: 2017年05月12日
  • 标签: Linux

一个正常运行的防火墙是保护你的服务器的第一道防线。过去,这是一件非常复杂和神秘的事情。iptables 是当今最流行的,它们需要用户花费精力去学习和理解它们。

而 UFW 是一个更容易使用的替代品。

什么是 UFW?

UFW 是 iptables 的前端。它的主要目标是让你管理防火墙像 drop-dead 一样简单,并提供一个易于使用的界面。它在 Linux 社区中得到很好的支持和流行,甚至在默认情况下安装在很多发行版中。因此,这是一个很好的方式来开始保护你的服务器。

开始之前

首先,显然,你想确保 UFW 已安装。它应该是默认安装在 Ubuntu ,但如果由于某种原因,还没有安装,你可以使用 aptitude 或 apt-get 使用以下命令安装软件包:

sudo aptitude install ufw

或者

sudo apt-get install ufw

检查状态

你可以通过输入以下内容来检查 UFW 的状态:

sudo ufw status

现在,它可能会告诉你它是无效的。当 ufw 处于活动状态时,你都会看到类似于以下内容的当前规则的列表:

status: active

使用 IPv6 与 UFW

如果你的 VPS 配置为IPv6,请确保 UFW 配置为支持 IPv6,以便配置 IPv4 和 IPv6 防火墙规则。为此,请使用以下命令打开 UFW 配置:

sudo vi /etc/default/ufw

然后确保“IPV6”设置为“yes”,如下:

IPV6=yes

保存并退出。然后使用以下命令重新启动防火墙:

sudo ufw disable
sudo ufw enable

现在,UFW 将在适当时为 IPv4 和 IPv6 配置防火墙。

设置默认值

要使设置防火墙变得更容易,首先定义一些允许和拒绝连接的默认规则。 UFW 的默认设置是拒绝所有传入连接并允许所有传出连接。这意味着任何人尝试到达你的云服务器将无法连接,而服务器内的任何应用程序将能够到达外部世界。要设置 UFW 使用的默认值,你可以使用以下命令:

sudo ufw default deny incoming

sudo ufw default allow outgoing

注意:如果你想有一点限制,你也可以拒绝所有传出的请求。这是有必要的,但是如果你有一个面向公众的云服务器,它可以帮助防止任何种类的远程 shell 连接。它确实使你的防火墙更难以管理,因为你还必须为所有传出连接设置规则。你可以通过以下方式将其设置为默认值:

sudo ufw default deny outgoing

允许连接

语法很简单。你可以通过在终端更改防火墙规则。如果我们现在打开我们的防火墙,它将拒绝所有传入的连接。如果你通过 SSH 连接到云服务器,这将是一个问题,因为你将被锁定在你的服务器之外。让我们启用到我们的服务器的 SSH 连接,以防止发生这种情况:

sudo ufw allow ssh

如你所见,添加服务的语法非常简单。 UFW 有一些默认值为常见的用途。我们上面的 SSH 命令就是一个例子。它基本上只是简写:

sudo ufw allow 22/tcp

此命令允许使用 TCP 协议在端口 22 上建立连接。如果我们的 SSH 服务器在端口 2222 上运行,我们可以使用以下命令启用连接:

sudo ufw allow 2222/tcp

我们可能还需要其他连接

现在,我们可能需要允许一些其他的连接。如果我们使用 FTP 访问保护一个 Web 服务器,我们可能需要这些命令:

sudo ufw allow www 或 sudo ufw allow 80/tcp
sudo ufw allow ftp 或 sudo ufw allow 21/tcp

你需要根据你的服务来决定打开哪些端口。再重启之前,务必小心,确保允许你的 SSH 连接。

端口范围

你也可以使用 UFW 指定端口范围。要允许端口 1000 到 2000,请使用命令:

sudo ufw allow 1000:2000/tcp

如果你想要 UDP:

sudo ufw allow 1000:2000/udp

IP 地址

你还可以指定 IP 地址。例如,如果我想允许来自特定 IP 地址(例如我的工作或家庭地址)的连接,我将使用此命令:

sudo ufw allow from 192.168.255.255

拒绝连接

我们的默认设置是拒绝所有传入连接。这使得防火墙规则更容易管理,因为我们只有选择性地允许某些端口和 IP 地址通过。但是,如果要翻转它并打开所有服务器的端口(不推荐),你可以允许所有连接,然后限制性地拒绝你不想访问的端口,将“allow”替换为“deny”命令。例如:

sudo ufw allow 80/tcp

将允许访问端口80,而:

sudo ufw deny 80/tcp

将拒绝访问端口 80。

删除规则

有两个选项可以删除规则。最直接的一种是使用以下语法:

sudo ufw delete allow ssh

正如你所看到的,我们使用命令“delete”并输入你想要消除的规则。其他示例包括:

sudo ufw delete allow 80 / tcp

要么

sudo ufw delete allow 1000:2000 / tcp

当你有长而复杂的规则时,这可能会很棘手。

一个更简单的两步替代方法是键入:

sudo ufw status numbered

这将使UFW列出编号列表中的所有当前规则。然后,我们发出命令:

sudo ufw delete [number]

其中“[number]”是来自上一个命令的行号。

打开它

在 UFW 到达我们想要的地方后,我们可以使用这个命令启用(记住:如果你通过 SSH 连接,请确保你已经设置你的 SSH 端口(通常为 22),允许接收连接):

sudo ufw enable

如果一切正常,你应该再次看到命令提示符。你可以通过键入以下内容来检查规则的状态:

sudo ufw status

要么

sudo ufw status verbose

为最详细的显示。

要关闭 UFW,请使用以下命令:

sudo ufw disable

重置

如果由于某种原因需要将云服务器的规则重置为默认设置,则可以通过键入以下命令来执行此操作:

sudo ufw reset

结论

你现在应该具有正确配置的云服务器,以限制对端口或 IP 地址子集的访问。