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