UFW:仅允许来自特定 IP 的应用程序/配置文件

rem*_*emy 11 ufw

我想限制对 Dovecot 等特定源 IP 的外部访问。允许应用程序配置文件非常有效,但连接的来源永远不受限制(“来自:任何地方”):

$ sudo ufw status

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx Full                 ALLOW       Anywhere                  
Postfix                    ALLOW       Anywhere                  
Dovecot IMAP               ALLOW       Anywhere      
Run Code Online (Sandbox Code Playgroud)

但是如何将 Dovecot IMAP 限制为特定源 IP?

我试过:

$ sudo ufw allow "Dovecot IMAP" from 1.1.1.1
ERROR: Wrong number of arguments
Run Code Online (Sandbox Code Playgroud)

所以这似乎不起作用......

要求 Ubuntu 20.04 LTS,ufw 0.36

Boc*_*tur 12

简短的回答:

sudo ufw allow from <IP adress>/<subnet mask> to any app <profile name>
Run Code Online (Sandbox Code Playgroud)

请记住在您的情况下引用“Dovecot IMAP”。

长答案:

我尝试过: $ sudo ufw allowed "Dovecot IMAP" from 1.1.1.1

虽然这将是最直观的命令,但语法有点棘手。

我不知道Dovecot IMAP是什么,所以我以OpenVPN为例。


我们希望当应用程序配置文件来自某个 IP/子网时才允许通过 ufw。

考虑我们在 /etc/ufw/applications.d/ 中有以下名为openvpn的ufw 应用程序配置文件(配置文件文件名在这里很重要):

[OpenVPN]
title=OpenVPN server
description=This rule allows connections to VPN server at <servername>.
ports=8880/udp
Run Code Online (Sandbox Code Playgroud)

注意:我们在这里为 OpenVPN 使用自定义端口。

现在将规则添加到 ufw:

 sudo ufw allow from 10.0.0.0/24 to any app openvpn
Run Code Online (Sandbox Code Playgroud)

这将为来自 10.0.0.0/24 的传入连接打开/etc/ufw/applications.d/openvpn中指定的端口

并检查:

sudo ufw status verbose
Run Code Online (Sandbox Code Playgroud)

如果它有效,你应该得到如下输出:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
8880/udp (OpenVPN)         ALLOW IN    10.0.0.0/24
Run Code Online (Sandbox Code Playgroud)

请小心配置文件名和服务名称。

sudo ufw allow from 10.0.0.0/24 proto udp to any port openvpn
Run Code Online (Sandbox Code Playgroud)

这是一个非常相似的语法,也是正确的。但它适用于 /etc/services 中的服务端口配置,这可能不是您想要允许的端口(例如我们将 OpenVPN 端口更改为 8880)。在这种情况下,我们在 /etc/services 中仍然有以下内容:

openvpn         1194/tcp
openvpn         1194/udp
Run Code Online (Sandbox Code Playgroud)

除非我们另有说明,否则Ufw 将openvpn视为服务。

任何端口 openvpn (<- 服务)

任何应用程序 openvpn(<- 应用程序配置文件)

所以发出sudo ufw allow from 10.0.0.0/24 proto udp to any port openvpn结果是:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
1194/udp                   ALLOW IN    10.0.0.0/24
Run Code Online (Sandbox Code Playgroud)

这样我们就有效地为 OpenVPN 打开了一个端口,但不是我们在 /etc/ufw/applications.d/openvpn 应用程序配置文件中指定的端口。

从未尝试过,但如果您更改 /etc/services 中的端口,应该可以工作(冒着破坏其他东西的风险)。

您可以查看此 Ubuntu 联机帮助页以获取有关 ufw 命令的详细信息。

希望能帮助到你。