UFW 是一种防火墙工具,允许您阻止或允许与服务器、阻止端口、IP 甚至整个子网的传入和传出连接。

对于基本操作来说,这是一个不错的选择。

现在我们一起在 Debian 12 上配置 UFW,提升服务器的安全等级吧。

准备工作

您必须以具有 sudo 权限的非 root 用户身份访问您的服务器。

第 1 步 – 安装 UFW 防火墙

首先,您需要检查服务器上是否安装了 UFW。使用以下命令:

sudo ufw status

如果未安装,则将获得以下输出:

Output
-bash: ufw: command not found

要安装UFW防火墙,您可以运行以下命令:

sudo apt install ufw -y

步骤2 –启用UFW防火墙

安装完成后,再次检查 UFW 状态:

sudo ufw status

在输出中,您将看到 UFW 防火墙处于非活动状态。

Output
Status: inactive

要启用 UFW,您可以在 Debian 12 上使用以下命令:

sudo ufw enable

输入 Y,您将获得以下输出:

Output
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

最后,验证您的 UFW 防火墙是否处于活动状态:

sudo ufw status
Output
Status: active

第 3 步 – 允许 OpenSSH 和 SSH 通过 UFW 防火墙

SSH(安全外壳)是一种工具,用于在 Internet 或其他不受信任的网络上进行安全系统管理、文件传输和其他通信。OpenSSH 是 SSH 协议的开源实现。

如您所知,SSH 使用端口 22。要允许端口 22 通过 UFW 防火墙,您可以使用以下命令:

sudo ufw allow ssh

注意:如果在TCP端口2222或TCP端口2323上运行SSH,则可以使用以下命令:

# sudo ufw allow 2222/tcp
# sudo ufw allow 2323/tcp

注意:如果您有静态 IP 地址,并且只想允许从静态 IP 到另一台服务器的 SSH,则可以使用以下命令:

sudo ufw allow proto tcp from static-ip-address to desired-server-ip port 22

此外,您可以限制 SSH 规则,以提高安全性。使用限制规则时,ufw 通常会允许连接,但如果 IP 地址尝试在 30 秒内启动 6 个或更多连接,则会拒绝连接。

要限制 SSH,您可以运行以下命令:

sudo ufw limit ssh

要允许 OpenSSH,您可以使用以下命令:

sudo ufw allow openssh

第 4 步 – 允许特定的传入连接或端口 Thourgh UFW 防火墙

此时,如果要打开特定端口,可以按照以下步骤操作。

允许使用 UFW 防火墙的 TCP 和 UDP 端口

要允许 TCP 端口(如端口 80),您可以在 Debian 12 上使用以下 UFW 命令:

sudo ufw allow 80/tcp

对于 UDP 连接,您可以使用以下命令: 例如:

sudo ufw allow 1194/udp

允许使用 UFW 防火墙的端口范围

此时,您可以允许端口范围通过 TCP 和 UDP 连接通过 UFW 防火墙。为此,您可以使用以下命令:

例如,允许 3000 和 4000 之间的端口范围:

# sudo ufw allow 3000:4000/tcp
# sudo ufw allow 3000:4000/udp

允许通过 UFW 提供服务

UFW 可以强制执行一些网络服务。例如,HTTP 要求端口 80 可用。为此,您可以使用以下命令:

sudo ufw allow http

允许来自 UFW 防火墙的 IP 地址的所有连接

如果要允许来自 IP 地址的所有连接,可以使用以下命令:

sudo ufw allow from your-desired-ip

此外,还可以允许从 IP 地址到特定 TCP 端口的所有连接。为此,您可以使用以下命令:

sudo ufw allow from desired-ip-address to any port port-number proto tcp

允许在特定接口上与UFW防火墙进行连接

此时,您可以允许接口的连接。例如,使用以下命令允许将 wg0 连接到端口 22:

sudo ufw allow in on wg0 to any port 22

您可以使用以下命令允许从特定 IP 地址连接接口上的 TCP 端口:

sudo ufw allow in on interface-name from ip-address to any port port-number proto tcp

此外,您可以在上述命令中使用子网而不是单个 IP 地址:

sudo ufw allow in on interface-name from subnet to any port port-number proto tcp

第 5 步 – 通过 UFW 防火墙拒绝传入连接和端口

如果要关闭端口或 IP 地址,可以使用 ufw deny 命令。例如,使用以下命令关闭端口 25 TCP:

sudo ufw deny 25/tcp

您可以拒绝来自特定 IP 地址的所有连接,为此,您可以使用以下命令:

sudo ufw deny from ip-address

此外,您可以使用以下命令拒绝对特定端口上的 IP 地址的访问:

sudo ufw deny from ip-address to any port port-number proto tcp

第 6 步 – 删除 已配置的UFW 防火墙规则

要使用 UFW 删除防火墙规则,可以使用编号选项。这将列出您的防火墙规则,您可以使用规则编号轻松删除它们。为此,请运行以下命令:

sudo ufw status numbered
Example Output
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] OpenSSH                    ALLOW IN    Anywhere
[ 3] 80/tcp                     ALLOW IN    Anywhere
[ 4] 1194/udp                   ALLOW IN    Anywhere
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] OpenSSH (v6)               ALLOW IN    Anywhere (v6)
[ 7] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 8] 1194/udp (v6)              ALLOW IN    Anywhere (v6)

例如,我们要删除规则编号 8,为此,请运行以下命令:

sudo ufw delete 8
Output
Deleting:
 allow 1194/udp
Proceed with operation (y|n)? y
Rule deleted (v6)

如果检查 UFW 状态,则必须删除该规则。

sudo ufw status numbered

第 7 步 – 配置 UFW 防火墙的命令

在这一点上,我们想向您展示一些重要的 UFW 命令。

要重置UFW防火墙,您可以运行以下命令:

sudo ufw reset

每次对 UFW 防火墙进行更改时,都需要重新加载它以应用更改。为此,您可以使用以下命令:

sudo ufw reload

默认情况下,所有 UFW 条目都记录到 /var/log/ufw.log 文件中。您可以使用以下命令查看此文件:

# sudo more /var/log/ufw.log
# sudo tail -f /var/log/ufw.log

然后,您可以使用以下命令来显示侦听规则:

sudo ufw show listening
Example Output
tcp:
  22 * (sshd)
   [ 1] allow 22/tcp
   [ 2] allow OpenSSH

tcp6:
  22 * (sshd)
   [ 5] allow 22/tcp
   [ 6] allow OpenSSH

此外,您可以使用以下命令列出添加的规则:

sudo ufw show added
Example Output
Added user rules (see 'ufw status' for running firewall):
ufw allow 22/tcp
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 1194/udp

第 8 步 – 使用 UFW 防火墙配置 IP 伪装

IP 伪装是一台计算机充当网络的 IP 网关的过程。

要使用 UFW 启用 IP 伪装,请按照以下步骤操作:

  • 首先,使用您喜欢的文本编辑器打开以下文件,这里我们使用 vi 编辑器
sudo vi /etc/default/ufw

在文件中,更改以下行,如下所示:

DEFAULT_FORWARD_POLICY="ACCEPT"

完成后,保存并关闭文件。

  • 然后,打开以下文件:
sudo vi /etc/ufw/sysctl.conf

通过删除行首的“#”来取消注释下面的行:

net.ipv4.ip_forward=1

完成后,保存并关闭文件。

  • 使用以下命令重新加载设置:
# sudo sysctl -p
# sudo ufw reload
  • 接下来,添加内部网络中的计算机可以作为网关连接到外部网络或 Internet 的规则。

打开以下文件:

sudo vi /etc/ufw/before.rules

在文件末尾的 COMMIT 行之前添加以下行:

# NAT
*nat
-F
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/24 -o wg0 -j MASQUERADE

COMMIT

完成后,保存并关闭文件。

  • 最后,添加 ufw 路由以允许流量。例如:
sudo ufw route allow in on eth0 out on wg0 from 10.0.0.0/24

重新加载防火墙以应用更改:

sudo ufw reload