如何设置一个Ubuntu和Debian云服务器与UFW防火墙

了解如何设置与UFW防火墙一个Ubuntu / Debian的云服务器上。

介绍

保护您的云服务器的第一道防线之一是正常运行的防火墙。在过去,这通常是通过复杂和神秘的公用事业。这些实用程序内置了很多功能,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

To               Action      From
--               ------      ----
22               ALLOW       Anywhere

使用IPv6与UFW

如果您的VPS配置为IPv6,请确保UFW配置为支持IPv6,以便配置IPv4和IPv6防火墙规则。为此,请使用以下命令打开UFW配置:
sudo vi /etc/default/ufw
然后确保“IPV6”设置为“是”,像这样:
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 wwwsudo ufw allow 80/tcp sudo ufw allow ftpsudo 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地址子集的访问。