如何在 Ubuntu 14.04 上使用 UFW 设置防火墙

2023-11-09

介绍

UFW,即简单防火墙,是一个接口iptables旨在简化配置防火墙的过程。尽管iptables虽然是一个可靠且灵活的工具,但对于初学者来说,学习如何使用它来正确配置防火墙可能会很困难。如果您希望开始保护您的网络,并且不确定使用哪个工具,那么 UFW 可能是您的正确选择。

本教程将向您展示如何在 Ubuntu 14.04 上使用 UFW 设置防火墙。

先决条件

在开始使用本教程之前,您应该在 Ubuntu 服务器上设置一个单独的非 root 超级用户帐户(具有 sudo 权限的用户)。您可以通过至少完成中的步骤 1-3 来了解如何执行此操作使用 Ubuntu 14.04 进行初始服务器设置教程。

Ubuntu 上默认安装 UFW。如果由于某种原因被卸载,您可以使用以下命令安装它apt-get:

  1. sudo apt-get install ufw

将 IPv6 与 UFW 结合使用

如果您的 Ubuntu 服务器启用了 IPv6,请确保 UFW 配置为支持 IPv6,以便除了 IPv4 之外,它还能管理 IPv6 的防火墙规则。为此,请使用您喜欢的编辑器打开 UFW 配置。我们将使用纳米:

  1. sudo nano/etc/默认/ufw

然后确保“IPV6”的值等于“yes”。它应该看起来像这样:

/etc/default/ufw 摘录
...
IPV6=yes
...

保存并退出。打Ctrl-X退出文件,然后Y保存您所做的更改,然后ENTER确认文件名。

启用 UFW 后,它将配置为写入 IPv4 和 IPv6 防火墙规则。

本教程是针对 IPv4 编写的,但只要启用 IPv6,它也能正常工作。

检查 UFW 状态和规则

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

  1. sudoufw 状态详细

默认情况下,UFW 处于禁用状态,因此您应该看到如下内容:

Output:
Status: inactive

如果 UFW 处于活动状态,输出会显示它处于活动状态,并且会列出已设置的所有规则。例如,如果防火墙设置为允许来自任何地方的 SSH(端口 22)连接,则输出可能如下所示:

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 如何配置防火墙,请使用 status 命令。

在启用 UFW 之前,我们需要确保您的防火墙配置为允许您通过 SSH 连接。让我们从设置默认策略开始。

设置默认策略

如果您刚刚开始使用防火墙,首先要定义的规则是默认策略。这些规则控制如何处理未明确匹配任何其他规则的流量。默认情况下,UFW 设置为拒绝所有传入连接并允许所有传出连接。这意味着任何试图访问您的云服务器的人都将无法连接,而服务器内的任何应用程序都可以访问外部世界。

让我们将您的 UFW 规则设置回默认值,这样我们就可以确保您能够按照本教程进行操作。要设置 UFW 使用的默认值,请使用以下命令:

  1. sudoufw 默认拒绝传入
  2. sudoufw 默认允许传出

正如您可能已经猜到的,这些命令将默认值设置为拒绝传入连接并允许传出连接。这些防火墙默认设置本身可能足以满足个人计算机的需求,但服务器通常需要响应来自外部用户的传入请求。我们接下来会研究这个。

允许 SSH 连接

如果我们现在启用 UFW 防火墙,它将拒绝所有传入连接。这意味着,如果我们希望服务器响应这些类型的请求,我们将需要创建明确允许合法传入连接(例如 SSH 或 HTTP 连接)的规则。如果您使用云服务器,您可能希望允许传入 SSH 连接,以便您可以连接到并管理您的服务器。

要将服务器配置为允许传入 SSH 连接,您可以使用以下 UFW 命令:

  1. sudoUFW 允许ssh

这将创建防火墙规则,允许端口 22 上的所有连接,该端口是 SSH 守护程序侦听的端口。 UFW 知道“ssh”以及一堆其他服务名称的含义,因为它被列为使用端口 22 的服务/etc/services file.

我们实际上可以通过指定来编写等效规则port而不是服务名称。例如,此命令的作用与上面的命令相同:

  1. sudoUFW 允许22

如果您将 SSH 守护程序配置为使用不同的端口,则必须指定适当的端口。例如,如果您的 SSH 服务器正在侦听端口 2222,您可以使用以下命令允许该端口上的连接:

  1. sudo ufw allow 2222

现在您的防火墙已配置为允许传入 SSH 连接,我们可以启用它。

启用UFW

要启用 UFW,请使用以下命令:

  1. sudo ufw enable

您将收到一条警告,指出“该命令可能会中断现有的 ssh 连接”。我们已经设置了允许 SSH 连接的防火墙规则,因此应该可以继续。响应提示y.

防火墙现已启用。随意运行sudo ufw status verbose命令查看设置的规则。

允许其他连接

现在您应该允许服务器需要响应的所有其他连接。您应该允许的连接取决于您的具体需求。幸运的是,您已经知道如何编写允许基于服务名称或端口的连接的规则 - 我们已经在端口 22 上为 SSH 做到了这一点。

我们将展示您可能需要允许的一些非常常见的服务示例。如果您有任何其他服务想要允许所有传入连接,请遵循此格式。

HTTP—端口 80

可以使用以下命令允许 HTTP 连接(这是未加密的 Web 服务器使用的连接):

  1. sudoufw 允许 http

如果您想使用端口号 80,请使用以下命令:

  1. sudoUFW 允许80

HTTPS—端口 443

可以使用以下命令允许 HTTPS 连接(加密 Web 服务器使用的连接):

  1. sudoufw 允许 https

如果您想使用端口号 443,请使用以下命令:

  1. sudoUFW 允许443

FTP—端口 21

FTP 连接用于未加密的文件传输(您可能无论如何都不应该使用它),可以使用以下命令允许:

  1. sudoUFW 允许ftp

如果您想使用端口号 21,请使用以下命令:

  1. sudoUFW 允许21/tcp

允许特定端口范围

您可以使用 UFW 指定端口范围。某些应用程序使用多个端口,而不是单个端口。

例如,要允许使用端口 6000-6007 的 X11 连接,请使用以下命令:

  1. sudo ufw allow 6000:6007/tcp
  2. sudo ufw allow 6000:6007/udp

使用 UFW 指定端口范围时,必须指定协议 (tcp or udp)应适用规则。我们之前没有提到这一点,因为不指定协议只是允许两种协议,这在大多数情况下是可以的。

允许特定 IP 地址

使用 UFW 时,您还可以指定 IP 地址。例如,如果您想要允许来自特定 IP 地址的连接,例如工作或家庭 IP 地址15.15.15.51,您需要指定“from”,然后指定 IP 地址:

  1. sudo ufw allow from 15.15.15.51

您还可以通过在端口号后添加“到任何端口”来指定允许 IP 地址连接的特定端口。例如,如果您想允许15.15.15.51要连接到端口 22 (SSH),请使用以下命令:

sudo ufw allow from 15.15.15.51 to any port 22

允许子网

如果要允许 IP 地址子网,可以使用 CIDR 表示法指定网络掩码。例如,如果您想要允许以下范围内的所有 IP 地址:15.15.15.1 to 15.15.15.254你可以使用这个命令:

  1. sudo ufw allow from 15.15.15.0/24

同样,您还可以指定子网的目标端口15.15.15.0/24被允许连接到。同样,我们将使用端口 22 (SSH) 作为示例:

sudo ufw allow from 15.15.15.0/24 to any port 22

允许连接到特定网络接口

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

在继续之前,您可能需要查找您的网络接口。为此,请使用以下命令:

  1. ip addr
输出摘录:
... 2: 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”或“eth1”。

因此,如果您的服务器有一个名为的公共网络接口eth0,您可以使用以下命令允许 HTTP 流量(端口 80)到达它:

  1. sudo ufw allow in on eth0 to any port 80

这样做将允许您的服务器接收来自公共 Internet 的 HTTP 请求。

或者,如果您希望 MySQL 数据库服务器(端口 3306)侦听专用网络接口上的连接eth1,例如,您可以使用以下命令:

  1. sudo ufw allow in on eth1 to any port 3306

这将允许您的专用网络上的其他服务器连接到您的 MySQL 数据库。

拒绝连接

如果您没有更改传入连接的默认策略,UFW 将配置为拒绝所有传入连接。通常,这要求您创建明确允许特定端口和 IP 地址通过的规则,从而简化了创建安全防火墙策略的过程。然而,有时您会想要根据源 IP 地址或子网拒绝特定连接,也许是因为您知道您的服务器正在受到来自那里的攻击。另外,如果您想将默认传入策略更改为allow(出于安全考虑,不建议这样做),您需要创建deny您不希望允许连接的任何服务或 IP 地址的规则。

来写deny规则,您可以使用我们上面描述的命令,除非您需要将“allow”替换为“deny”。

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

  1. sudoufw 拒绝 http

或者,如果您想拒绝来自的所有连接15.15.15.51你可以使用这个命令:

sudo ufw deny from 15.15.15.51

如果您需要帮助编写任何其他内容deny规则,看前面的allow规则并相应地更新它们。

现在我们来看看如何删除规则。

删除规则

了解如何删除防火墙规则与了解如何创建防火墙规则同样重要。有两种不同的方式指定要删除的规则:按规则编号或按实际规则(类似于创建规则时指定规则的方式)。我们将从按规则编号删除方法,因为如果您是 UFW 的新手,与编写要删除的实际规则相比,它更容易。

按规则编号

如果您使用规则编号删除防火墙规则,您要做的第一件事就是获取防火墙规则列表。 UFW status 命令有一个选项可以显示每个规则旁边的数字,如下所示:

  1. sudoUFW 状态编号
编号输出:
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

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

  1. sudo ufw delete 2

这将显示确认提示,然后删除允许 HTTP 连接的规则 2。请注意,如果您启用了 IPv6,您还需要删除相应的 IPv6 规则。

按实际规则

规则编号的替代方法是指定要删除的实际规则。例如,如果你想删除“allow http”规则,你可以这样写:

  1. sudo ufw delete allow http

您还可以通过“allow 80”指定规则,而不是通过服务名称:

  1. sudo ufw delete allow 80

此方法将删除 IPv4 和 IPv6 规则(如果存在)。

如何禁用 UFW(可选)

如果您出于某种原因决定不想使用 UFW,可以使用以下命令禁用它:

  1. sudoufw 禁用

您使用 UFW 创建的任何规则将不再有效。你可以随时奔跑sudo ufw enable如果您稍后需要激活它。

重置 UFW 规则(可选)

如果您已经配置了 UFW 规则,但您决定重新开始,则可以使用重置命令:

  1. sudoUFW重置

这将禁用 UFW 并删除之前定义的任何规则。请记住,如果您在任何时候修改默认策略,它们都不会更改为其原始设置。这应该会给你一个 UFW 的新开始。

结论

您的防火墙现在应该配置为允许(至少)SSH 连接。请务必允许您的服务器的任何其他传入连接,同时限制任何不必要的连接,以便您的服务器正常运行且安全。

要了解更常见的 UFW 配置,请查看本教程:UFW 要点:常见防火墙规则和命令

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 14.04 上使用 UFW 设置防火墙 的相关文章

随机推荐

  • 在 Vim / Vi 中查找和替换

    本文介绍如何在 Vim Vi 中查找和替换文本 Vim 是最流行的命令行文本编辑器 它预装在 macOS 和大多数 Linux 发行版上 在 Vim 中查找和替换文本既快速又简单 基本查找和替换 在 Vim 中 您可以使用以下命令查找和替换
  • 安装和配置 Roundcube Webmail

    这是最后一部分设置和配置邮件服务器系列 其中我们将介绍如何安装和配置 Roundcube Webmail Roundcube 是一个基于 Web 的 IMAP 电子邮件客户端 具有用 PHP 编写的非常直观且现代的用户界面 要使用 Roun
  • Linux 中的自由命令

    我的 Linux 系统上有多少可用 RAM 内存 是否有足够的可用内存来安装和运行新应用程序 在Linux系统中 您可以使用free命令获取有关系统内存使用情况的详细报告 The free命令提供有关物理总量和swap内存 以及空闲和已用内
  • 如何在 Linux 中查找/获取您的 IP 地址

    在排除网络问题 设置新连接或配置防火墙时 了解设备的 IP 地址非常重要 IP 地址可分为两类 公共地址和私有地址 公共IP是唯一的并且可以从互联网访问的IP地址 私有 IP 地址保留供私有网络内部使用 而不直接暴露于 Internet 此
  • Python if..else 语句

    决策是计算机编程最基本的概念之一 Python 支持其他语言中常见的流程控制语句 但进行了一些修改 这if控制语句是最基本和众所周知的语句之一 用于根据特定条件执行代码 在这篇文章中 我们将回顾一下基础知识ifPython 中的语句 Pyt
  • Linux 中的 Echo 命令及示例

    The echo命令是Linux中最基本 最常用的命令之一 参数传递给echo打印到标准输出 echo常用于 shell 脚本中显示消息或输出其他命令的结果 回显命令 echo是 Bash 和大多数其他流行 shell 如 Zsh 和 Ks
  • 如何检查你的 Ubuntu 版本

    当您第一次登录 Ubuntu 系统时 在进行任何工作之前 最好检查一下计算机上运行的 Ubuntu 版本 新的 Ubuntu 版本每六个月发布一次 而 LTS 长期支持 版本每两年发布一次 LTS 版本在桌面和服务器上均受支持五年 其他标准
  • 如何在 Debian 9 上安装和使用 Docker

    Docker 是一个容器化平台 允许您快速构建 测试和部署应用程序作为可移植 自给自足的容器 几乎可以在任何地方运行 Docker 是容器技术事实上的标准 它是 DevOps 工程师及其持续集成和交付管道的重要工具 在本教程中 我们将指导您
  • Linux 中的定位命令

    在 Linux 上工作时最常见的操作之一是搜索文件和目录 Linux 系统上有多个命令允许您搜索文件 其中 find 和locate 是最常用的命令 The locate命令是按名称搜索文件和目录的最快 最简单的方法 在这篇文章中 我们将解
  • Linux 中的 Du 命令

    The du命令是 磁盘使用情况 的缩写 报告给定文件或目录使用的估计磁盘空间量 它对于查找占用大量磁盘空间的文件和目录非常有用 如何使用du命令 的一般语法为du命令如下 du OPTIONS FILE 如果给定FILE是一个目录 du将
  • 如何在 CentOS 7 上安装和配置 VNC

    在本教程中 我们将引导您完成在 CentOS 7 系统上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计
  • 如何在 CentOS 7 上安装 Iptables

    从 CentOS 7 开始 防火墙D取代 iptables 成为默认的防火墙管理工具 FirewallD 是一个完整的防火墙解决方案 可以使用名为firewall cmd 的命令行实用程序进行控制 如果您更熟悉 Iptables 命令行语法
  • 如何用 Java 编写您的第一个程序

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 Java是一种成熟且设计良好的编程语言 用途广泛 从课堂学习到运行任何规模的商业应用程序 它的独特优势之一是它是跨平台的 一旦创建了 Java 程序 就可以在许多操作系统上运行它 包括
  • 如何在 Ubuntu 12.10 上设置 ownCloud 5

    什么是Red Means 用户需要输入或自定义的行将位于red在本教程中 其余的大部分应该是可复制和粘贴的 关于ownCloud ownCloud 是一种开源数据存储解决方案 类似于 Dropbox 或 Google Drive 人们可以获
  • Android RecyclerView 示例 - 多种 ViewType

    到目前为止 我们已经在一个视图中显示了相同类型的视图回收视图 在本教程中 我们将在 RecyclerView 中实现异构布局 回收视图 具有异构布局的 RecyclerView 通常用于显示节标题和详细信息 两者都需要不同的布局 因此需要不
  • 如何在 Ubuntu 18.04 上安装 Node.js

    介绍 Node js是一个用于通用编程的JavaScript平台 允许用户快速构建网络应用程序 通过在前端和后端利用 JavaScript Node js 使开发更加一致和集成 在本指南中 您将了解在 Ubuntu 18 04 服务器上安装
  • 如何在 CentOS 7 上安装 WordPress

    介绍 WordPress 是一个使用 PHP 和 MySQL 的免费开源网站和博客工具 WordPress 是目前互联网上最流行的 CMS 内容管理系统 拥有超过 20 000 个插件来扩展其功能 这使得 WordPress 成为快速轻松地
  • Java二维码生成器-zxing示例

    今天我们将研究Java QR 码生成器程序 如果您精通技术和小工具 那么您一定知道二维码 如今 您随处都可以找到它 在博客 网站 甚至在一些公共场所 这在移动应用程序中非常流行 您可以使用 QR 码扫描仪应用程序扫描 QR 码 它会显示文本
  • Python 位运算符

    Python 按位运算符用于对整数执行按位计算 将整数转换为二进制格式 然后逐位执行运算 因此称为按位运算符 Python 按位运算符仅适用于整数 最终输出以十进制格式返回 Python 按位运算符也称为二元运算符 Python 位运算符
  • 如何在 Ubuntu 14.04 上使用 UFW 设置防火墙

    介绍 UFW 即简单防火墙 是一个接口iptables旨在简化配置防火墙的过程 尽管iptables虽然是一个可靠且灵活的工具 但对于初学者来说 学习如何使用它来正确配置防火墙可能会很困难 如果您希望开始保护您的网络 并且不确定使用哪个工具