如何在 Ubuntu 和 Debian 上设置 UFW 防火墙
正常运行的防火墙是整个 Linux 系统安全最关键的部分。默认情况下,Debian和Ubuntu发行版附带了一个名为UFW(Uncomplicated Firewall)的防火墙配置工具,是一种最流行且易于使用的命令行工具,用于配置和管理 Ubuntu 和 Debian 发行版上的防火墙。
在本文中,我们将解释如何在 Ubuntu 和 Debian 发行版上安装和设置 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 配置了 IPv6 和 IPv4 支持。要验证它,请使用您喜欢的编辑器打开 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.1 到 192.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 上打开连接。例如,您打开了端口 80 和 443,并且您的 Web 服务器受到来自未知网络 11.12.13.0/24 的攻击。
要阻止来自此特定 11.12.13.0/24 网络范围的所有连接,您可以使用以下命令。
sudo ufw deny from 11.12.13.0/24
如果您只想阻止端口 80 和 443 上的连接,可以使用以下命令。
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。
就是这样! UFW 是 iptables 的优秀前端,具有用户友好的界面,可以使用单个 ufw 命令定义复杂的规则。
如果您对这篇 ufw 文章有任何疑问或想法想要分享,请使用下面的评论表与我们联系。