Ubuntu 云服务器设置 UFW 防火墙

2017-7-13 16:56 Herald 370 Ubuntu云计算Debian防火墙

介绍

保护云服务器的第一道防线是防火墙。在过去,这需要复杂和神秘的程序才能实现。那些程序内置了很多功能,比如流行的 iptables 防火墙,使用它要求用户先学习和理解它们的工作原理,它的防火墙规则可不是你随便就能猜到的。

因此,UFW 成了不错的替代选择。

UFW 是什么?

UFW (Uncomplicated Firewall) 不复杂的防火墙,它位于 iptables 的前端。其主要目标是使管理防火墙变得简单,并提供易于使用的界面。它在 Linux 社区中很受欢迎并得到了很好的支持,默认被安装在很多发行版中。

准备工作

本文假设你已经创建了基于 Ubuntu 或 Debian 操作系统的云服务器,如果你还没有云服务器,请参考下列指南创建:

同时,你要确保系统已经安装了 UFW,Ubuntu 系统通常默认集成,如果你的系统没有,请使用以下命令在终端中进行安装:

sudo aptitude install ufw

sudo apt-get install ufw

检查防火墙状态

使用以下命令即可查看 UFW 防火墙当前的状态:

sudo ufw status

现在,命令行会告诉你防火墙目前处于无效状态:

sudo ufw status
Status: inactive

在防火墙激活时,你会看到类似下面的状态:

Status: active
To               Action      From
--               ------      ----
22               ALLOW       Anywhere

启用 IPv6 支持

如果你的云服务器启用了 IPv6,则需要配置 UFW 以启用支持,编辑 UFW 配置文件:

sudo nano /etc/default/ufw

在配置文件中将 IPV6 设置为 yes

IPV6=yes

保存并退出编辑器,重启 UFW:

sudo ufw disable
sudo ufw enable

这样,UFW 就同时支持 IPv4 和 IPv6 两种协议了。

默认设置

使用一组默认规则可以快速完成防火墙的配置。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

其他需要的链接

接下来可以一并开启我们可能需要的其他连接,启用 web 服务器和 FTP 服务器访问使用命令:

sudo ufw allow wwwsudo ufw allow 80/tcp

sudo ufw allow ftpsudo ufw allow 21/tcp

具体的入站协议和端口应该根据你服务器的实际配置设置。

端口范围

可以为一个范围的端口配置 UFW 规则,例如允许 TCP 协议访问 1000 ~ 2000 范围内的端口:

sudo ufw allow 1000:2000/tcp

开放 UDP 协议则为:

sudo ufw allow 1000:2000/udp

IP 地址

如果需要允许特定的 IP 地址的入站连接:

sudo ufw allow from 192.168.255.255

禁止连接

我们的默认设置拒绝所有入站连接,这使得防火墙规则更容易管理,只需选择性地允许某些端口和 IP 地址通过。例如:

允许 tcp 协议访问 80 端口:

sudo ufw allow 80/tcp

禁止 tcp 协议访问 80 端口:

sudo ufw deny 80/tcp

删除规则

有两种删除防火墙规则的方法,最直接的方法是:

sudo ufw delete allow ssh

如上,我们在 delete 指令后面输入要删除的规则即可。还可以这样:

sudo ufw delete allow 80/tcp

sudo ufw delete allow 1000:2000/tcp

如果规则又长又复杂,问题就比较棘手了。这里有一个更简单的方法,需要分成两个步骤:

sudo ufw status numbered

上面的命令会将所有防火墙规则以数字列表形式列出来,然后使用以下命令删除规则:

sudo ufw delete [number]

请将 [number] 替换成规则列表对应的数字序号。

启用防火墙

UFW 防火墙规则配置完毕后,使用以下命令启用防火墙(如果你通过 SSH 管理服务器,请务必须确保设置开放了 SSH 的入站连接):

sudo ufw enable

防火墙启用后,再次查看状态:

sudo ufw status

或查看状态详情:

sudo ufw status verbose

使用以下命令关闭防火墙:

sudo ufw disable

重置设置

无论出于何种原因,你希望将云服务器的防火墙规则重置为默认状态,使用以下命令:

sudo ufw reset

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '2545' }}

回复 {{ reply_to }}