在Ubuntu 18.04设置UFW防火墙

在Ubuntu 18.04设置UFW防火墙
在Ubuntu 18.04设置UFW防火墙

UFW(即简单防火墙)是iptables 的一个接口,旨在简化防火墙的配置过程。虽然 iptables 是一种可靠且灵活的工具,但对于初学者而言,仍然不知道该如何使用它来正确配置防火墙。UFW可能是一个相对友好的选择。本教程中,我们将介绍如何在Ubuntu 18.04 系统上设置 UFW 防火墙。

前提条件

  • Ubuntu 18.04 系统;
  • 拥有sudo权限的非root用户;
  • 已经安装了ufw;如未安装ufw,执行 sudo apt install ufw 安装。

第一步 — 配置 UFW 开启IPV6

如果我们的Ubuntu服务器启用了IPv6,也需要将UFW配置为开启支持IPv6。使用编辑器打开配置文件:

sudo nano /etc/default/ufw

在文件中,将 IPV6 的值设置为 “yes”:

/etc/default/ufw

IPV6=yes

保存并关闭文件。在UFW启用后,它将被写入IPv4和IPv6防火墙规则。但是,在启用UFW之前,我们要确保已将防火墙配置为允许通过SSH连接。

第二步— 设置默认规则

默认情况下,UFW拒绝所有输入连接并允许所有输出连接。这意味着任何试图访问服务器的人都将无法连接,而服务器中的任何应用程序都将能够与外界通信。

我们先将UFW规则重新设置为默认值,这样我们就可以完全从初始状态开始进行操作。执行以下命令:

sudo ufw default deny incoming
sudo ufw default allow outgoing

第三步 — 开启SSH连接

如果现在启用UFW防火墙,它将拒绝所有传入连接。所以我们需要创建相应的规则,允许合法的Http传入连接。如果我们使用的是云服务器,还需要允许SSH连接,以便可以在本地管理云服务器。

配置服务器允许SSH连接:

sudo ufw allow ssh

通过创建这条防火墙规则,服务器将允许22端口上的所有连接。

我们也可以直接允许22端口的连接,这样可以达到与上面相同的效果:

sudo ufw allow 22

如果已经将SSH配置为使用其他端口,则必须开放相应的端口。例如,如果将SSH端口设置为2222,则需要开放2222端口:

sudo ufw allow 2222

经过前面的配置,我们的防火墙已经允许SSH连接,我们现在可以启用UFW了。

第四步 — 启动 UFW

要启动 UFW, 允许如下命令:

sudo ufw enable

执行后,我们将收到一条警告信息,指出该命令可能会导致SSH无法连接。因为我们已经设置了允许SSH连接的防火墙规则,因此我们输入“Y”然后回车确认。

UFW防火墙现在已经处于开启状态。我们可以运行如下命令来查看已经设置的UFW规则:

sudo ufw status verbose

第五步 — 开放其他连接

现在,我们可以根据我们的需求来开放相应的端口。设置方法与前面配置22端口的方式相同。

要开放常规的http访问,我们需要允许通过80端口访问:

sudo ufw allow httpsudo ufw allow 80

要开放HTTPS访问:

sudo ufw allow httpssudo ufw allow 443

除了为指定的端口配置规则,我们还有其他的几种配置方式。

开放端口范围

因为有些应用程序需要使用多个端口,因此我们可以配置UFW规则,允许某个范围内的所有端口。

例如,要允许X11连接,我们需要开放6000-6007范围内的端口,执行以下命令:

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

如果使用UFW开放指定范围内的端口,我们必须要在后面声明协议类型。如果没有声明,则默认允许tcp和udp协议。

指定IP地址

如果我们只想允许来自某个IP地址的连接,比如我们开启来自203.0.113.4的连接,则可以按如下方式设置UFW规则:

sudo ufw allow from 203.0.113.4

如果想允许来自203.0.113.4的用户访问22端口,可以使用如下的命令:

sudo ufw allow from 203.0.113.4 to any port 22

网段

如果想要允许来自同一网段的IP地址访问(例如 203.0.113.1 – 203.0.113.254),执行如下命令:

sudo ufw allow from 203.0.113.0/24

同指定IP一样,我们也可以配置允许 203.0.113.0/24 网段连接的目标端口。例如,我们允许上述网段使用22(SSH)端口:

sudo ufw allow from 203.0.113.0/24 to any port 22

连接到指定网络接口

如果要创建仅适用于特定网络接口的防火墙规则,可以通过“ allow in on” 来指定网络接口的方式。

执行如下命令,查看网络接口情况:

ip addr

 输出如下内容:

Output
Excerpt2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

红色文字的内容就是网络接口的名称,一般情况下网络接口有类似 eth0 或者 enp3s2 这样的名字。

如果我们想开放的网络接口是 eth0 ,来允许HTTP访问:

sudo ufw allow in on eth0 to any port 80

如果允许某私有网络接口(eth1)访问MySQL数据库服务器(端口3306),则执行如下命令:

sudo ufw allow in on eth1 to any port 3306

这将允许私有网络内的其他服务器访问MySQL数据库。

第六步 — 拒绝连接

要拒绝HTTP连接,可以使用以下命令:

sudo ufw deny http

如果想拒绝来自 203.0.113.4 的所有连接,则可以使用以下命令:

sudo ufw deny from 203.0.113.4

第七步 — 删除规则

我们不但要知道如何创建UFW防火墙规则,也要知道如何来删除已经配置好的UFW防火墙规则。

删除UFW规则有两种方式:

按规则编码

如果要使用规则编号删除UFW防火墙规则,那么首先要获取防火墙规则的列表。使用如下命令可以获取规则编码:

sudo ufw status numbered

输出内容:

Numbered Output:Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

如果我们要删除规则2(该规则允许端口80(HTTP)连接),则可以在UFW delete命令中指定该规则,如下所示:

sudo ufw delete 2

按实际规则

我们可以通过实际的规则的项目,来将其删除。例如,如果要删除allow http规则,则可以这样编写:

sudo ufw delete allow http

此方法将删除IPv4和IPv6规则。

还可以通过删除开放的端口的方式来删除规则:

sudo ufw delete allow 80

此方法将删除IPv4和IPv6规则。

第八步 —查看 UFW 状态和规则

可以使用以下命令检查UFW的状态:

sudo ufw status verbose

如果UFW已经被关闭,将看到类似以下的内容:

Output
Status: inactive

如果UFW处于启动状态,输出内容将显示UFW处于“active”状态,并将列出所有已设置的规则。

Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

第九步 — 关闭或者重置 UFW

如果不想继续使用UFW,则可以使用以下命令将其禁用:

sudo ufw disable

禁用UFW后,之前创建的所有规则将不再有效。如果以后想重新启用UFW,可以使用如下的命令:

sudo ufw enable

如果已经配置了UFW规则,但是想将UFW恢复初始状态,则可以使用reset命令:

sudo ufw reset

重置UFW后,之前设置的防火墙规则全部失效,而UFW则将处于关闭状态。

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/lamp-config/setup-firewall-with-ufw-on-ubuntu-18-04/

发表评论

登录后才能评论