网站搜索

如何在 Ubuntu 和 Debian 上设置 UFW 防火墙


正常运行的防火墙是整个 Linux 系统安全最关键的部分。默认情况下,Debian和Ubuntu发行版附带了一个名为UFWUncomplicated Firewall)的防火墙配置工具,是一种最流行且易于使用的命令行工具,用于配置和管理 UbuntuDebian 发行版上的防火墙。

在本文中,我们将解释如何在 UbuntuDebian 发行版上安装和设置 UFW 防火墙。

先决条件

在开始阅读本文之前,请确保您已使用 sudo 用户或 root 帐户登录 Ubuntu 或 Debian 服务器。如果您没有 sudo 用户,您可以使用以下说明以 root 用户身份创建一个用户。

adduser username
usermod -aG sudo username 
su - username
sudo whoami

在 Ubuntu 和 Debian 上安装 UFW 防火墙

UFW简单防火墙)应该默认安装在 Ubuntu 和 Debian 中,如果没有,请使用以下命令使用 APT 包管理器安装它。

sudo apt install ufw

检查 UFW 防火墙

安装完成后,您可以通过键入来检查 UFW 的状态。

sudo ufw status verbose

首次安装时,默认情况下禁用 UFW 防火墙,输出将类似于以下内容。

Status: inactive

启用 UFW 防火墙

您可以使用以下命令激活或启用 UFW 防火墙,该命令应加载防火墙并使其能够在启动时启动。

sudo ufw enable

要禁用 UFW 防火墙,请使用以下命令,该命令会卸载防火墙并禁用它在启动时启动。

sudo ufw disable 

UFW 默认政策

默认情况下,UFW 防火墙拒绝所有传入连接,仅允许所有到服务器的出站连接。这意味着,除非您专门打开该端口,否则任何人都无法访问您的服务器,而您服务器上正在运行的所有服务或应用程序都可以访问外部网络。

默认的 UFW 防火墙策略放置在 /etc/default/ufw 文件中,可以使用以下命令进行更改。

sudo ufw default deny incoming
sudo ufw default allow outgoing

UFW 应用简介

使用APT软件包管理器安装软件包时,它将在/etc/ufw/applications.d目录中包含一个应用程序配置文件,该配置文件定义服务并保存UFW设置。

您可以使用以下命令列出服务器上所有可用的应用程序配置文件。

sudo ufw app list

根据系统上安装的软件包,输出将类似于以下内容:

Available applications:
  APACHE
  APACHE Full
  APACHE SECURE
  CUPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

如果您想获取有关特定配置文件和定义规则的更多信息,可以使用以下命令。

sudo ufw app info 'Apache'
Profile: Apache
Title: Web Server 
Description: Apache V2 is the next generation f the omnipresent Apache web server.

Ports:
  80/tcp

使用 UFW 启用 IPv6

如果您的服务器配置了 IPv6,请确保您的 UFW 配置了 IPv6IPv4 支持。要验证它,请使用您喜欢的编辑器打开 UFW 配置文件。

sudo vi /etc/default/ufw

然后确保配置文件中的“IPV6”设置为“yes”,如图所示。

IPV6=yes

保存并退出。然后使用以下命令重新启动防火墙:

sudo ufw disable
sudo ufw enable

允许 UFW 上的 SSH 连接

如果您现在已启用 UFW 防火墙,它将阻止所有传入连接,并且如果您从远程位置通过 SSH 连接到服务器,您将无法再连接它。

让我们使用以下命令启用与服务器的 SSH 连接以阻止这种情况发生:

sudo ufw allow ssh

如果您使用自定义 SSH 端口(例如端口 2222),则需要使用以下命令在 UFW 防火墙上打开该端口。

sudo ufw allow 2222/tcp

要阻止所有 SSH 连接,请键入以下命令。

sudo ufw deny ssh/tcp
sudo ufw deny 2222/tcp  [If using custom SSH port]

启用 UFW 上的特定端口

您还可以在防火墙中打开特定端口以允许通过它连接到特定服务。例如,如果您要设置一个侦听端口 80 (HTTP) 和 443 (HTTPS >) 默认情况下。

以下是如何允许传入连接到 Apache 服务的几个示例。

在 UFW 上打开端口 80 HTTP
sudo ufw allow http     [By service name]
sudo ufw allow 80/tcp   [By port number]
sudo ufw allow 'Apache' [By application profile]
在 UFW 上打开端口 443 HTTPS
sudo ufw allow https
sudo ufw allow 443/tcp
sudo ufw allow 'Apache Secure'

UFW 上允许的端口范围

假设您有一些应用程序想要在一系列端口 (5000-5003) 上运行,您可以使用以下命令添加所有这些端口。

sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp

允许特定 IP 地址

如果您想允许来自特定 IP 地址 192.168.56.1 的所有端口上的连接,则需要在该 IP 地址之前指定。

sudo ufw allow from 192.168.56.1

允许特定端口上的特定 IP 地址

要允许 IP 地址为 192.168.56.1 的家用计算机在特定端口(例如端口 22)上进行连接,您需要添加任意端口< 和 IP 地址后面的端口号,如图所示。

sudo ufw allow from 192.168.56.1 to any port 22

允许网络子网访问特定端口

允许从 192.168.1.1192.168.1.254 的特定 IP 地址连接到端口 22 (SSH) ,运行以下命令。

sudo ufw allow from 192.168.1.0/24 to any port 22

允许特定网络接口

要允许特定端口 22 (SSH) 连接到特定网络接口 eth2,请运行以下命令。

sudo ufw allow in on eth2 to any port 22

拒绝 UFW 上的连接

默认情况下,所有传入连接都会被阻止,除非您专门在 UFW 上打开连接。例如,您打开了端口 80443,并且您的 Web 服务器受到来自未知网络 11.12.13.0/24 的攻击。

要阻止来自此特定 11.12.13.0/24 网络范围的所有连接,您可以使用以下命令。

sudo ufw deny from 11.12.13.0/24

如果您只想阻止端口 80443 上的连接,可以使用以下命令。

sudo ufw deny from 11.12.13.0/24 to any port 80
sudo ufw deny from 11.12.13.0/24 to any port 443

删除 UFW 规则

有两种方法可以删除 UFW 规则,按规则编号和按实际规则

要使用规则编号删除 UFW 规则,首先需要使用以下命令按编号列出规则。

sudo ufw status numbered
样本输出
Status: active

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

要删除规则编号 1,请使用以下命令。

sudo ufw delete 1

第二种方法是使用实际规则删除规则,例如要删除规则,请指定端口号和协议,如图所示。

sudo ufw delete allow 22/tcp

预演 UFW 规则

您可以使用 --dry-run 标志运行任何 ufw 命令,而无需在系统防火墙中实际进行任何更改,这只是显示假设发生的更改。

sudo ufw --dry-run enable

重置 UFW 防火墙

出于某种原因,如果您希望删除/重置所有防火墙规则,请键入以下命令,它将恢复所有更改并重新开始。

sudo ufw reset
sudo ufw status

UFW 高级功能

UFW 防火墙可以完成 iptables 所做的任何事情。这可以通过不同的规则文件集来完成,这些规则文件只是简单的 iptables-restore 文本文件。

不允许通过 ufw 命令调整 UFW 防火墙或添加其他 iptables 命令,只需更改以下文本文件即可

  • /etc/default/ufw:具有预定义规则的主要配置文件。
  • /etc/ufw/before[6].rules:在此文件中,在通过 ufw 命令添加之前计算规则。
  • /etc/ufw/after[6].rules:该文件中的规则是通过ufw命令添加后计算的。
  • /etc/ufw/sysctl.conf:该文件用于调整内核网络。
  • /etc/ufw/ufw.conf:此文件在启动时启用 ufw。

就是这样! UFWiptables 的优秀前端,具有用户友好的界面,可以使用单个 ufw 命令定义复杂的规则。

如果您对这篇 ufw 文章有任何疑问或想法想要分享,请使用下面的评论表与我们联系。