Debian/Ubuntu系统中安装和配置UFW-简单的防火墙
创始人
2024-03-01 12:09:41
0

自从计算机互连后,各种服务迅速发展。用户使用的电子邮件、社交媒体、在线商城、即时聊天甚至网络会议等服务如雨后春笋般涌现。但从另一方面来说,这些连接服务也具有双刃剑,比如它们当中的病毒、恶意软件、特洛伊木马等会向计算机发送恶意消息。

Ubuntu下的 UFW 防火墙

安装 UFW 防火墙

作为最大的计算机网络,互联网上可并不都是善意的用户。因此,为了确保我们的计算机或服务器安全,我们需要进行保护。

在你的计算机或服务器上一个必须有的组件就是防火墙。在维基百科中,其定义是:

防火墙是计算机中一款应用软件或基于硬件的网络安全系统。它根据应用配置的规则,分析数据包,然后决定是否允许此数据包通过,来控制整个系统的网络数据进出访问权限。

iptables 是一款广泛使用于服务器的防火墙。它是一款应用程序,它会根据一系列规则来管理服务器上的进出数据流。一般来说,只有可信任的连接才允许进入服务器。但 iptables 是在控制台模式下运行,它非常的复杂。不熟悉 iptables 配置规则和命令的用户可以读读下面的文章,它描述了如何使用iptables防火墙。

Debian/Ubuntu 系统中安装 UFW 防火墙

为了降低 iptables 设置的复杂度,有许多对应的前端应用。如果你运行的是 Ubuntu linux 系统的话, UFW 就是一款默认的防火墙工具。我们开始来探讨 UFW 防火墙吧。

什么是 UFW

UFW (简单的防火墙) 是广泛使用的 iptables 防火墙 的前端应用,这是非常适合于基于主机的防火墙。UFW 即提供了一套管理网络过滤器的框架,又提供了控制防火墙的命令行界面接口。它给那些不熟悉防火墙概念的 Linux 新用户提供了友好、易使用的用户界面。

同时,另一方面,它也提供了命令行界面,为系统管理员准备了一套复杂的命令,用来设置复杂的防火墙规则。UFW 对像 Debian、UbuntuLinux Mint 这些发布版本来说也是上上之选。

UFW 基本用法

首先,用如下命令来检查下系统上是否已经安装了 UFW

$ sudo dpkg --get-selections | grep ufw

如还没有安装,可以使用 apt 命令来安装,如下所示:

$ sudo apt-get install ufw

在使用前,你应该检查下 UFW 是否已经在运行。用下面的命令来检查。

$ sudo ufw status

如果你发现状态是: inactive , 意思是没有被激活或不起作用。

启用/禁用 UFW

要启用它,你只需在终端下键入如下命令:

$ sudo ufw enable

在系统启动时启用和激活防火墙

要禁用,只需输入:

$ sudo ufw disable

列出当前UFW规则

在防火墙被激活后,你可以向里面添加你自己的规则。如果你想看看默认的规则,可以输入。

$ sudo ufw status verbose

输出样例:

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

添加UFW规则

如你所见,默认是不允许所有外部访问连接的。如果你想远程连接你的机器,就得开放相应的端口。例如,你想用 ssh 来连接,下面是添加的命令。

允许访问

$ sudo ufw allow ssh

[sudo] password for pungki :
Rule added
Rule added (v6)
$

再一次检查状态,会看到如下的一些输出。

$ sudo ufw status

To      Action          From
--      -----------         ------
22      ALLOW           Anywhere
22      ALLOW           Anywhere (v6)

如果你有很多条规则,想快速的在每条规则上加个序号数字的话,请使用 numbered 参数。

$ sudo ufw status numbered

To      Action          From
------      -----------         ------
[1] 22      ALLOW           Anywhere
[2] 22      ALLOW           Anywhere (v6)

第一条规则的意思是所有通过22端口访问机器的 tcpudp 数据包都是允许的。如果你希望仅允许 tcp 数据包访问应该怎么办?可以在服务端口后加个 tcp 参数。下面的示例及相应的输出。

$ sudo ufw allow ssh/tcp

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

拒绝访问

添加拒绝规则也是同样的招数。我们假设你想拒绝 ftp 访问, 你只需输入

$ sudo ufw deny ftp

To      Action          From
------      -----------         ------
21/tcp      DENY            Anywhere
21/tcp      DENY            Anywhere (v6)

添加特定端口

有时候,我们会自定义一个端口而不是使用标准提供的。让我们试着把机器上 ssh22 端口换成 2290 端口,然后允许从 2290 端口访问,我们像这样添加:

$ sudo ufw allow 2290/ssh (译者注:些处演示例子有问题)

To      Action          From
--      -----------         ------
2290        ALLOW           Anywhere
2290        ALLOW           Anywhere (v6)

你也可以把端口范围添加进规则。如果我们想打开从 2290到2300 的端口以供 tcp 协议使用,命令如下示:

$ sudo ufw allow 2290:2300/tcp

To          Action          From
------          -----------         ------
2290:2300/tcp       ALLOW           Anywhere
2290:2300/tcp       ALLOW           Anywhere (v6)

同样你想使用 udp 的话,如下操作。

$ sudo ufw allow 2290:2300/udp

To          Action          From
------          -----------         ------
2290:2300/udp       ALLOW           Anywhere
2290:2300/udp       ALLOW           Anywhere (v6)

请注意你得明确的指定是 ‘tcp’ 或 ‘udp’,否则会出现跟下面类似的错误信息。

ERROR: Must specify ‘tcp’ or ‘udp’ with multiple ports

添加特定 IP

前面我们添加的规则都是基于 服务程序端口 的,UFW 也可以添加基于 IP 地址的规则。下面是命令样例。

$ sudo ufw allow from 192.168.0.104

你也可以使用子网掩码来扩宽范围。

$ sudo ufw allow form 192.168.0.0/24

To      Action          From
--      -----------         ------
Anywhere    ALLOW           192.168.0.104
Anywhere    ALLOW           192.168.0.0/24

如你所见, from 参数仅仅限制连接的来源,而目的(用 To 列表示)是所有地方。让我们看看允许访问 **22端口(ssh)**的例子。

$ sudo ufw allow to any port 22

上面的命令会允许从任何地方以及任何协议都可以访问22端口

组合参数

对于更具体的规则,你也可以把 IP 地址协议端口这些组合在一起用。我们想创建一条规则,限制仅仅来自于 192.168.0.104 的 IP ,而且只能使用 tcp 协议和通过 22端口 来访问本地资源。我们可以用如下所示的命令。

$ sudo ufw allow from 192.168.0.104 proto tcp to any port 22

创建拒绝规则的命令和允许的规则类似,仅需要把 allow 参数换成 deny 参数就可以。

删除规则

某些时候需要删除现有的规则。再一次使用 UFW 删除规则是很简单的。在上面的示例中,已经创建了如下的规则,现在你想删除它们。

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

删除规则有两个方法。

方法1

下面的命令将会 删除ftp 相关的规则。所以像 21/tcp 这条 ftp 默认访问端口的规则将会被删除掉。

$ sudo ufw delete allow ftp

方法2

但当你使用如下命令来删除上面例子中的规则时,

$ sudo ufw delete allow ssh

或者 

$ sudo ufw delete allow 22/tcp

会出现如下所示的一些错误

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

我们还有一招。上面已经提到过,可以序列数字来代替你想删除的规则。让我们试试。

$ 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)

然后我们删除正在使用的第一条规则。按 “ y ” 就会永久的删除这条规则。

$ sudo ufw delete 1

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

从这些用法中你就可以发现它们的不同。 方法2 在删除前需要 用户确认 ,而 方法1 不需要。

重置所有规则

某些情况下,你也许需要 删除/重置 所有的规则。可以输入。

$ sudo ufw reset

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

如果你输入“ y ”, UFW 在重置你的 ufw 前会备份所有已经存在规则,然后重置。重置操作也会使你的防火墙处于不可用状态,如果你想使用得再一次启用它。

高级功能

正如我上面所说,UFW防火墙能够做到iptables可以做到的一切。这是通过一些规则文件来完成的,他们只不过是 iptables-restore 所对应的文本文件而已。是否可以通过 ufw 命令微调 UFW 的与/或逻辑来增加 iptables 命令其实就是编辑几个文本文件的事。

  • /etc/default/ufw: 默认策略的主配置文件,支持 IPv6 和 内核模块。
  • /etc/ufw/before[6].rules: 通过 ufw 命令添加进规则之前里面存在的规则会首先计算。
  • /etc/ufw/after[6].rules: 通过 ufw 命令添加进规则之后里面存在的规则会进行计算。
  • /etc/ufw/sysctl.conf: 内核网络可调参数。
  • /etc/ufw/ufw.conf: 设置系统启动时 UFW 是否可用,和设置日志级别。

结论

UFW 作为 iptables 的前端应用,给用户提供了简单的接口界面。使用着不需要去记非常复杂的 iptables 语法。UFW 也使用了‘ 简单英语 ’作为它的参数。

Allow、deny、reset 就是他们当中的一部分。我相信有很多很多 iptables 前端应用,但 UFW 绝对是那些想要快速、简单的就建立自己的防火墙,而且还很安全的用户的最佳替代品之一。请输入 man ufw 查看 ufw 用户手册,来了解更多详情。


via: http://www.tecmint.com/how-to-install-and-configure-ufw-firewall/

译者:runningwater 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

相关内容

7月4日前海开源嘉鑫混合C...
金融界2025年7月4日消息,前海开源嘉鑫混合C(001770) ...
2025-07-04 21:12:10
6月26日前海开源新经济混...
金融界2025年6月26日消息,前海开源新经济混合A(000689...
2025-06-26 21:12:24
等了30年,微软MS-DO...
曾经称“开源是毒瘤”时有多么嫌弃,现在“微软 ❤️ 开源”就有多么...
2025-06-26 09:11:25
6月25日前海开源沪港深优...
金融界2025年6月25日消息,前海开源沪港深优势精选混合A(00...
2025-06-25 21:14:11
6月24日前海开源新经济混...
金融界2025年6月24日消息,前海开源新经济混合A(000689...
2025-06-24 22:13:08
开源图像编辑器 GIMP ...
IT之家 6 月 24 日消息,科技媒体 9to5Linux 昨日...
2025-06-24 13:12:59

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...