收集云服务器优惠信息
记录云服务器使用心得

UFW防火墙:Ubuntu/Debian安装、配置和使用示例详解

由于计算机的网络互联,相关服务正在迅速发展,例如电子邮件、社交媒体、网上购物、聊天和网络会议等。然而,这种网络连接是一把双刃剑,因为它也为恶意活动打开了大门,包括病毒传播、有害软件和木马应用程序,这些都可能损害计算机。

互联网作为最大的计算机网络,并不总是充满好人;因此,为了确保我们的计算机和服务器的安全,需要对其进行保护。保护计算机或服务器的一个关键组成部分是防火墙。

Iptables是一款广泛使用的服务器防火墙,它基于一组规则管理传入和传出流量,仅允许受信任的网络连接。然而,IPTables以命令行模式运行,对于初学者来说可能较为复杂。

UFW:IPTables更简单替代方案

为了降低IPTables配置的复杂度,许多前端工具应运而生。如果你使用的是Ubuntu或Debian系统,默认的防火墙工具便是UFW(Uncomplicated Firewall)。

UFW是对广泛使用的IPTables防火墙的前端包装,它提供一个管理netfilter的框架,并包含用于控制防火墙的命令行界面。UFW专为初学者设计,使他们能够轻松使用防火墙;同时也允许高级用户通过命令行界面配置复杂的规则。

UFW能够在Debian、Ubuntu和Linux Mint等发行版中使用,功能也是相当的强大,下面将进行简单介绍,一起来看看吧。

UFW

一、安装UFW防火墙

在使用UFW之前,需要使用以下命令检查它是否已安装在你的Linux系统上,该命令会列出所有已安装的软件包并过滤结果,以显示是否安装了UFW:

sudo dpkg --get-selections | grep ufw

如果未安装UFW,可以通过运行以下命令轻松安装它:

sudo apt install ufw

安装UFW之后,需要检查其当前状态,以确定防火墙是已启用还是已禁用:

sudo ufw status

如果UFW处于非活动状态,则需要启用它来开始保护你的系统:

sudo ufw enable

在Ubuntu中安装UFW

如果需要禁用UFW,可以使用以下简单命令:

sudo ufw disable

二、列出当前的UFW规则

防火墙激活之后,你可以开始添加自定义规则来控制传入和传出流量。要检查防火墙的当前状态并查看现有的规则(包括默认设置),可以使用以下命令:

sudo ufw status verbose

列出UFW规则

输出详细解释:

  • Status: active:意味着防火墙当前处于活动状态并正在执行你设置的规则。
  • Logging: on (low):这意味着防火墙将记录基本事件,例如何时允许或阻止数据包。
  • deny (code):意味着除非你明确添加了允许规则,否则所有外部连接都会被拒绝。
  • allow (outgoing):意味着你的系统可以自由连接到外部服务器,例如访问网站或发送电子邮件。
  • deny (routed):这表示通过你系统路由的流量(即非本机直接发起的流量)将被默认阻止。
  • New profiles: skip:此设置会跳过对新软件配置文件的自动规则添加,任何新安装的应用都需要你手动添加相应的防火墙规则。

三、添加UFW规则示例

默认情况下,UFW设置为拒绝所有传入连接并允许所有传出连接,这是一种很好的安全做法,因为它可以防止未经授权的访问,同时仍允许你的计算机连接到互联网。但是,如果你想远程访问机器,例如使用SSH功能,则需要明确允许适当的端口。

允许SSH访问

要允许传入的SSH连接(使用端口22),请运行以下命令,该命令将允许端口22上的IPv4和IPv6传入连接:

sudo ufw allow ssh

你可以使用以下方法检查规则是否已成功添加:

sudo ufw status

在UFW中添加规则

以编号方式列出规则

如果你有许多规则并希望更轻松地管理它们,则可以使用编号选项列出它们:

sudo ufw status numbered

列出带有数字的UFW规则

仅允许TCP

默认情况下,允许SSH之类的服务会同时启用TCP和UDP协议,但SSH仅使用TCP,因此可以通过仅允许TCP连接来使规则更具针对性:

sudo ufw allow ssh/tcp

拒绝访问

正如允许访问特定服务或端口一样,UFW也允许你使用非常相似的命令结构来拒绝流量。当你想要明确阻止某个服务或连接访问系统时,拒绝访问就显得尤为重要。假设你想阻止FTP(通常在端口21上运行)在你的机器上访问,命令如下:

sudo ufw deny ftp

此外,你还可以使用具有相同拒绝语法的自定义端口或IP:

sudo ufw deny from 192.168.1.101 to any port 21

此规则将仅阻止特定IP(即192.168.1.101)访问端口21。

添加特定端口

有时候,你系统上的服务可能会运行在非标准或自定义端口上。例如,默认情况下,SSH使用端口22,但出于安全考虑,许多管理员会将此端口更改为其它值,例如2290。要允许通过这个自定义端口(2290)的流量,可以运行以下命令:

sudo ufw allow 2290

允许一定范围的端口

在某些情况下,你可能希望一次打开多个端口,例如,如果你正在运行使用一系列端口进行通信的服务,如某些游戏服务器或VoIP应用程序。那么要使用TCP协议允许一系列端口的话,输入以下命令:

sudo ufw allow 2290:2300/tcp

以上命令将开放2290到2300端口的TCP协议。要使用UDP协议允许相同范围,命令如下:

sudo ufw allow 2290:2300/udp

指定端口范围时,必须指定协议(tcp或udp)。如果不指定,则会收到如下错误:

ERROR: Must specify 'tcp' or 'udp' with multiple ports

三、为特定IP地址添加规则示例

到目前为止,我们已经添加了基于服务和端口的规则,但它还允许你基于IP地址控制访问,如果你想限制仅对网络上的某些机器的访问,这将非常有用。

允许从单个IP访问

要允许特定IP地址(例如192.168.2.10)访问任何服务,请使用以下命令:

sudo ufw allow from 192.168.2.10

允许从子网访问

你还可以允许来自整个IP范围或子网的访问。例如,要允许来自192.168.2.0/24范围内的任何设备的访问,请执行以下命令:

sudo ufw allow from 192.168.2.0/24

指定目标端口(To)

你也可以添加规则来控制流量的去向,而不仅仅是流量的来源。例如,如果你想允许从任何地方进行SSH访问(端口22),则可以这样写:

sudo ufw allow to any port 22

结合IP、协议和端口

为了实现更精细的控制,可以将所有参数组合使用。例如,只允许来自IP为192.168.0.104的TCP流量访问端口22:

sudo ufw allow from 192.168.0.104 proto tcp to any port 22

四、删除UFW规则

有时可能需要删除现有的防火墙规则,包括无论是为了故障排除、清理旧配置还是更改访问权限。幸运的是,UFW让这一切变得简单。接下来让我们了解两种常见的删除规则的方法。

示例场景

假设当前的防火墙规则如下所示:

To       Action    From
--       ------    ----
22/tcp   ALLOW     192.168.0.104
21/tcp   ALLOW     Anywhere
21/tcp   ALLOW     Anywhere (v6)

规则说明如下:

  • 端口22/tcp(SSH)仅允许来自IP 192.168.0.104的访问;
    端口21/tcp(FTP)允许来自任何机器的访问。

方法一:按服务或端口删除

如果该规则是使用像ftp这样的服务名称添加的,则可以使用相同的语法将其删除:

sudo ufw delete allow ftp

此方法无需确认,一旦按下回车键,规则就会立即删除。

方法二:按规则编号删除

有时使用服务名称或端口删除规则不起作用,尤其是当规则添加了特定条件的时候(例如,仅允许来自特定IP)。此时可能会看以下错误:

Could not delete non-existent rule
Could not delete non-existent rule (v6)

在这种情况下,最好的选择是按规则编号删除该规则。

步骤1:用数字列出规则
sudo ufw status numbered

示例输出

To         Action    From
--         ------    ----
[1] 22/tcp  ALLOW     192.168.0.104
[2] 21/tcp  ALLOW     Anywhere
[3] 21/tcp  ALLOW     Anywhere (v6)
步骤2:按编号删除规则

要删除第一条规则(192.168.0.104进行SSH访问),请运行以下命令:

sudo ufw delete 1

这时候会看到:

Deleting:
 allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

五、如何重置UFW规则

有时候你可能想要完全重置防火墙配置,例如当你添加了过多规则导致配置混乱,或想要重新开始。要重置所有UFW规则并将一切恢复到默认状态,请使用以下命令:

sudo ufw reset

你会看到以下提示:

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

如果按下y,UFW将执行以下操作:

  • 在删除现有规则之前备份它们(位于/lib/ufw/user.rules.sav或/etc/ufw/user.rules.save,可能依发行版略有不同)。
  • 删除所有用户定义的规则。
  • 将UFW设置恢复为安装的默认值。
  • 重置后自动禁用防火墙。

重置后UFW将关闭(不会卸载UFW本身,也不会删除配置文件目录/etc/ufw),你需要使用以下命令再次启用它:

sudo ufw enable

六、UFW的高级功能

如前所述,UFW是强大IPTables防火墙的前端。虽然它被设计得非常简洁,但在背后仍具有高度的可定制性。

UFW的高级配置通过一系列纯文本文件来管理。这些文件允许你设置超出UFW命令行工具能力范围的规则和选项。以下是快速概览:

  • /etc/default/ufw:默认策略、IPv6支持和内核模块的主要配置。
  • /etc/ufw/before[6].rules:这些文件中的规则是在通过ufw命令添加的任何规则之前被应用(before6.rules为IPv6)。
  • /etc/ufw/after[6].rules:这些文件中的规则是在通过ufw命令添加的任何规则之后被应用(before6.rules为IPv6)。
  • /etc/ufw/sysctl.conf:配置内核网络参数。
  • /etc/ufw/ufw.conf:用于设置系统启动时是否启用UFW,以及设置日志级别(LOGLEVEL)。

七、小结

UFW作为iptables的前端,无疑为用户提供了简洁易用的界面,使得用户无需记住复杂的iptables语法。更重要的是,UFW还使用“普通英文”作为其参数,比如:allow(允许)、deny(拒绝)、reset(重置)就是其中的一些。

当然,现在市面上还有许多其它的iptables前端工具,但对于那些希望快速、简单、而且安全地设置防火墙的用户来说,UFW是最好的替代方案之一。如需了解更多使用说明,请通过输入man ufw来查看UFW手册页面。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《UFW防火墙:Ubuntu/Debian安装、配置和使用示例详解》
文章链接:https://www.ecscoupon.com/14065.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!